Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>There are new tools available that fix many issues of git-svn and provide much better experience for using both Subversion and Git.</p> <p>Among other things these tools fix some branching and merging problems. Here is an overview:</p> <ol> <li><p>git-svn</p> <p>From the documentation:</p> <blockquote> <p>CAVEATS</p> <p>...</p> <p>Running git merge or git pull is NOT recommended on a branch you plan to dcommit from. Subversion does not represent merges in any reasonable or useful fashion; so users using Subversion cannot see any merges you've made. Furthermore, if you merge or pull from a git branch that is a mirror of an SVN branch, dcommit may commit to the wrong branch.</p> </blockquote> <p>There are primarily three reasons not to dcommit merge commits:</p> <ul> <li><p>git-svn doesn't automatically send svn:mergeinfo property for merged branches. As result Subversion is not able to track those merges performed by git. This includes normal Git merges and cherry-picks.</p></li> <li><p>as git-svn does not convert svn:ignore, svn:eol-style and other SVN properties automatically, merge commit does not have corresponding metadata in Git. As result, dcommit does not send these properties to SVN repository, so they get lost.</p></li> <li><p>dcommit always sends changes to the branch referenced by a first parent of a merge commit. Sometimes changes appear where user doesn't expect them.</p></li> </ul></li> <li><p><a href="http://subgit.com/" rel="nofollow">SubGit</a></p> <p>SubGit is a Git-SVN bi-directional server-side mirror.</p> <p>If one has local access to Subversion repository, one can install SubGit into it:</p> <pre><code>$ subgit configure $SVN_REPOS # Adjust $SVN_REPOS/conf/subgit.conf to specify your branches and tags # Adjust $SVN_REPOS/conf/authors.txt to specify git &amp; svn authors mapping $ subgit install $SVN_REPOS ... $ INSTALLATION SUCCESSFUL </code></pre> <p>At this moment SubGit converts Subversion repository into Git (it works in opposite direction as well) and installs SVN and Git hooks. As result Subversion and Git repositories are synchronized: every commit and push starts hooks that convert incoming modifications immediately.</p> <p>SubGit converts svn:ignore properties into .gitignore files, svn:eol-style and svn:mime-type properties to .gitattributes, so merge commits in Git retain this metadata.</p> <p>When one pushes merge commit, SubGit converts all the new commits into Subversion revisions. It honors svn:mergeinfo property, so merge operation is properly tracked by SVN afterwards.</p> <p>Even if user pushes very complex Git history, SubGit converts all the commits keeping the merge tracking data valid. We once pushed the whole history of git.git repository at once and it was properly converted into SVN.</p> <p>SubGit is a commercial product. It is free for open-source and academic projects and also for projects with up to 10 committers.</p> <p>For more details please refer to <a href="http://subgit.com/documentation/" rel="nofollow">SubGit documentation</a> and <a href="http://subgit.com/documentation/gitsvn.html" rel="nofollow">git-svn</a> comparison page.</p></li> <li><p><a href="http://syntevo.com/smartgit" rel="nofollow">SmartGit</a></p> <p>SmartGit is a client-side alternative for git-svn.</p> <p>SmartGit also supports svn:ignore, svn:eol-style and svn:mime-type properties conversion. And it also sets svn:mergeinfo property for merge commits. It even updates necessary merge tracking data for cherry-pick commits.</p> <p>SmartGit is a commercial Git and Mercurial client. It is free for non-commercial usage.</p></li> </ol> <p>Full disclosure: I'm one of SubGit developers.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload