Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git SVN Is Unable to Fetch from SVN Repository

Tags:

git

svn

git-svn

I'd like to use SVN and Git together. I have an svn repository, and I'm trying to fetch to a working directory, but I encounter an error as below.

svn, version 1.6.6 (r40053)

git version 1.7.3.1.msysgit.0

The svn repository path is file:///d:/tmp/test-svn/repos

These are the steps I did:

D:\tmp\test-svn>mkdir my-project  D:\tmp\test-svn>cd my-project  D:\tmp\test-svn\my-project>git svn init file:///d:/tmp/test-svn/repos  Initialized empty Git repository in D:/tmp/test-svn/my-project/.git/  D:\tmp\test-svn\my-project>git svn fetch  Couldn't open a repository: Unable to open an ra_local session to URL: Unable to  open repository 'file:///d:/tmp/test-svn/repos/my-project/trunk': Expected FS f ormat '2'; found format '4' at C:\Program Files\Git/libexec/git-core/git-svn lin e 1773 

So what is the issue? How can I fetch data from svn repository to the git working directory?

Thank you.

like image 328
Sambath Prum Avatar asked Feb 25 '11 03:02

Sambath Prum


People also ask

How get SVN fetch?

Run git svn fetch - This needs to fetch at least one new revision from svn! Change svn-remote url back to the original url. Run git svn rebase -l to do a local rebase (with the changes that came in with the last fetch operation). Change svn-remote url back to the new url.

Can you use Git and SVN together?

git-svn is a specialized tool for Git users to interact with Git repositories. It works by providing a Git frontend to an SVN backend. With git-svn, you use Git commands on the local repository, so it's just like using normal Git. However, behind the scenes, the relevant SVN commands are sent to the server.


2 Answers

I think this is the following issue: http://code.google.com/p/msysgit/issues/detail?id=298

Possible solution is to setup svnserve and use the svn:// protocol instead of file:///

See here for setting up svnserve on Windows: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup-svnserve.html

UPDATE

svnserve is available as a part of TortoiseSVN if you use Windows OS (I checked with TortoiseSVN version 1.8.6)

Then you just start:

svnserve -d -R --root c:\path\to\svn\repo 

and clone the repository with following command:

git svn clone svn://localhost/path/inside/svn/repo 
like image 50
tekumara Avatar answered Oct 04 '22 13:10

tekumara


I can propose to clone your repository with SmartGit. It have git-svn functionality implemented in java, which is significantly faster than git-svn and outperforms it. Hope it will work for you.

But if you have an access to your SVN repository server I recommend you to install SubGit into it. In this case you will get a Git repository that is automatically synchronized with SVN repository (and concurrent-safe).

Both approaches has large advantages over git-svn like: automatical tags, ignores, EOLs translation. SubGit also tries to preserve dates as it is possible while committing to SVN.

like image 26
Dmitry Pavlenko Avatar answered Oct 04 '22 12:10

Dmitry Pavlenko