一个大的Checkin还是几个小的?

9
昨天当我查看我们内部工具的最新版本时,发现有30多个新版本。这让我很好奇,因为我认为终于有人修复了那些令人烦恼的错误并添加了我长期等待的功能...你猜怎么着?这一切都没有发生,有人只是认为更新一些标题和微调两三个功能会很不错。每个更改都分别提交。太好了。
这引起了我们团队的讨论 - 这应该被认为是可以接受的,还是应该禁止这种“滥用”?可以说,这确实可以合并为一到两个提交,但30个似乎太多了。如何处理这种情况 - 什么是最佳实践?

这有什么“滥用”的问题吗?您似乎也混淆了“版本”和“修订”的概念,而它们并不需要混淆。 - msw
1
如果每个人都有阅读每个提交日志的习惯,这种做法确实会从团队中花费很多时间。无论是习惯还是做法都是错误的。 - Konerak
@msw:“滥用”是每个提交都有相同的消息。忘了提到这一点。但你说得对,版本控制系统已经被设计用来跟踪版本,所以对我们来说,提交的数量可能不那么重要。 - PeterK
同意,30个不同的提交,但使用相同的消息代表着不考虑和粗心大意;它们不可能都表示同样的意思。我建议公开示众 ;) - msw
是的,相同的提交消息只是草率的。 我的一个员工输入“更新网站”几天之后我才注意到他这样做。 真是太愚蠢了。 - Rimian
4个回答

6

每当您进行更改并准备进行下一步操作时,都应该进行提交。

不应提交任何停止项目构建的内容。

您应填写提交消息,以便人们知道所做的更改。

对我来说,这就足够了。除非我在提交消息中看到它,否则我不会认为某事已完成...


2
传统上,戒律难道不是以“你应当…”开头的吗?* SCNR * +1 - sum1stolemyname
@Konerak: RFC(请求评论)传统上不是应该以“你应该...”(http://tools.ietf.org/html/rfc2119)开头吗? :p - kennytm

4
一般来说,我认为一个提交应该与一个逻辑任务相关联,例如修复错误#103或添加新的打印功能。这可以是一个文件或多个文件,这样您就可以看到针对特定任务所做的所有更改。如果需要,回滚更改也更容易。
如果每个文件逐个检入,那么很难看到特定更新/任务所做的更改。
此外,如果在一个提交中完成了多个任务,则很难看出哪些更改属于哪个任务。

没错,我认为提交应该反映出逻辑上的更改(错误修复、功能、重构等),而不是与文件或函数有关的物理更改。 - PeterK
改动需要两周的工作时间。你当然不应该只在两周后才进行检查,而是每当有任何不会导致程序崩溃的变更时都应该进行检查。 - Johann Strydom
@Johann Strydom:如果有人要进行大的更改,应该将其分成几个较小的更改。无论如何,我仍然认为可以通过提交消息以一种让每个人都能理解正在做什么和为什么的方式来完成这项工作。 - PeterK
@Johann:是的,你需要尽可能经常地签入代码,但一个2周的任务有多个小任务组成,你可以在完成逻辑上的小任务后进行签入。只要你完成了一部分工作并将所有更改内容与签入一起提交即可。这样做可以更容易地查看代码库中正在发生的变化。我经常阅读我的团队成员所做的签入注释,以了解正在发生的变化。 - Neal Donnan

2

我不会关心提交次数,因为每个提交都保持了项目的一致性(构建仍将成功)。这是一些内部计数,不应该困扰你。如果你想在这里做出改变,最好告诉人们使用一些结构化的提交消息(比如 "[bugfix]..."、"[feature]..."、"[minorfix]")。

顺便说一句,如果你想知道是否修复了错误或添加了功能,使用缺陷跟踪系统比在类似 SVN 的工具中检查提交要好得多。


1

对抗代码熵是一项持续的团队合作。鼓励人们在自己的路上修复“破窗户”,而不是反感微小的提交。源代码库不适合用于跟踪bugfixes,这就是bug跟踪器的用途-因此,在浏览代码库而不是bug库时定位修复的不便似乎对我来说微不足道。

我在一个规模适中的团队中工作,负责一个大型代码库(~1M LOC)已有20年历史。很多代码是一堆烂摊子——腐败的分支逻辑,过时的API,命名约定,甚至随意缩进经常使其阅读起来很痛苦。我开始养成了小的“意外”可读性改进的习惯,试图对抗完全的代码腐败,并努力让队友采纳同样的习惯。

除非您的情况完全不同,否则我会尝试对任何此类举措持积极态度。否则(我对此非常熟悉),就是恐惧的停滞,这注定了任何代码的腐烂。


这不是要阻止人们做事,只是说如果有人修正了一些东西,很好的做法是把修改过的文件都提交到一个提交中,这样你可以看到所有被改变的东西。这个提交可能只包含在一个文件里改变了一行:“修复了对话框中的拼写错误”,只花了5分钟。当我更新代码时,我通常会查看已经提交的更改,以跟上代码中正在发生的事情。看到每个文件都被单独检入,只带着“做了一些东西”的注释并没有增加太多价值。 - Neal Donnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接