在 Windows 上,Git SVN 合并存在问题

4
我有一个关于git的问题。
基本上,我的情况是这样的。我通过git访问svn仓库。到目前为止,在Python文件上一切都运行良好。
但是最近我也在仓库中添加了一些pyd、dll和lib文件。第一次更新很顺利。但是自从那时以来,这些文件已经被修改过,因此我无法进行更新。这些文件是从Windows计算机上使用TortoiseSvn添加到svn仓库的。
如果我在Linux上执行git svn rebase,则一切正常。
如果我在Windows上使用msysgit(还有tortoisegit)执行git svn rebase,则会出现以下错误:fatal: write error: Invalid argument 如果我在Windows上使用cygwin执行git svn rebase,则会出现以下错误:didn't find newline after blob at /usr/lib/perl5/vendor_perl/5.10/Git.pm line 916 我尝试了几种方法(autocrlf true/false,safecrlf true/false),添加了.gitattributes文件,并加入以下行*.* -crlf -diff -merge,但仍然没有解决问题。
我有点困惑,希望能得到任何建议。
提前感谢您。

哦,我还尝试了git svn fetch -rHEAD,但问题仍然存在。 - darkpotpot
有比我更聪明的人会解决你的实际问题。但我可以问一下,这些生成的对象是由你的项目生成的,还是来自项目外部?我很好奇为什么你需要将生成的对象放在存储库中。 - Wayne Conrad
事实上,这些生成的对象是由其他人生成的。 简而言之,除了一个人之外,每个人都使用Python。这个人将我们的一些Python库重写为C++,以提高速度。因此,他是唯一一个向存储库添加生成的文件的人,我们不需要在每台计算机上重新编译C++库。 - darkpotpot
把源代码拉到代码库里,让生成的文件在需要时自动生成的机会有多大? - Wayne Conrad
我们不能这样做,因为一些艺术家正在使用存储库版本。相信我,你不想让一个艺术家自己生成文件 ;)。 - darkpotpot
2个回答

3
我在2010年9月29日尝试使用最新的版本Msysgit v1.7.2.3,在与往常一样的repo上做“git svn rebase”操作时出现了“fatal: write error: Invalid argument”的错误,之后同步又回到了最初的状态。我认为这是Msysgit的一个bug,与大(ish)型二进制文件和可用内存有关。我的系统是Win XP SP3,有4GB的内存和充足的硬盘空间。远程系统是CodePlex上的DotNetNuke SVN repo (https://dotnetnuke.svn.codeplex.com/svn)。
最初它卡在一个330KB的“CHM”文件上(第212个提交,r52261),即使禁用了Avast AV,Google Desktop等,并验证了没有其他进程锁定了repo文件夹,它仍然不断失败。重启电脑后(但打开Outlook,Dreamweaver等),它始终并且反复在一个约15.3MB的DLL文件上(第416个提交,同一版本)失败。
最后,在另一次重启电脑、关闭Avast、Carbonite和Google Desktop并运行其他程序之前,同步成功了。这似乎坚定了我的结论,提示它是一个可用内存问题,可能与大型二进制文件和版本中大量提交的存在有关。请注意,我还尝试过“git fsck”,“git svn reset xx”和调整“packSizeLimit”/“usedeltabaseoffset”配置变量,但都没有成功。

1

我发现在Windows上使用Git最好的策略是告诉它不要处理换行符。

我不知道这是否有助于您恢复当前的git存储库,但值得一试。

我设置了:

[core]
    autocrlf = false

感谢您的回答。我已经尝试了autocrlf和safecrlf,无论是true还是false都不起作用。 - darkpotpot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接