我刚刚使用
将Subversion存储库转换为gitgit 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'命令。这似乎是递增的(它只会获取最新的行结束修复提交)但是再次 - 它创建了一个提交。我想知道我是否可以解决这个问题。
答案 0 :(得分:1)
事实证明,最简单的方法是修复Subversion中的错误文件,然后使用
再次克隆git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com