我一直保持混帐镜的该项目的Watir.几周前的某个时候,我们有人准备提交他们的第一个基于git的补丁.不幸的是,由于项目的多平台性质,我们遇到了关于线路结束(CRLF与LF等)的一些问题.
我尽我所能设置autocrlf选项('输入'),然后做一些--hard重置.但是,几天后,每日更新(git svn rebase)会出现此错误:
Incomplete data: Delta source ended unexpectedly
我已经尝试使用谷歌搜索该怎么做,但即使删除.git/config中的autocrlf设置也无济于事.我担心工作副本是腐败的,但我希望它不是不可恢复的.
显然,一个可能的行动方案是从svn重新导入并启动一个新的镜像,但我希望我们不必这样做,因为当前的watir-mirror已经分叉了,人们开发了新的代码在他们的叉子里.
在此先感谢您的帮助.
我在尝试从brlcad svn存储库创建git存储库时遇到了同样的问题.我通过这样做解决了这个问题git svn reset --r XXXXX
,我将XXXXX设置为最初产生错误的版本之前的大约50个版本.
退回单个修订版并未成功解决错误.作为整个过程的一部分,我从git收到有关未定义HEAD的错误.为了解决这个问题,我做了一个git svn find-rev XXXXX
确定对应于我想要的修订版的哈希,然后是git checkout.在此之后,关于HEAD的错误消失了并且git svn reset -r XXXXX
工作了.
根据个人经验,当从具有相同参数的svn存储库进行克隆或获取时,git-svn始终生成完全相同的提交(尝试它:创建虚拟存储库,使用git-svn克隆它,再做一些提交,再次克隆它,并获取第一个副本;结果提交应该具有完全相同的哈希).
这给你一个有趣的选择:你可以用相同的参数开始一个单独的新镜像,并比较两者以查看它们发散的位置(或者它们根本不同;确保比较哈希,因为它们是重要的).如果它们是相同的(或者你决定它们发散后的提交无关紧要),你可以使用新鲜的镜像而不会破坏分支(如果你决定忽略一些不同的提交,则可以减少它们的数量).