[IPython-dev] Bazaar on OS X
Hans Meine
hans_meine at gmx.net
Wed Jun 25 08:14:25 EDT 2008
Am Mittwoch, 25. Juni 2008 00:56:50 schrieb Stéfan van der Walt:
> When branches diverge, a merge is necessary. Some revision control
> systems hide the merges, others (like bzr) don't. How does mercurial
> handle the issue?
(Background: I have recently switched to Mercurial with many of my projects
and am constantly using it a lot, incl. many extensions and following the
mailing list. My bzr experience is near zero though.)
Mercurial does not handle any line of development special, i.e. you get to see
the complete, directed, acyclic graph e.g. in "hg log" (or "hg glog", "hg
view"). AFAICS, bzr decides that one path from this graphs "root" to the tip
is somehow special (IIRC called the "mainline") and only displays this by
default (i.e. you see only one changeset when a branch is merged).
For example, here's an excerpt from an actual "hg log" output of mine, in
which branching and merging occured:
...
changeset: 228:765851775ca5
user: Hans Meine <hans_meine at gmx.net>
date: Fri Apr 04 22:19:40 2008 +0200
summary: Added tag release_0_4 for changeset 4180934dce9d
changeset: 227:4180934dce9d
tag: release_0_4
parent: 226:fc47fb9bf558
parent: 225:29273fb40578
user: Hans Meine <hans_meine at gmx.net>
date: Fri Apr 04 22:04:00 2008 +0200
summary: merged branch/dist.sh changes from Qt3 version
changeset: 226:fc47fb9bf558
parent: 222:1b6fee2f3be2
user: Hans Meine <hans_meine at gmx.net>
date: Fri Apr 04 22:03:13 2008 +0200
summary: get rid of necessary VigraQt symlink
changeset: 225:29273fb40578
user: Hans Meine <hans_meine at gmx.net>
date: Fri Apr 04 21:59:46 2008 +0200
summary: don't delete vigraqt.testing
changeset: 224:5d6c94f6de48
user: Hans Meine <meine at informatik.uni-hamburg.de>
date: Thu Apr 03 14:14:00 2008 +0200
summary: adapt script to mercurial needs (remove CVS stuff)
changeset: 223:c478238d5ec0
parent: 179:776243786443
user: Hans Meine <meine at informatik.uni-hamburg.de>
date: Thu Apr 03 14:13:39 2008 +0200
summary: Added tag release_0_4 for changeset 776243786443
changeset: 222:1b6fee2f3be2
user: Hans Meine <hans_meine at gmx.net>
date: Fri Apr 04 21:54:42 2008 +0200
summary: remove old autotools-README
...
All changesets are displayed in the same format, no matter on which branch
they occured. (If I had used named branches, the above would
include "branch: somebranch" though.) The parent: lines indicate
a) branching, e.g. a specified parent that is != the previous revision (in
which case "hg log" omits the line for brevity) and
b) merging, e.g. more than one parent.
Of course, graphical tools display this more nicely. There's also "glog"
("graphical log") which uses ASCII art:
...
|
o changeset: 228:765851775ca5
| user: Hans Meine <hans_meine at gmx.net>
| date: Fri Apr 04 22:19:40 2008 +0200
| summary: Added tag release_0_4 for changeset 4180934dce9d
|
o changeset: 227:4180934dce9d
|\ tag: release_0_4
| | parent: 226:fc47fb9bf558
| | parent: 225:29273fb40578
| | user: Hans Meine <hans_meine at gmx.net>
| | date: Fri Apr 04 22:04:00 2008 +0200
| | summary: merged branch/dist.sh changes from Qt3 version
| |
| o changeset: 226:fc47fb9bf558
| | parent: 222:1b6fee2f3be2
| | user: Hans Meine <hans_meine at gmx.net>
| | date: Fri Apr 04 22:03:13 2008 +0200
| | summary: get rid of necessary VigraQt symlink
| |
o | changeset: 225:29273fb40578
| | user: Hans Meine <hans_meine at gmx.net>
| | date: Fri Apr 04 21:59:46 2008 +0200
| | summary: don't delete vigraqt.testing
| |
o | changeset: 224:5d6c94f6de48
| | user: Hans Meine <meine at informatik.uni-hamburg.de>
| | date: Thu Apr 03 14:14:00 2008 +0200
| | summary: adapt script to mercurial needs (remove CVS stuff)
| |
o | changeset: 223:c478238d5ec0
| | parent: 179:776243786443
| | user: Hans Meine <meine at informatik.uni-hamburg.de>
| | date: Thu Apr 03 14:13:39 2008 +0200
| | summary: Added tag release_0_4 for changeset 776243786443
| |
| | ...
| |
| o changeset: 181:d90cf77766a5
| | user: Hans Meine <meine at informatik.uni-hamburg.de>
| | date: Thu Apr 03 15:40:18 2008 +0200
| | summary: Qt4 porting:
| |
| o changeset: 180:f1910ad7c12b
|/ user: Hans Meine <meine at informatik.uni-hamburg.de>
| date: Thu Apr 03 15:36:49 2008 +0200
| summary: Qt4 porting: QImage format stuff, add v2qc
|
o changeset: 179:776243786443
| user: Hans Meine <meine at informatik.uni-hamburg.de>
| date: Thu Apr 03 14:03:26 2008 +0200
| summary: version bump -> 0.4
|
...
(BTW: This looks much better in a terminal than in a mailer who thinks
that "|" starts a quote...)
In summary, I am extremely happy with mercurial and find it very easy to
understand and work with. I believe bzr is not much different, and launchpad
looks nice, but I see the discussed history folding as the only serious
reason why I would currently recommend hg over bzr. OTOH, the situation
could be much improved if lp would (allow to) display the complete history
instead of only the "mainline" one AFAICS.
Hope that helped,
Hans
More information about the IPython-dev
mailing list