如何解决“文件未找到”上git svn dcommit?
我试图做git svn dcommit
,但是,一个目录继续在我失败,因此停止我的提交,并继续得到这个错误:
文件系统没有项目:找不到文件:/ usr / local / git / libexec / git-core / git-svn第572行中的文件未找到:事务'43999-6',路径'/ path / to / folder'
我试着重新加入文件夹,但我仍然得到这个错误。 我可以从树中删除一个提交来绕过这个吗? 不知道这里还有什么要做。
编辑
以下的一些问题并没有完全回答我的问题,但他们似乎是在正确的方向:
最后一个问题似乎是我想要的东西,但我的回购规模(最后一次,把我身边的整体工作一天签出整个事情),和工作量少我会通过只是做了已经失去了hard
重置(最终似乎做了诡计),我去了hard
重置选项。
svn重置 - 哈德没有为我工作
原因在于,当对svn执行dcommit时,似乎删除文件的提交似乎同时在git和svn中完成,但链接丢失。
对我而言,解决方案是将主设备重置为提交之前的提交,然后将所有成功提交合并回主设备(除故障设备外),然后重新删除文件。 可能会有更优雅的解决方案...
旁注:git svn确实可以正确地重命名/移动文件。 它(无论是tortoisegit + mysgit还是jgit / egit)都会自动进行;)
我不认为git-svn实际上支持重命名文件。 每次我尝试重命名某个东西时,都会收到此错误。 我总是最终不得不用svn重命名,然后用git-svn重新绑定。
更新
这很可能是由于git-svn不能很好地与URL中的空格配合使用。 我经常需要重命名项目路径才能让它们使用git-svn。 当然,对于实际上有其他人正在为他们工作的项目,这不是一个可接受的解决方案。 对于那些我只需要使用svn来移动文件。 这是一个巨大的麻烦。
我能够通过修补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中的空格编码正确。
它似乎适用于我,但尚未经过彻底测试。
链接地址: http://www.djcxy.com/p/49903.html