Posted Mar 13, 2008 18:25 UTC (Thu) by mikov (subscriber, #33179)
Parent article: Emacs chooses Bazaar
I am curious about the DVCS preferences of other LWN readers from both technical and usability
standpoint (but not political). Which one do you prefer and why ? I think that the customary
high level of comments here may produce valuable insights.
I currently use Git both professionally and for my personal projects, after having evaluated
GNU Arch first. What attracted me to Git initially was that it seemed very clean and simple
conceptually and it had excellent low level and high level documentation. Another plus is that
transitioning from Subversion to Git was practically painless. My company has been using Git
too for about an year now and we haven't had any reason to regret that choice (quite the
contrary actually). In case you are wondering, we are doing Java development - not kernel :-)
I have always assumed that Mercurial would have done an equally good job, but it just happened
that I evaluated Git first.
At the time I also looked into Bazaar and Bazaar-NG, but I didn't find the same level of
documentation and clarity. What might have turned me off Bazaar is also its perceived relation
to GNU Arch, which I found impractical to use (the added difficulty compared to Subversion did
not justify the immediate gains).
Posted Mar 14, 2008 13:49 UTC (Fri) by Wummel (subscriber, #7591)
[Link]
Git lacks an Eclipse pluging so my Java projects are still stored with SVN. For projects that
do not need Eclipse I use git though.
And using git-svn is also a very nice way to track upstream SVN repositories while also
maintaining a set of local patches.
git works in Ecplise
Posted Mar 14, 2008 15:16 UTC (Fri) by deleteme (guest, #49633)
[Link]
Git for ecplise is available. But using something that really means it when it says This package might eat your files, and has no support for merging isn't that fun.. But actually almost useable, if you can stand to use pre alpha stuff.
What do LWN-ers use ?
Posted Mar 14, 2008 20:24 UTC (Fri) by felixrabe (guest, #50514)
[Link]
Git.
Because it's the first and only DVCS I: got interested in thanks to LWN / learned / found
plenty of good documentation for.
As far as I'm concerned, I find it cleverly implemented (totally fits into the "one small tool
for a given-task" Unix mentality), find it's interfaces easy to learn and easy to combine with
other Unix tools, and thus like to use it wherever possible. I have no idea about the other
DVCS', whether they are similar enough, but I also positively love speedy applications, which
makes me stick to Git for the foreseeable future.
What do LWN-ers use ?
Posted Mar 14, 2008 20:30 UTC (Fri) by felixrabe (guest, #50514)
[Link]
Btw I found no issues with Git on Windows with my small scale projects other than the
operating system :)
What do LWN-ers use ?
Posted Mar 16, 2008 15:30 UTC (Sun) by astrophoenix (guest, #13528)
[Link]
I have settled on mercurial. darcs was a close contender. I love darcs' ability to pull a single
patch. But, mercurial is fast, Fast, FAST, has lots of developers, plugin support, is written in
python, fully cross-platform (I have to deal with some windows folks at work), and has some
really great extensions already like view (inspired by gitk), forest (for handling multiple modules
in a really nice way), the mercurial queue (handling patches on top of history like quilt but much
more convenient), and transplant (for cherry-picking any patch you need to).
on top of that, mercurial has the best documentation I've seen for any DVCS, take a look at the
book written about it.
If darcs were faster and had a view/gitk program, and was cross-platform for real (i.e., handled
the line ending issue) I might revisit it again. hmm, that list got longer than I intended it to.
:)
I also was intensely interested in git, but I just couldn't do it. I tried when it first came out, and
used it for a simple project with lots of files where I knew there wouldn't be any branching. so I
got a feel for the performance of pulling lots of patches (fast). I tried
again about 3 months ago, saw improvement, but still couldn't do it. I felt it was easy to do easy
stuff, but anything past that, you really had to jump off a cliff of a learning curve, and there were
sharpened stakes at the bottom of the cliff!
the poster I'm replying to said there is great documentation for git now... please look at the mercurial book and then post a link to
documentation that compares to that, for
git. I haven't been able to find any good source of documentation at all, past man pages for
some of the commands, and a couple of tutorials that get you into the absolute basics. nothing
for how to deal with the aforementioned cliff with spikes at the bottom. :) I really would like to
learn git though. but mercurial is just as fast as git, and MUCH easier to master.
What do LWN-ers use ?
Posted Mar 16, 2008 18:24 UTC (Sun) by johill (subscriber, #25196)
[Link]
For me, the big problem with mercurial is that it stores all state for each repository and has
no way of packing and/or combining things. Hence, every checkout takes the full history, where
with git you only need the additional objects and make it refer to another tree for most
objects, so another working tree is cheap, where with mercurial you copy all history again.
What do LWN-ers use ?
Posted Mar 16, 2008 18:49 UTC (Sun) by astrophoenix (guest, #13528)
[Link]
interesting. I can tell you that when you do keep the full history around, mercurial is a lot more
space-efficient than git. and if you are making a new copy of a tree on the same filesystem,
mercurial hard-links everything, so it's still cheap.
What do LWN-ers use ?
Posted Mar 17, 2008 4:10 UTC (Mon) by dlang (✭ supporter ✭, #313)
[Link]
git has the option to use hard links when doing a clone. I've also seen some very spectacular
compression achieved with git packs. are you possibly comparing to a git repository that
hasn't been packed?
What do LWN-ers use ?
Posted Mar 19, 2008 20:36 UTC (Wed) by astrophoenix (guest, #13528)
[Link]
you're probably correct; I was probably comparing an unpacked git repo to
a mercurial repo when I said mercurial took less space.
What do LWN-ers use ?
Posted Mar 16, 2008 19:03 UTC (Sun) by astrophoenix (guest, #13528)
[Link]
more precisely, mercurial hard links all the history files (not the working copy files).
Space-efficient checkouts
Posted Mar 17, 2008 5:31 UTC (Mon) by kevinbsmith (guest, #4778)
[Link]
I could be wrong, but my understanding is that bzr is one of the few (or maybe the only?)
d-vcs that can share the history between multiple branches/checkouts, even under MS Windows
(without hard links or symlinks). If you are serious about cross-platform support, that's a
big feature, because you want branching to be cheap for everyone on all platforms.
If anyone can confirm/refute whether bzr and/or other systems can in fact do this, please do
so.
Space-efficient checkouts
Posted Mar 17, 2008 9:20 UTC (Mon) by wingo (subscriber, #26929)
[Link]
I use bzr on a number of projects, but I've found that git's in-place branching is much more
useful than bzr's shared-repository code. My brain and fingers don't do so well with multiple
directories for a project; it's much easier for me to have one directory and switch branches
at will.
Aside from that, having the set of branches stored in the repo itself is good from a
discoverability POV.
Anyway, my point was that shared repositories are less interesting when you have in-place
branching. (I like both bzr and git, so no flames please.)
Space-efficient checkouts
Posted Mar 17, 2008 20:39 UTC (Mon) by incase (subscriber, #37115)
[Link]
I still don't use a dVCS, but I find in-place branches difficult for me. Not conceptually, but
I like to keep different branches around, like my Debian packages: I sometimes maintain both a
backport to Debian stable and a version of the same package in unstable (i.e. the current
development part). I would find it quite inconvenient to commit anything I currently try in
the development branch only to be able to safely switch to the backport's branch. However, I
know that some people like to commit any (reasonably sized) changes they do, while I usually
like to try my changes at least on a very basic level before committing and doing more
extensive tests. This sometimes means that I have changes uncommitted for days at a time.
Certainly something many developers don't like to have.
Anyway, based on this, I like mercurial better than git.
On the local storage of all the history vs. referencing the remote repository, I also prefer
the mercurial way. Once I cloned/branched a remote repository, I have all history at my
fingertips (not just the commit messages), even if the remote repository becomes unreachable
for some reason.
Space-efficient checkouts
Posted Mar 20, 2008 11:15 UTC (Thu) by engla (guest, #47454)
[Link]
A git user would use a "topic branch" for each such string of unacknowledged changes. Then
when you have evalutated the changes just merge the branch or delete it at will.
Arguably a system that doesn't let you commit for days reminds me of svn, patch+diff or
similar old-fashioned systems.