Git-SVN: Update Git repo from centralized SVN server
Solution 1
Best way to work on a Subversion Repository via Git:
-
git svn init -s https://svn.repo/app/ myrepo
assuming that under https://svn.repo/app/ the repo contains the standard/trunk
,branches
andtags
subdirectories - Do a
git svn fetch
in myrepo until no more commits are fetched (may take quite some time and sometimes aborts under Windows). - Checkout a specific Subversion branch or trunk via
git checkout -b trunk remotes/trunk
Then you can simply browse, hack and commit into your Git Repo containing all Subversion commits and branches.
- To pull in new commits from SVN use
git svn rebase
- To push your local commits into SVN use
git svn dcommit
To jump to a specific Subversion revision you only need to browse the history via git log
and search for a commit mirroring the according subversion commit. You can easily spot the Subversion revision in the git-svn-id:
line of the commit message. The just use a git checkout <commithash>
to explicitly checkout that version.
Solution 2
A good start :
To fetch new svn commit into your local repo : git svn rebase
To push your local commit to SVN : git svn dcommit
You will probably have to use git stash
and git stash pop
, before using the two commands above when your working copy has uncommited changes.
Jacob Krieg
Updated on April 01, 2020Comments
-
Jacob Krieg about 4 years
I'm working on a project for which everyone uses
SVN
as a centralized server and everybody pushes the changes they do on that server. I want to useGit
locally and I'm pretty new togit svn
. I did agit svn clone
of the repository withgit svn clone -r HEAD https://svn.repo/app/branch
an I want to do an update through git.I need a 'git pull like' command but to pull from a specific revision of the SVN server repo. Also is there a 'fetch like' command to fetch from a specific revision of the SVN server repo?
I don't have any
.svn
folders in my cloned project andgit remote
doesn't give me anything. However I did agit config -l
and I get the SVN server's URL, so somehow I'm linked with the SVN server. I don't know how to fetch or pull though.Thanks!