提交信息的格式化

6

我最近将一个仓库从SVN迁移到了Git。当我查看提交历史记录时,所有来自SVN的提交信息都没有按照50/72格式正确格式化。是否有一种方法可以遍历每个提交信息并将其编辑以符合Git格式?


8
不用担心,继续按照规范撰写新的提交信息。源代码控制应该支持你的工作流程,而不是让它更加困难。是的,这些提交信息格式不正确,但这真的是一个很大的问题吗? - Abizern
4
仅仅有“提交信息”,你就领先于其他人了。很常见的情况是只看到一次巨大的提交,并带有“从svn迁移”的信息。 - gcbenison
2
对于那些不知道“50/72格式”是什么的人,请参考此链接:https://dev59.com/03E95IYBdhLWcg3wft5w - alroc
3个回答

8

您在评论中提到:

仓库已经在一周前迁移,现在有Git提交。

因此,最好的选择是接受事实并从现在开始制作正确的提交信息。

所有可以更改旧提交消息的方法都将更改提交,并创建具有不同ID的全新对象。因此,所有已经使用它工作的人的存储库会中断,要求他们手动重置为存储库的新的、重写后的状态。

这只会导致比起那些以前存在但不完美适应当前标准的提交消息做出调整需要更多的工作(和困惑)。如果以后决定更改代码格式规则,您也不会重写所有提交记录。


2
您需要使用git filter-branch。它的手册非常清晰。
使用--msg-filter选项,它期望一个将在stdin上接收原始消息并应输出修改后的消息到stdout的shell命令。创建一个修复消息格式的脚本是一个单独的问题 =)。
如果您要手动修复它们,那么只需执行git rebase -i --root,将操作设置为reword。这将遍历整个提交历史记录,为每个提交打开您的文本编辑器,让您更改提交消息。

哎呀,早该想到这个了。这就是正确的做法。 - Edward Falk

1

一种选择是在导入到git之前编辑svn中的提交。使用svnadmin dump生成可供人类编辑的版本库,编辑提交消息(如果是我,我会编写一个Python脚本来完成此操作),然后使用svnadmin load重新构建版本库。


代码库已经在一周前迁移完成,并且已经有了在Git中提交的提交记录。我是否需要重新迁移代码库,然后以某种方式合并它们? - EnactSchmenact
Subversion的dump文件不是“可编辑的”。每个版本都有一个校验和(如果我没记错的话),如果你尝试编辑原始文件,最终会破坏文件。svnadmin setlog是更改存储库中日志消息的适当工具(无需dump文件)。 - alroc
@alroc 有一个名为svndumptool的Python工具可帮助编辑转储。我曾经有一个相关问题(https://dev59.com/BlHTa4cB1Zd3GeqPNwBN),并编写了一个工具来帮助使用它。如果你遇到需要编辑svndumps的情况... - poke

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