团队博客作业——团队源代码管理

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

首先,我们选择git管理代码;

我们需要进行待修复的问题进行评估,若是待修复的问题需要立即发布补丁,那么则需要对方直接签入修改文件,修改完成后,发布同时需要备份自己编写的文件,然后把对方的文件更新到本地,之后在本地将自己备份的文件和更新后的文档进行并入【merge】。

 

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

例如,签出文件后,此文件就加锁,别人无法签出;或者所有人都可以自由签出文件。

情况

情况描述

优点

缺点

①    

签出文件后,此文件就加锁,别人无法签出

可以保证每一个人获取的文件版本都是最新的,避免了修改冲突的产生。

花费时间较长

②    

任何人都可以自由签出

每个人都可以各自修改自己需要修改的模块。

在代码合并时需要进行人工合并;同时风险略高。

 

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

以github为例,进入项目后即可查看项目的编辑记录,如下图:

 

 

另外,很多开发工具本身也具备show history功能,

 在github上,在code页上,点击下图标志,进入commits查看记录

 

 

进入commits后,如下图

 

 

从上图中可以看到,commits中也记录了改动的原因,如删除、更新;对于bug问题,在issue窗口我们可以进一步了解,如下图:

 

在每一次提交时,我们都可以对提交的项目进行描述,方便之后查看。

 

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

Git可以方便的对不同的简单修改进行合并,同时,对于存在逻辑冲突的代码则会给出提示,提醒用户进行手动修改;

另外,Beyond Compare 4可以处理合并修改的问题

下载地址:http://www.scootersoftware.com/download.php

 

 

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

在签入前,一定要对比处理存在冲突的文件;在git中,所有本地仓库中的文件都要通过commit保证为最新本地版本,避免了上述情况的发生。

统一采用git将本地代码上传至github。在每一次签入代码之前都需要经过测试,测试无误后才会签入,这就在一定程度上保证了同一个功能的相关文件都被正确修改了,然后这时再一起签入。假如测试有遗漏,在之后的阶段还是可以查看到相应记录的,然后再进行相应修改。由于团队成员较少,可以通过彼此的交流避免此类问题,当我们需要进行一个功能的修改时,会在微信上说明。而在通过git push 将本地代码上传之前,均需要将本地的改变提交至本地仓库,commit操作会生成一个commit对象,所以Push时只是将这次commit对象提交至远程分支。而git会随时保证数据的完整性,一旦上传过程中出现问题(断网),会撤销掉之前的上传记录。

通过查看提交记录验证,文件是否同时提交成功,若无法同时成功提交,则使用git reset命令撤回提交记录。

 

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

创建新的分支,切换到该分支,修改bug后,提交该分支。通过git pull将远程分支代码拉到本地进行BUG修改,之后在同之前的分支进行合并,在通过git push上传至远程分支。

当把一个功能修改完成并测试完成后,上传至github并更新本地的备份文件。保证本地保存有一个最新的无bug的工程文件,这样既可以方便紧急进行修改,也能处理修改过程中发现这条路行不通,换个方式解决问题的情况。

 

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

使用git branch新建本地分支,切换分支后,push到远程仓库。建立分支利用git branch 分支名 操作,跳转到相应分支用git check out 操作,分支合并用git merge 操作,在确认了修改以后,进行git commit 操作提交。

(1)创建dev分支,然后切换到dev分支:

 

 (2)用git branch命令查看当前分支:

 

 (3)在dev分支上正常工作,比如对file.java做个修改:

 

dev分支的工作完成后,就可以使用git checkout master切换回master分支。

 以下是关于分支的命令:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

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

(1)在GitHub会自动记录每行代码的签入时间和整个签入时的加入的标注,因此通过查看记录就可以知道上述问题。

git blame [filename] -L 开始行号,结束行号。格式: commit ID | 代码提交作者 | 提交时间 | 代码位于文件中的行数 | 实际代码

 cd 到该文件所在目录,使用git log查看提交记录,然后可以使用git show 命令查看具体的修改详情了。代码:git show <git提交版本号> <文件名>

(2)采用在修改的代码后添加注释,说明是何时由哪个组员进行修改的。

 

以下是使用git log查看的命令:

1. git log 查看提交历史记录。

2. git log --oneline 或者 git log --pretty=oneline 以精简模式显示。

3. git log --graph 以图形模式显示。

4. git log --stat 显示文件更改列表。

5. git log --author= 'name' 显示某个作者的日志。

6. git log -p filepath 查看某个文件的详细修改。

7. git log -L start,end:filepath 查看某个文件某几行范围内的修改记录。

8. git log --stat commitId 或者 git show --stat commitId 查看某一次提交的文件修改列表。

 

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

在git 的时候,标签是用在有重大更新或者改动的时候,可以用版本号来标识,例如v1.0。当编写完最终版本后,可以在版本后的加入后缀-Last来标识。

命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

 

命令git tag -a <tagname> -m "..."可以指定标签信息;

 

命令git tag可以查看所有标签。

 

也可以用git show <tag name> 查看标签信息。

 

10、你的团队是否能部署自动构建的任务

(自动同步所有文件,自动构建,自动运行单元测试,碰到错误能自动发邮件给团队)

我们团队并没有构建自动测试脚本。组员会将自己的代码进行单元测试后将结果发在微信群中。团队的部分代码上传至GitHub的团队仓库中,遇到错误时多在微信群中讨论并解决问题。

posted @ 2019-05-26 20:34  Relll  阅读(345)  评论(0编辑  收藏  举报