我正在 subversion 存储库中开展一个项目,该项目具有严格的 checkin 政策,其中包括:对主干的每次提交都必须由另一位开发人员审查,并且必须在提交消息中提及。
在使用 git-svn 时,我正在做许多未经审查的增量 git checkin 。他们的 git 提交消息反射(reflect)了这一点。
使用 git-svn 但要遵守 svn 存储库规则的最佳方式是什么?我应该将所有提交压缩到一个 svn 提交中吗?我可以用审阅者信息重写每个修订版的提交消息吗?我可以“手动”将每个单独的更改移动到 git master 分支并在执行 git-svn dcommit 之前修改每个更改的提交消息吗?
最佳答案
我在 git 上的一个分支上工作,然后 checkout master,git svn rebase
最后将该分支 merge 到 master 中。
此时,git svn dcommit
会将所有临时提交与它们的原始消息一次一个地放入 svn 中——这不是我们想要的!但是,如果我使用 git commit --amend
将 merge 的提交消息从标准 merge 消息更改为符合我们的 svn 提交策略的内容,dcommit 会将它们全部 merge 为一个新消息.赢了。
我发现如果 master 在分支的生命周期内没有改变,这似乎不起作用——提交只是快速转发,没有“merge 分支”消息——所以最好添加--no-ff
标记为 git merge
。
总结:
git checkout branch
<do work>
git checkout master
git svn rebase
git merge --no-ff branch
git commit --amend
<policy-compliant commit message>
git svn dcommit
关于svn - 在执行 git-svn dcommit 之前压缩或编辑一些提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170221/