从 SVN 迁移到 git 后如何修复行结束问题?

2023-12-31

我刚刚完成将 Subversion 存储库转换为 git 使用

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com

在这样做时,我将 git 标志“core.autocrlf”设置为“true”——以防万一。

良久之后,命令结束。我清理了生成的 git 存储库(删除不需要的分支、创建标签等),现在一切看起来都非常好并且运行良好。该存储库托管在 Linux 机器上,将其克隆到其他 Linux 机器上效果非常好。

但是,我注意到一个问题:将存储库克隆到Windows框中,切换分支时某些文件似乎被修改。例如,我这样做:

git clone svn://our.git.server/foo
git status                           # Everything is clean
git checkout -t origin/maintenance   # Switch to maintenance branch
git status                           # Everything is clean
git checkout master                  # Back to master branch
git status                           # A few files are modified!

在执行“git diff”时,我注意到修改后的文件似乎除了行结尾之外没有任何不同。在对此进行一些研究时,我们注意到这些文件在 Subversion 中意外地使用 CR-LF 行结尾(而不是 LF 行结尾)签入,并且此错误已转换到我们的 git 存储库中。

有没有什么方法可以在我们的存储库中解决这个问题(到目前为止它还没有经常克隆,所以重写一些历史记录就可以了)而不需要进行“清理提交”等操作?也许我们可以以某种方式默默地重写受影响的对象?

或者,我们可以在 Subversion 中修复此问题 - 然后再次发出上面的“git svn clone”命令。这似乎是增量工作的(它只会选取最后一行结束修复提交),但同样 - 它会创建一个提交。我想知道我是否可以解决这个问题。


事实证明,最简单的方法是在 Subversion 中修复有问题的文件,然后使用再次克隆

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 SVN 迁移到 git 后如何修复行结束问题? 的相关文章

随机推荐