[vox-tech] DVCS & SVN together

Ken Bloom kbloom at gmail.com
Sat Jul 18 20:08:31 PDT 2009


On Fri, 2009-07-17 at 13:27 -0700, Alex Mandel wrote:
> Ken Bloom wrote:
> > On Fri, 2009-07-17 at 12:34 -0700, Alex Mandel wrote:
> >> I'd like to start writing some code, I'm not really sure if it'll pan
> >> out so I don't want to go through the trouble of setting up an svn from
> >> the start.
> >>
> >> What I'd like to do is pick either git,hg or bzr in order to start some
> >> code and if I decided to migrate it to svn with history.
> >>
> >> Anyone have any opinion on which system to use. The problem I've seen so
> >> far is that I can only seem to find how to go from svn to others and I
> >> need to make sure I can go from others to svn.
> > 
> > Migrating to SVN after you've started in git, hg, or bzr is probably a
> > bad idea. The history of a DVCS repository is a directed graph, and
> > boiling that down into a linear history that svn expects to work with is
> > difficult, if not impossible.
> > 
> > As far as deciding between git, hg, and bzr, it really depends what
> > coding community you're a part of. bzr is most popular among Ubuntu
> > developers, hg is most popular in the python community (becasue it's
> > written in python), and git is popular among kernel developers and ruby
> > coders, and I think it's the most popular in general.
> > 
> > I will point out, that bzr is probably the most flexible in terms of
> > work flow -- you can make lightweight checkouts that carry no history
> > and work like svn if you wanted to, and you can't do that with other
> > DVCS. (See
> > http://lists.madduck.net/pipermail/vcs-home/2009-April/000210.html )
> > 
> > --Ken
> 
> Could you explain more about the history difference or point me to some
> examples.

An example of how this plays out in git is the git history shown (using
the gitk graphical history viewer) in
http://lwn.net/images/ns/kernel/gitk.png

SVN history is basically supposed to be a straight line -- this version
follows that (one) version, which follows that (one) version. Now I'm
seeing some information about more merge features in recent versions of
SVN, but I haven't used them, and I highly doubt that svn can handle the
kinds of histories that git can generate.


> I actually found that bzr does have a push to svn and since I
> basically want to seed an svn with one branch that's never been merged
> in my head it seems to work.

If you can visualize the repository's history, and it's a straight line
with no merges, then you should be fine. (Though there may be other
caveats. About 6 months ago I converted from SVN to git, and I tried bzr
first. I found bzr's subversion support lacking for other reasons, I
think relating to the fact that I couldn't easily check out the
repository directories converting without completely overloading bzr-svn
computationally. I found that git could handle it, so I went with git
instead.)

> On a related thread, in choosing between the various DVCS which one
> works best with windows clients, specifically in regards to being able
> to merge branches across a network. It could also be framed as which one
> is easiest to host branches on a server much like the online services do
>  but internal only.

I don't know anything about windows clients, except that git is
notoriously POSIX-based so you'd need to use cygwin or msysgit to use
git. The python-based alternatives should be more portable.


More information about the vox-tech mailing list