Search code examples
gitsvnversion-controlinteropgit-svn

Using SVN commands alongside git-svn: Possible? Advisable?


I was able to do the following without any problems:

  1. Clone a remote SVN repo via git svn clone.
  2. Make commits to the local git repo via git add and git commit.
  3. Push git commits to the remote SVN repo via git svn dcommit.

But because I noticed svn status not reflecting the dcommit'ed changes in my local .svn/ repo, AND because I wanted to "have a nice, clean feeling about SVN-git interoperability" as far as my local .svn/ and .git/ repos are concerned, I tried doing an svn update also (following the git svn dcommit). This, however, resulted in SVN conflicts!

In the articles on the web talking about git-svn usage, I'm seeing no mention of svn update following a git svn dcommit. It seems no one wants to use SVN once git-svn is working.

Question: Does use of git-svn specifically forbid you from using SVN commands (like svn update)? If no, how do I easily bring by local .svn/ repo up-to-date?

Other than a mere "nice, clean feeling of SVN-git interoperability" that I mentioned above, I would also like to be able to switch to the SVN command-set if needed, say, when troubleshooting SVN revisions with a colleague at my disk who's not using git-svn (like everyone else in the team!).


Solution

  • You must not use two different VCS in the same worktree, this must fail horribly.

    You can have an SVN checkout and a Git clone in different directories and use the one here and the other there. But sing SVN and Git in the same worktree will not ever work.

    Both tools assume they are managing the worktree and if there are files that are different, then they are different, no matter what. How should the SVN command know that the file you added locally is the same as in the SVN repository. For the SVN client it is exactly like if you did the commit from another worktree or even another computer if you did it with git-svn.