Re: drawbacks to svn server + git-svn vs git server?
- From
Dmitry Potapov <dpotapov@gmail.com>
- Date
- Oct 21, 2009, 16:05 UTC
- Message-ID
- <20091021160558.GA19389@dpotapov.dyndns.org>
- In-Reply-To
- <4ADF2666.1070908@obry.net>
On Wed, Oct 21, 2009 at 05:19:02PM +0200, Pascal Obry wrote:
Show 13 quoted lines
> Le 21/10/2009 17:05, Dexter Riley a écrit : >> Hello. My group is currently using subversion on our version control server, >> but would like to move to git as a client. We are considering using >> git-svn, to avoid revalidating the server software. My question is, are >> there any major disadvantages to using git-svn versus git? I know that the >> git repository would be smaller. I'm more concerned about possible svn >> repository corruption, performance when pushing large merges back to svn, >> and any gotchas you might have encountered. > > Something that come to mind immediately is that you'll loose merge > information as Subversion has linear history. I understand that recent > Subversion versions have added some information about merges but I don't > think git-svn handles this (I don't even know if it makes sense or not:).
AFAIK, SVN remembers what changesets have been merged and what are not (on per file basis). So, it is more like cherry-pick with some automatic tracking than git merge, and stored separately for each file in the repo. So, I do not think it is easy to map svn merge concept to git one...
Inability to do merges mean that you have to track what changes what branch by hands, which is very inconvenient if you have a few long living branches.
Another long standing issue with git-svn was automatic end-of-line conversion. It did not work with git-svn and the last time I heard about it, it was disabled for repository created by git-svn. Probably, it may not difficult to correct, but no one has looked at that closely....
> If you have a single integrator you'll also loose the author name.
Right... And if everyone has the right to commit then git-svn will automatically rebase your changes during 'dcommit' on top of changes made by other people, which means that you put into the repository a different state than one you have actually tested.
Dmitry