6

我最近将一个存储库从 svn 迁移到了 git。当我查看日志时,来自 SVN 的所有提交都没有正确格式化为 50/72 格式。有没有一种方法可以让我浏览每条提交消息并对其进行编辑以使其符合 git 格式?

4

3 回答 3

8

你在评论中说:

该存储库是在一周前迁移的,并且已经在 Git 中进行了提交。

因此,最好的选择是简单地接受它并从现在开始继续发出正确的提交消息。

所有会更改旧提交中的提交消息的方法都会更改提交并创建具有不同 ID 的全新对象。因此,已经在使用它的每个人的存储库都会损坏,需要他们手动重置到存储库的新的重写状态。

对于从旧系统迁移而来的带有不完美提交消息的微不足道的提交问题,这只会导致更多的工作(和混乱!)。我认为拥有一些从前几天不完全符合当前标准的旧历史是完全可以的。如果您以后决定更改代码格式规则,您也不会重写所有提交。

于 2013-06-07T17:24:00.997 回答
2

你需要git filter-branch. 它的手册页非常清晰。

使用--msg-filter期望 shell 命令的选项,该命令将接收原始消息stdin并将修改后的消息输出到stdout. 创建将修复您的消息格式的脚本是一个单独的问题 =)。

如果您要手动修复它们,那么只需执行git rebase -i --root,将操作设置为reword。这将遍历整个提交历史,为每个提交打开您的文本编辑器并让您更改提交消息。

于 2013-06-07T16:47:21.593 回答
1

一种选择是在导入 git 之前在 svn 中编辑您的提交。使用svnadmin dumpgo 生成存储库的人工可编辑版本,在那里编辑提交消息(如果是我,我会编写一个 Python 脚本来执行此操作),然后重建存储库svnadmin load

于 2013-06-07T16:30:32.040 回答