[pypy-dev] Mercurial workflow

Adrien Di Mascio adimasci at gmail.com
Tue Dec 14 18:42:04 CET 2010

Hi Jacob,

On Tue, Dec 14, 2010 at 6:04 PM, Jacob Hallén <jacob at openend.se> wrote:
> now that the switch to Mercurial has happened, people are discovering that
> their Subversion workflow habits don't quite work. This is because Mercurial
> has a distributed philosophy, inlike svn which has the concept of the holy
> central server where all operations take place.

It might be relevant for you to consider the mq extension :

- http://mercurial.selenic.com/wiki/MqExtension
- http://mercurial.selenic.com/wiki/MqTutorial
- http://mercurial.selenic.com/wiki/MqExtension

I find it very convenient on a daily-basis usage. When you want to
implement or fix something, you just create a new patch :

$ hg qnew my_new_idea

You then start to modify code and update your patch whenever you feel
the current version of your code is better than the previous one :

$ hq qrefresh

Then, when you're happy with it, all tests pass, etc., unapply your
patch, pull the new changesets from the "central" repository, and then
reapply your patch :

$ hg qpop                           # pop your patch
$ hg pull central_repo_url     # pull new changesets
$ hg up
$ hg qpush                         # reapply your patch
$ <make sure tests still pass>
$ hg qfinish -a                     # finalize and promote your patch
to a changeset tracked in the repository
$ hg push central_repo_url   # push your changeset

You can work on several patches at the same time, you can even track
your patches in a mercurial repository. In my experience, it helps
keeping a revision tree clean and avoid quite a few unnecessary
merges. Of course there is also the "rebase" command and some other
extensions I haven't tried such as pbranch but the standard "mq"
extension is itself very useful.

Just my two cents.

More information about the Pypy-dev mailing list