2

我刚刚完成将 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”命令。这似乎是渐进式的(它只会获取最新的行结束修复提交),但又一次 - 它创建了一个提交。我想知道我是否可以解决这个问题。

4

1 回答 1

1

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

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com
于 2009-10-16T13:18:23.627 回答