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.
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.
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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With