[petsc-dev] [mpich-discuss] MPICH migration to git

Jed Brown jedbrown at mcs.anl.gov
Wed Jan 9 22:17:08 CST 2013


On Wed, Jan 9, 2013 at 10:03 PM, Sean Farley
<sean.michael.farley at gmail.com>wrote:

> * branching
>   - git has light-weight branches (this means that the branch metadata
> is not written in the changeset)
>   - mercurial calls these things bookmarks
>

Bookmarks have always been an extension that you have to explicitly enable
(along with color, pager, graphlog, etc). Branches, which most people agree
are bad design and don't use, are there by default. Quite importantly,
bookmarks are *fragile* in that they can move around indirectly as a
side-effect of an operation that does not directly reference the bookmark.
Worse, when that happens, there is no way to recover the metadata. (It is
ironic that the system written in a garbage-collected language does not
have garbage collection while the system written in C has garbage
collection.)


>
> The important thing to remember about using mercurial branches is that
> they are just like svn (i.e. permanent). So, if you're looking for a
> light-weight branches then simply use mercurial's bookmarks. You might
> as well forget about the `branch` command if want to compare to git.
>
> Unfortunately, Jed is right that bookmarks have some rough spots but
> 1) it's finally being dog-fooded and 2) development with branches /
> bookmarks in mercurial will be much better after changeset filtering
> is implemented (which looks like it was pushed to crew today,
> actually). I haven't seen any problems using bookmarks in my everyday
> workflow, especially with evolution.
>

They've had more than five years of yet-another-branch-like-thing.


>
> * user interface
>   - git has notoriously had a bad interface and even when I think some
> command will do what I want, it somehow messes up
>

Familiarity. Both have quirks.


>   - mercurial has a pretty clean interface for the most part (and more
> importantly) makes typing shorter commands possible
>
> * speed
>   - tough to really say now that Bryan O'Sullivan's patches are in
> mercurial and he's actively working on that front (for Facebook … who
> still uses subversion)
>
> * mutable history
>   - git decides this based on whether there is anything "pointing"
>   - mercurial decides what is rewritable by the phase (public, draft,
> secret)
>
> This last bit of mutable history is what I've found to be an
> indispensable workflow. I haven't seen any comparison of this
> mercurial feature with modern git (to be fair, it's with a develop
> version of mercurial).
>

Phases are like having a terminal that automatically locks when idle for 1
minute. Sure, it's "safer", but it's more time fiddling with the lock.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130109/8f01f3e4/attachment.html>


More information about the petsc-dev mailing list