【发布时间】:2010-12-07 08:10:44
【问题描述】:
我刚刚完成了将 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 行尾)签入,并且这个 bug 被转换到了我们的 git 存储库中。
有什么方法可以在我们的存储库中解决这个问题(到目前为止,它还没有被经常克隆,所以一些历史重写会很好)而不进行“清理提交”或类似操作?也许我们可以默默地重写受影响的对象?
或者,我们可以在 Subversion 中解决这个问题 - 然后再次发出上面的“git svn clone”命令。这似乎是渐进式的(它只会获取最新的行结束修复提交),但又一次 - 它创建了一个提交。我想知道我是否可以解决这个问题。
【问题讨论】:
-
我从来没有和
git svn合作过,但是看看这个问题:stackoverflow.com/questions/1575682/…
标签: svn git line line-endings