Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 格式化提交消息_Git_Svn - Fatal编程技术网

Git 格式化提交消息

Git 格式化提交消息,git,svn,Git,Svn,我最近将一个存储库从svn迁移到git。当我查看日志时,来自SVN的所有提交都没有正确格式化为50/72格式。是否有一种方法可以检查每个提交消息并对其进行编辑,使其符合git格式?一种方法是在导入git之前在svn中编辑您的提交。使用svnadmin dump生成一个可编辑版本的存储库,在那里编辑提交消息(如果是我,我会编写一个Python脚本来执行此操作),然后使用svnadmin load重新构建存储库。您需要git filter branch。这很清楚 使用--msg filter选项,该

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

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

重新构建存储库。您需要
git filter branch
。这很清楚

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

如果要手动修复它们,只需执行
git-rebase-i--root
,将action设置为
reword
。这将贯穿整个提交历史,为每次提交打开文本编辑器,并允许您更改提交消息。

您在评论中说:


该存储库已在一周前迁移,并且已经用Git对其进行了提交

因此,最好的选择是简单地接受它,并从现在起继续生成正确的提交消息

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


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

存储库在一周前已迁移,并且已经用Git对其进行了提交。我是否必须重新迁移repo,然后以某种方式合并它们?Subversion转储文件不是“可编辑的”。每个版本都有一个校验和IIRC,如果您试图编辑原始文件,最终会破坏该文件
svnadmin setlog
是用于更改存储库中日志消息的合适工具(无需转储文件)。@alroc有一个Python工具,名为svndumptool,用于帮助编辑转储。我对此有一个想法,并编写了一个工具来帮助利用它。万一你遇到编辑svndumps的麻烦…别担心。只需继续并正确处理新的提交消息。源代码管理应该支持您的工作流,而不是使其更难。是的,提交消息的格式不正确。但这真的是一个大问题吗?仅仅通过提交消息,你就走在了前面。很常见的情况是,只有一个巨大的提交消息“migratedfromsvn”是;应该想到这一点。这是做这件事的方法。