20

Whilst doing git svn clone -s https://svn.example.com/repo/ I received the following output:

r3073 = a6132f3a937b632015e66d694250da9f606b8333 (refs/remotes/trunk)
Found possible branch point: https://svn.example.com/repo/trunk => https://svn.example.com/repo/branches/v1.3, 3073
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
fatal: Not a valid object name refs/remotes/tags/Sync Controllers
cat-file commit refs/remotes/tags/Sync Controllers: command returned error: 128

Running git branch -a gives:

remotes/tags/Sync%20Controllers
remotes/tags/v1.1
remotes/trunk
remotes/v1.2

I think the problem is that "remotes/tags/Sync Controllers" != "remotes/tags/Sync%20Controllers".

2

5 Answers 5

34

The tag on SVN has a space in it, but the tag in git had this space converted to %20 (URL encoded). To solve it just manually add a new tag with the verbatim name:

cd .git/refs/remotes/tags/
mv Sync%20Controllers Sync\ Controllers

Then run the git svn clone command again.

(Normally you'd do this with git tag OLDTAG NEWTAG but git was not allowing me to define a tag with a space in. The tag files are simply text files containing the hash of the relevant commit.)

Sign up to request clarification or add additional context in comments.

9 Comments

I tried that solution however, I get the following error: fatal: Reference has invalid format: 'refs/remotes/tags/WITH SPACE'. How to solve that?
(I'm using git version 1.8.3.msysgit.0)
This worked for me with a tag with a ~ character in the file name as well. Thanks.
Probably the same but cd .git/refs/heads/ or cd .git/logs/refs/heads/ instead
upadating .git/packged-refs and replacing all the %20 with spaces fixed it for me... git 2.18.0
|
5

You may use git-svn server-side alternative, SubGit in order to avoid many of git-svn translation problems.

I'm a SubGit developer and could say that we worked a lot to resolve character translation issues like the one above; in this particular case tag would be translated to a refs/tags/Sync+Controllers tag.

Note also, that git-svn has translated Subversion tag as a branch instead of a tag.

2 Comments

Do I have to install SubGit on the server or it's not necessary? What if I don't have admin access to my svn repo?
With SubGit 2.0 you do not have to have an admin access to your repository. You would need to enable pre-revprop-change hook to get a full featured authors mapping, but chances are that it is already enabled. Check subgit.com/eap for more details.
5

I ran into this issue today, and considered this branch which contains a pace in it is not important, i just run

git branch -r -d partialPayment%202.4

And re-run git svn fetch It skipped current branch and continue grabbing the next one.

Comments

1

I'm using git 1.29.2 and getting the issue too. Additionlly it is running into a Windows Server 2016 and git is under cygwin.

Was checking into /GitMigration/.git/svn/refs/remotes/origin, and the folder is there with blank spaces not %20 so nothing to change on it.

However into the packed-refs the tag that is producing the problem does not appears, no name and no hash.

The problem should has another related issue with something else that produce the error, not just this.

Looking into the ./.git/config found a series of repetitions of the following lines:

branches = server/branches/*:refs/remotes/origin/*
tags = server/tags/*:refs/remotes/origin/tags/*

That are producing each time i did run the git-svn clone sentence. So i did remove those from the config file, save it and run again, but this time using git svn fetch, to prevent get again the lines duplicated, and voala !! Problem solved.

Comments

0

I believe the problem with spaces is fixed in Git >= 1.8.0 (See: #786942).

So you should upgrade it.

I've tested it and it seems to work in the recent version of git.

See GitHub Home page: https://github.com/git/git

4 Comments

I am using 1.8.5.2 and ran into this problem
And do you think it's related to the spaces or some special characters in your branch/tag names, etc.?
I have seen this problem too with git = 1.8.3.1, svn = 1.7.14 and svn2git = 2.3.2 Related to spaces in SVN branch names.
i have git version 2.23.0 and just got this problem

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.