我正在努力应对跟踪所有更改之间的冲突,以便我可以弄清楚我昨天在哪里破坏了代码,并且拥有一个可控制的(高开销)代码审查流程,可以保持理智。
我在一家非常传统的ClearCase商店工作。所有签到都需要代码审查,我缺乏创建私有分支的权限。为了满足对我所有日常工作的版本控制的原始冲动,我使用mercurial从明确的视图中这种唯一的作品
我寻求集体智慧,以便在与明显案例人员尽可能好地玩耍的同时,跟踪我的日常变化的最佳方式是什么。
答案 0 :(得分:3)
所有签到都需要代码审查,我没有权限创建私有分支。
我们也使用ClearCase并且有开发分支(不是每个开发人员的分支!,但是“ development effort ”的分支涉及到一个很少开发商)为了尽早检查。
但规则是:它必须编译并通过基本的单元测试。如果CI - 持续集成工具 - “变红”,那么开发工作团队中的所有人就会停止。并帮助解决这个问题
这样,我们提前提交并提前修复。
然后,合并分支有助于报告已通过更严格控制的代码(代码审查或某些高级测试)。
这是关于 merge workflow 的全部内容。
对于非常中间的提交,我在我的ClearCase视图中使用Git (ClearCase视图中的一个简单的“git init
”,你已经准备好了自己的Git工作区!)。
任何数量的私人分支都可以在这个工作区中生活,有助于私人实验
“git bundle
”帮助我将Git工作区的当前状态备份到工作站外的文件中。
如何处理从一个明确的案例视图移动到另一个案例?
这是合并工作流程的缺点:使用ClearCase,您必须设置与Streams(使用UCM)或分支(非UCM)一样多的视图。我们对合并及其解决方案使用动态视图,然后使用快照视图进行开发 由于我们对不同的流有不同的视图,因此我们可以轻松地将两种不同的开发工作与简单的WinMerge进行比较。
答案 1 :(得分:1)
您是否与您的同事谈过您的问题?他们应该面对同样的问题,也许会有一些好主意 我会尝试让你的老板获得创建分支机构的许可 - 或者至少要获得一个私人分支机构。但使用此分支并不会改变您当前的问题。当您转储4780行进行代码审查时,没有人关心它们来自何处 您应该尽早并经常尝试办理登机手续。如果你需要在私人分支机构进行试验 - 很好。但是一旦得到结果,你应该提交它并进行代码审查 使用mercurial听起来不像“官方方式” - 你的老板知道吗?它经常被备份吗?这就是为什么我会去私人分支机构。在遇到麻烦之前让你的工作流程正常化。
答案 2 :(得分:1)
尽早并经常提交。您的同事将会欣赏较小的代码审核,并且更改将更易于管理和合并。专注于咬掉小件作品,然后提交这些作品。
跟踪每日变化有什么问题?做一个clearcase差异会告诉你你改变了什么。
答案 3 :(得分:1)
我和tanascius和Stephen在一起。仅仅因为您使用mercurial跟踪个人更改并不意味着您不能提前提交给ClearCase进行审核。问题不是多变的,也不是ClearCase,它提交了4780行代码供有人审核。
我还在一家拥有严格审核政策和Perforce的商店工作。我使用git来跟踪当地的小变化,但是在变化变得很大之前我仍然会发送给我的同事来理解它。
尽早承诺并提交小事。
答案 4 :(得分:1)
我不熟悉ClearCase,因此我的答案范围只是 mercurial 。
我考虑你的以下问题:我在本地跟踪更改以便能够保存我的步骤,即使步骤不完整/已损坏,然后我提交整个图片以供审阅,但它通常会被提交为太大而且不容易审核。我是对的吗?
要解决此特定问题,请使用Mercurial Queues。这些队列允许您基本上编辑本地未刷新的提交,重新排序并将几个补丁折叠成一个/或将一个提交拆分成小的可读块。在阅读更多相关内容之前,我建议您如何使用它们:
fold
类似的补丁在一起。例如,如果你有连续的尝试n,n + 1和n + 2,其中n + 1部分撤消n,而n + 1是一个错误的oneliner ......好吧,只需将三个提交合并为一个有意义的提交“这个提交完全解决了问题#1212313这样做和那个“。