• 团队源代码管理


    (1)       你的团队的源代码控制在哪里?用的是什么系统?

    答:针对多人多任务的开发模式,我们团队从开发伊始就达成共识:源代码控制在Github上,使用与之相匹配的Git系统。

    (2)       一个代码文件被签出之后,另一个人可以签出这个文件,并修改么?有几种设计,各有什么优缺点?

    答:(a)可以。由于开发规模比较小,于是为了最大化效率,我们可以不对文件签入签出进行过多的限制。虽然对文件的签入签出加以限制,可以保证源代码修改的同步性,减少不必要的冲突和错误但是不加限制可以使项目并行进行,大大提高整个项目的效率。(b)不可以。在文件被签出的情况下,另一个人再签出这个文件会导致源代码修改时存在冲突和矛盾,合并这样的修改难度较高,因此,在文件被签出后加锁,能有效地避免这样的情况。但是这样的缺点是显而易见的,由于缺乏了并行性,项目开发的效率就被极大地降低了,极端情况下很有可能因为一个人的失误,导致全队项目的搁浅。

    (3)       如何看到这个文件和之前版本的差异?

    答:可以在Git中查看编辑记录。之前的版本没有考虑到信息查询时的权限,学生只能查老师的信息,而老师只能查学生的信息,在之前的版本中,我们的查询功能是所有人的所有信息都能被查到,我们就此基础上进行了版本修改,在新的版本中,我们增设了逻辑判断,判断用户是学生还是老师,如果是学生就只能查询老师信息,如果是老师那就只能查询学生信息,给用户使用的时候,增添了限制和安全性。

    (4)       如果某个文件在你签出之后已经被别人修改,那么你如何合并不同的修改(merge)?

    答:我会使用Git,使用git-merge命令将两个开发历史合并在一起。Git可以方便地对有简单不同的修改进行合并,但对于有逻辑冲突的部分将会给出conflict的提示,这时需要手工修改。针对文件的不同状态给出不同的颜色提示。使用分支,保持主分支的整洁。在分支进行提交,然后切到主分支更新(git pull —rebase),再合并分支、推送。这样的流程会避免交叉合并的情况出现(不会出现共同祖先节点为多个的情况)。

    (5)       你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性)

    答: 在Git中,所有在本地仓库中修改的文件都要统一经过commit为新的本地版本后,再push至远程分支。这保障了本地修改提交的原子性,同时git服务器远程提供的修改操作也具有原子性。这样就保障了整体修改的原子性。可以直接对工程文件进行整个的签入挂起的更改,或者在修改之前为将要修改的文件都上锁,防止其他DEV在签入的时候进行签出操作。

    (6)       你的PC 上有关于三个bug 的修改, 但是都没有完成,这时你要紧急修改第四个bug,如何把本地修改放一边,保证在干净的环境中修改第四个bug, 并签入修改?

    答: 使用branch解决任务切换问题。建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。

    (7)       如何给你的源代码建立分支?

    答:分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响,所以在同一个数据库里可以同时进行多个修改。分叉的分支可以合并。在数据库进行最初的提交后, Git会创建一个名为master的分支。因此之后的提交,在切换分支之前都会添加到master分支里。在Git中可以自由地建立分支。但是,要先确定分支  的运用规则才可以有效地利用分支。

    首先进入到要创建代码仓库的项目的目录下。

     1 $ cd d: 

     1 $ cd 2018-20192)/Java/Test5/Prototype 

     

    使用 git branch命令查看本地分支

     1 $ git branch 

    查看远程分支

     1 git branch -r 

    查看所有分支

     1 git branch -a 

    本地创建新分支

     1 git branch gh-dev 

    切换到新分支

      1 $ git checkout gh-dev 

    创建并切换到新分支

      1 $ git checkout -b gk-dev 

    将新分支推送到github

      1 $ git push origin gh-dev 

    注意此时弹窗需要登录github

     1 $ git push origin gK-dev 

     

    删除本地分支

     1 $ git branch -d gh-dev 

     1 $ git branch -d gk-dev 

    注意不能删除当前分支,要先切换再删除

     

    删除远程分支

      1 git push origin :gh-dev 

     1 git push origin :gk-dev 

    (8)       一个源文件,如何知道它的每一行都是什么时候签入的?

    答:只要运行git blame [filename]命令,就能查看文件的每个部分是谁修改的,得到整个文件的每一行的详细修改信息:包括SHA串,日期和作者。

    (9)       如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?

    答:我们几个版本的源代码管理都没有用到标签。可能是该项目规模还比较小,用标签的收益不大。标签其实就是为整个项目或者某一个.java文件制定一个索引,在版本的推移中,如若发现新版本的各方面均不如之前的版本,可以通过标签查到到之前的版本或者某一文件。从标签的试用上来看,标签在大型项目中会十分灵活。能够快速定位到某一个变更集并对其进行操作。

    (10)   你的团队是否能部署自动构建的任务 (自动同步所有文件,自动构建,自动运行单元测试,碰到错误能自动发邮件给团队)

    答:测试目前的确是我们团队的一个短板,场景所提到的自动测试程序我们几乎没有。如今Beta的开发阶段已经过去,也仅是对成员做出测试数据记录以及测试日志的上传,测试强度依然欠缺。从现在到项目展示的这段时间,我们会尤其重视测试。如若时间条件允许,也会编一个自动测试程序进行各个变更集的编译测试。

    分工安排

    1759211 杨俣商 (1)(2);1759207 徐宇雯 (3)(6);1759208 杨雨婷 (4)(5);

    1759213 孙子璇 (7)(8);1759230 茂杭斌 (9)(10)

  • 相关阅读:
    编译原理实验2简化版的C语言文法 159
    大数据概述 159
    第三次实验有限自动机的构造与识别 159
    Vue非单文件组件
    vue生命周期
    css3boxsizing
    openCV学习笔记(2)__openCV简单的图片处理(雪花,减少颜色)
    openCV学习笔记(1)__openCV与vs2010环境设置
    CentOS防火墙配置
    CentOS 6初始化配置
  • 原文地址:https://www.cnblogs.com/cwqbs/p/10941094.html
Copyright © 2020-2023  润新知