2

有人签入了 20 个文件,作为他们正在进行的逻辑工作的一部分。

不幸的是,他们做了 20 次单独的提交。这让我变成了一只悲伤的熊猫

有没有办法从 repo 中清除这些提交,然后一次性重新提交它们?

或者,有没有办法将这些变更集捆绑在一起,以防止有人在中间的某个修订版中签出代码?

假设修订为 1001-1020。我想要阻止的是有人能够在不稳定的损坏修订版之一(即 1001-1019)上进行合并/分支/标记。

即使能够将这 19 个中间状态修订标记/标记为不可合并/不可分支也会有所帮助

4

2 回答 2

4

尽管我同意这是开发人员的一个坏主意,但 SVN 存储库中的错误修订(使构建失败、使单元测试失败等的修订)是常见的,也是意料之中的。这就是我们使用持续集成的原因。

我看不出任何开发人员会随机选择其中一个错误的修订版来启动分支的任何理由。它们肯定会从主干的头部分支(对于功能分支),或从标记的修订版(对于维护分支)分支。

如果你想确保只有好的修订进入 repo,你可能应该有两个 repo:一个用于实际开发,另一个聚合来自 dev repo 的多个修订,并且只有在验证后才提交更改。但我看不出有什么好的理由这样做。

于 2011-12-13T10:23:19.150 回答
2

Subversion 记录了一切,直到 1.8 版出现(也许),没有办法抹去过去。也就是说,除非您想要进行转储、过滤和加载以删除这些事务,然后手动将它们重做为单个事务。

没有真正的方法可以防止开发人员在中间分支,但是您可以更改svn:log修订属性(即提交消息)以包含不使用此修订作为分支点的语句(然后将它们指向好的修订)。这样,将警告正在寻找分支点的开发人员。

要更改修订属性,您需要启用pre-revprop-change挂钩以允许您更改svn:logrevprop,但这并不难。我通常设置它,所以提交的用户(svn:author)和管理员(你)无论如何都可以修改 svn:log 属性。这样,当有人告诉我他们在提交信息中犯了错误(错误的 Jira 票证等)时,我可以告诉他们自己更正并在我忙于玩 Angry Birds 时停止打扰我。

于 2011-12-13T16:37:48.600 回答