我正在尝试git svn dcommit
,但是,一个目录继续失败,因此停止我的提交并继续收到此错误:
Filesystem没有项目:找不到文件:事务'43999-6',路径'/ path / to / folder'在/ usr / local / git / libexec / git-core / git-svn第572行
我尝试重新添加该文件夹,但我继续收到该错误。我可以从树中删除提交以绕过它吗?不知道还有什么可以做的。
修改
以下某些内容并未完全回答我的问题,但它们似乎正朝着正确的方向发展:
最后一个问题似乎是我想要的,但是我的回购的大小(上一次,带我整个工作日来检查整个事情),以及我将失去的少量工作执行hard
重置(最终似乎可以解决问题),我选择hard
重置选项。
答案 0 :(得分:1)
我认为git-svn实际上不支持重命名文件。每当我尝试重命名时,我都会收到此错误。我总是不得不用svn重命名它,然后用git-svn重新命名。
<强>更新强>
这可能是因为git-svn与URL中的空格不能很好地协作。我经常需要重命名项目路径才能使它们与git-svn一起使用。当然,对于实际上有其他人工作的项目来说,这不是一个可接受的解决方案。对于那些我只需要使用svn来移动文件。这是一个巨大的麻烦。
答案 1 :(得分:1)
svn reset --hard对我不起作用
这样做的原因是,在对svn进行dcommit时,似乎删除文件的提交似乎同时在git和svn中完成,但链接丢失了。
对我有用的解决方案是在问题出现之前将master重置为提交,然后将所有过度提交合并回master(除了错误的提交),然后重做文件删除。 可能会有一个更优雅的解决方案...
旁注: git svn DOES svn正确重命名/移动文件。 它(tortoisegit + mysgit或jgit / egit)一直自动执行;)
答案 2 :(得分:1)
通过修补git-svn,我能够解决git svn不能用于存储空间的存储库的问题。
我将url_path
功能更新为:
sub url_path {
my ($self, $path) = @_;
my $url = $self->{url} . '/' . $self->repo_path($path);
if ($self->{url} =~ m#^https?://#) {
$url =~ s!([^~a-zA-Z0-9_./-])!uc sprintf("%%%02x",ord($1))!eg;
$url =~ s!^(https?)%3A//!$1://!;
}
$url
}
这可确保正确编码url中的空格。
它似乎对我有用,但尚未经过彻底测试。
答案 3 :(得分:1)
答案 4 :(得分:0)
我知道这是一个老问题,但我最近遇到了这个问题,并希望分享我如何解决问题。不可否认,这不是一个很好的解决方案,但它允许我完成我的提交。我做了以下事情:
这意味着我有额外的2个小提交,一个要添加,然后另一个删除有问题的文件夹/文件但在此之后一切都按预期工作了。我知道这不是一个很好的解决方案,它没有解决问题的根源,但至少它允许我提交我的代码。希望这可以帮助其他人在这种情况下需要快速解决。