[ANNOUNCE] Push Me Pull You 0.2 - Tech Preview Release

Mark Williamson mark.williamson at cl.cam.ac.uk
Wed Jan 16 10:27:22 CST 2008


> Thanks Mark.  Looks like a good start.

The functionality implemented is a bit random at the moment, which is to say 
I've not quite implemented "everything you need" at the GUI level (yet).  I 
already find that it's usable for my own work, though.  I'm adding new stuff 
all the time and simultaneously trying to support all the backend DVCS 
systems in a uniform way.

> Can you give some quick notes on 
> how to use it?

Hahah, yeah the documentation isn't so good right now :-)  I'll describe this 
from an "normal hg"-centric point of view but the process is basically the 
same for all backends (modulo some of them not supporting all of these 
operations).  hg forest supports a restricted subset of these operations at 
the moment.

The workflow I like in pmpu is something like:

1) fire up pmpu in the root of the repository (or use the hg pmpu extension, 
which does this automagically from anywhere in the repo)

2) choose Foreign repo and see if there's anything cool to pull

<review interesting changes by reading through the incoming list before pull.  
After pull just use a local history viewer, as usual>

3) do work

<use the annotate GUI to review who last touched a file, searching for mention 
particular users or changesets, etc>

4) fire up commit tool of choice from the pmpu GUI

<pmpu is intended to just use an external commit tool, qct is easily the best 
that I know of and there's no point me trying to do better ;-) >

5) pmpu automatically refreshes Outgoing changesets view after commit tool has 
been run

5a) Optionally tag the latest change from the GUI.  The tag will appear in 
the "outgoing" list automatically.

6) hit "push" to send these all to the "foreign" repo using "hg push"

<If you can't push directly, hit the bundle button to create a bundle of 
outgoing changesets to apply to the "foreign" repo some other way.  If you 
have a cmdline e-mail client configured then you can use "Send Bundle..." to 
send the bundle immediately by e-mail.>

6a) Optionally create a release tarball / zip file from the current revision.

7) at the foreign repo, you can apply a bundle using "apply bundle..." and 
then take a look to see how that has affected your incoming / outgoing flow.

> I'm guessing that to use this with hg, the idea is I could compare two
> _local_ repos?  I assume comparing with a remote is not in the cards?

Actually, it just shells hg commands behind the scenes so the "foreign" repo 
can be anywhere that hg is capable of talking to (local fs, ssh, http).  For 
hg, the "foreign repo" dropdown is initially seeded with entries from [paths] 
in the hgrc for this repository and you can just pick one.  If you want to 
access another then typing in the path / URL and hitting enter should do the 
trick.

> What is 'start server'?

It starts a local changeset server (on port 8000, the hg default) so that you 
can do ad-hoc sharing.  e.g. you're at a hackathon and want to quickly make 
the latest code on your laptop pullable.  You hit "Start Server", wait for 
others to pull your changes, then hit "Stop Server" to shut it down.

In the hg case it runs "hg serve".  For other backends, the CLI incantations 
are similar but confusingly different - at the GUI level it's all the same.

Hope that helps some.  If you're still curious then More Questions Please!

Cheers,
Mark

-- 
Push Me Pull You - Distributed SCM tool (http://www.cl.cam.ac.uk/~maw48/pmpu/)


More information about the Mercurial-devel mailing list