emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PROPOSAL: Move to git, now that bzr is no longer a req.


From: Barry Warsaw
Subject: Re: PROPOSAL: Move to git, now that bzr is no longer a req.
Date: Sat, 4 Jan 2014 23:49:43 -0500

On Jan 04, 2014, at 05:15 AM, Stephen J. Turnbull wrote:

>It's true that Bazaar has some useful features, such as shared repos,
>whose performance characteristics are hard to emulate accurately in
>git.  I can't speak to Stefan's experience, of course, but when I look
>at my git repos, in fact sharing is quite high because branches in
>separate repos tend to be very divergent (so only the original shared
>objects *can* be shared), and when the main feature branch gets
>merged, the whole repo usually gets deleted so the failure of "git
>fetch" to hardlink pulled objects isn't a big space leak.

I know Stephen knows this, but Bazaar shared repos are really just a way to
efficiently store revision objects in a parent directory, such that you can
have a number of subdirectories inside there that represent working
directories of different branches.  Or put it another way, it just moves the
.bzr directory up one level so everything underneath it can share that.  In
most cases, most branches share probably 90% of their revisions, and that's
what makes local branching and remote pulling into a shared repo pretty fast.

I'm another big bzr fan, and while colocated branches are interesting, I find
them to be completely counter to my way of working.  If I'm going to be
working on a number of branches, I want separate working directories for each.
So for example, in Mailman (under bzr) I'll have a shared repo directory
containing working directories each containing a different in-progress feature
(topic) branch.

For Python hg's and other projects git repos, I basically have multiple clones
inside a parent directory that's nothing special.  It works, but doesn't map
to my way of working as well as bzr.

The other thing I sorely miss when working with git repositories is bzr's main
line of development approach.  Once you understand this, and use it correctly
(i.e. merges in the right direction), it's a very nice simplifying feature.
It allows you to have human friendly revision numbers[1], with dotted revision
numbers for side branches.  More importantly, it means that there's no cultural
pressure for history changing rebases, `bzr log` by default only follows the
main line (so side branches are hidden by default, unless you *want* to see
them), and bisect doesn't make you unhappy by landing you in non-working
revisions.

I think if git had this concept and --help text that wasn't 20 pages long (629
lines for `git merge --help`!) it would go a long way to improving the user
friendliness of git, IMHO of course.

That said, it's pretty clear that git has won this round of dVCS wars.
Mercurial will probably hang on and hopefully even thrive as a viable
alternative, but network effects have given git most of the mindshare.  At
least until something better comes along, as it has with CVS and svn in their
times.

-Barry

[1] Yes, they are local-only, and yes they can change, and yes you still have
unique hashes to unambiguously reference a revision, but it's still darn
convenient.  I'd much rather say "Are you on revision 7250 of branch
lp:mailman?"

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]