尽管干净的rebase,git-svn仍无法回复svn repo

时间:2014-04-21 16:21:40

标签: git svn git-svn unfuddle

我一直在使用git-svn来感受几年没有任何问题。我的典型工作流程是work, commit, ..., work, commit, rebase, dcommit

突然间,我今天开始收到此错误:

$ git svn rebase
Current branch master is up to date. 

$ git svn dcommit
Assertion failed: (svn_uri_is_canonical(child_uri, NULL)), function uri_skip_ancestor, file /SourceCache/subversion/subversion-62/subversion/subversion/libsvn_subr/dirent_uri.c, line 1519.
error: git-svn died of signal 6

以防万一与版本相关:

$ git --version
git version 1.8.3.4 (Apple Git-47)

我确实在git stash中有一个变化,但这在以前从来都不是问题。现在可以吗?

最近发生的另一件事是我们的Unfuddle repo(托管中央SVN仓库)最近用完了空间,我们不得不支付更大的计划;但在增加计划规模后,我能够在星期五下午再次提出这个问题。我想不出有什么改变了。

我确实发现其他一些人在使用dcommit方面存在问题,但没有人发现此特定错误消息。

我该怎么办?

1 个答案:

答案 0 :(得分:4)

这与文件名中包含at符号(@)的文件有关(如icon@2x.png中所示)。

我认为这是一个全局git-svn错误并试图在另一个svn repo上重现它(也是由Unfuddle托管,与第一个相同),但似乎没有任何问题。

以下是为了重现git-svn错误报告的问题而尝试的内容:

(鉴于您已使用git-svn克隆的现有SVN回购)

$ touch icon@2x.png
$ git add icon@2x.png
$ git commit -m"testing"
$ git svn rebase
$ git svn dcommit

这确实重现了我预期的问题,所以我没有提交错误报告。我可以想到的两个回购之间的唯一区别是,我试图重现问题的那个是使用trunk/ branches/ tags/的标准svn布局,并用{克隆} {1}}结果,而我遇到问题的原始回购没有使用这种结构。我目前没有备用仓库,没有使用标准结构进行测试,所以现在我正在撑船。


然而,这是我如何解决这个问题:

使用纯SVN客户端,签出repo并在那里提交违规文件/更改。为了在文件名中提交带有@的文件,您必须在文件名后附加另一个@:

git svn clone -s

一旦完成,回到你的git-svn克隆并重新进行rebase,再次尝试dcommit,它应该工作(为我工作!)...