【问题标题】:Formatting commit messages格式化提交消息
【发布时间】:2013-06-07 16:20:26
【问题描述】:

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

【问题讨论】:

  • 别担心。继续前进并正确处理新的提交消息。源代码控制应该支持您的工作流程,而不是让它变得更难。是的,提交消息的格式不正确。但这真的是个大问题吗?
  • 只需拥有提交消息,您就处于领先地位。只看到一个带有“从 svn 迁移”的消息的巨型提交是很常见的

标签: git svn


【解决方案1】:

你在评论中说:

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

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

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

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

【讨论】:

    【解决方案2】:

    您需要git filter-branchman page 很清楚。

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

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

    【讨论】:

    • 是的;应该想到这一点。这就是这样做的方法。
    【解决方案3】:

    一种选择是在导入到 git 之前在 svn 中编辑您的提交。使用svnadmin dump去生成一个人工可编辑的版本库,在那里编辑提交信息(如果是我,我会写一个Python脚本来做这个),然后用svnadmin load重建这个版本库

    【讨论】:

    • 存储库是在一周前迁移的,并且已经在 Git 中进行了提交。我是否必须重新迁移存储库,然后以某种方式合并它们?
    • Subversion 转储文件不是“人工可编辑的”。每个修订版都有一个校验和 IIRC,如果您尝试编辑原始文件,您最终会破坏该文件。 svnadmin setlog 是用于更改存储库中的日志消息的合适工具(不需要转储文件)。
    • @alroc 有一个 Python 工具可以帮助编辑转储,称为 svndumptool。我对此有一个related question 并编写了一个工具来帮助使用它。万一你不得不编辑 svndumps……
    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2017-06-20
    • 2021-09-11
    相关资源
    最近更新 更多