关于源代码管理的10个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于源代码管理的10个问题相关的知识,希望对你有一定的参考价值。

1、你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?

我们团队采用的是windows系统,在关于源代码和文件的处理问题上,考虑之后是选择了运用SourceTree这款软件,跟码云的云项目工程相连接。

技术分享图片

  在SourceTree中可以拉取代码时,会自动将冲突的代码部分进行注释,每次完成一部分代码都可以直接提交,不会造成文件缺失或者被覆盖这种情况,借此解决了文件的锁定问题。

2. 如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。

同样在SourceTree上,可以清晰的看到每一次提交即进行代码更新的情况,在提交时还可以说明提交的说明,能更清楚地了解代码的情况。
另一方面,SourceTree也能看到每一部分代码是否进行了修改,也能了解代码的改动。

3. 如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?

像之前所说明的SourceTree在对代码进行更新时,会将旧的一部分进行注释。
在你嵌入修改后,可以清晰地看到之前的代码,有些时候出错也可以选择回滚,或者选择某些已经更新了的部分的文件进行嵌入。

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

简单来说,在SourceTree中,会自动读入你已经修改的文件,在其中选择想传输的文件,点击提交再点击推送,即可成功嵌入。

5. 你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。

有两种方式解决。
一是自己将这些文件或者是功能块注释,之后再修改bug。
二是先提交你现在这部分的代码,之后在回滚之前的版本,修改完bug后再重新拉取提交的那一版本中的文件。

6. 规范操作和自动化。你的团队规定开发者签入的时候要做这些事情:- 运行单元测试,相关的代码质量测试。- 代码复审 (要有别的员工的名字)- 和这次签入相关的issue 编号, 任务/task, 缺陷/bug 编号,等等, 以备查询。请问你的团队有这样的自动化工具让开发者方便地一次性填入所有信息然后提交么? (高级功能, 代码提交之后, 相关bug 的状态会改动为 “fixed”, 并且有链接指向这次签入。)

没有

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

这部分我们使用的是Spring MVC框架,并按照功能进行了分区处理。

8. 一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?

在SourceTree有显示代码是在你选择的任意一次提交之前修改的,或者是修改后提交的。
至于为了什么目的方面,则由提交的人自己注释。不过一般我们都是在完成一个功能后再提交的,会涉及到多个文件,单个文件的某一段代码时为了什么目的,这个则没办法知道。

9. 如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?代码每天都在变, 有时质量变好,有时变差,我们需要一个 Last Known Good (最后稳定的好版本) 版本,这样新员工就可以同步这个版本,我们如果需要发布,也是从这个版本开始。那么如何标记这个 Last Known Good 版本呢?

这个并没有考虑到,因为之前代码在本质是一步步完善过程中的,基本上每一次代码提交都会添加一小部分功能模块。
在稳定性上来说没有什么太大的体会,并没有出现很不稳定这种的版本。
就算出现了这种版本,一般也是代码处理上的错误,通常是不会选择提交,而是会改进后提交的。

10. 你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?在签入之前,程序员能否自动在自己的机器上运行自动测试,以保证本地修改不会影响整个软件的质量?在程序员提交签入之后,服务器上是否有自动测试程序, 完成编译,测试,如果成功,就签入,否则,就取消签入?团队是否配置了服务器,它自动同步所有文件,自动构建,自动运行相关的单元测试,碰到错误能自动发邮件给团队

源代码和测试这些代码的单元测试,以及其他测试脚本没有放在一起的,因为这样更方面进行处理。
至于测试的更新方面,会放到之后再进行更新,优先度来说没有那么高。
自动构建的任务则没有能部署。
提交之前会进行简单的测试,不会将每部分功能每个方法都充分测试。









以上是关于关于源代码管理的10个问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 片段和活动

C#程序员经常用到的10个实用代码片段 - 操作系统

高效Web开发的10个jQuery代码片段

C#程序员经常用到的10个实用代码片段

炫酷 CSS 背景效果的 10 个代码片段

关于代码片段的时间复杂度