Question

I've been using git-svn for what feels like years now without any issues. My typical workflow is work, commit, ..., work, commit, rebase, dcommit

All of a sudden I started getting this error today:

$ 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

Just in case it's version related:

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

I do have one change in git stash, but that's never been a problem before. Could it be now?

Another thing that changed recently was that our Unfuddle repo (where the central SVN repo is hosted) recently ran out of space and we had to pay for a larger plan; but I was able to dcommit to it Friday afternoon, after increasing the plan size. I can't think of anything else that's changed.

I did find some other people on SO having issues with dcommit but nobody with this particular error message.

What should I do?

Was it helpful?

Solution

This had something to do with files with an at-sign (@) in the filename (as in icon@2x.png).

I thought it was a global git-svn error and attempted to reproduce it on another svn repo (also hosted by Unfuddle, same as the first), but didn't seem to have any problems.

Here's what I tried in order to reproduce the issue for my git-svn bug report:

(given an existing SVN repo that you've cloned with git-svn)

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

This did not reproduce the issue as I expected, so I have not submitted a bug report. The only difference I can think of between the two repos is that the one with which I attempted to reproduce the issue was using the standard svn layout of trunk/ branches/ tags/ and was cloned with git svn clone -s as a result, whereas the original repo with which I had the problem did not use this structure. I don't have a spare repo at the moment that does not use the standard structure to test with, so for now I'm punting.


However, here's how I worked around the issue:

Using a pure SVN client, checkout the repo and commit the offending files/changes there. In order to commit files with an @ in their filename, you have to append another @ after the file name:

$ svn ci -m"stupid at-sign" path/to/icon@2x.png@ path/to/icon-small@2x.png@ ...

Once that's done, go back to your git-svn clone and rebase again, attempt to dcommit again, and it should work (worked for me!)...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top