Push Me Pull You

Push Me Pull You is a graphical interface for a distributed version control system. Currently it contains proof-of-concept support the hg (including basic support for the forest and Mq extensions), git (including basic support for submodules / superprojects), bzr and darcs systems.

From a developer perspective, Mercurial is my "native" version control system but I'm keen to make the support for other systems solid and complete too.

PMPU is written in Python, using PyQt4 for GUI functionality.

More screenshots

Background

PMPU is oriented around the typical "Push / Pull" workflow of distributed SCMs; as such it is designed to make it easy to see what changes are arriving from remote repositories and what changes are due to be pushed upstream. It also has support for creating changeset bundles and for importing both bundles and patches; these are primarily useful when interacting with the development process via e-mail.

Rather than re-invent the wheel, PMPU can make use of external history views and commit tools. For mercurial repositories, I recommend the 'hgk' or hgview viewers and the excellent Qct commit tool.

Features

PMPU is already a useful tool for my own development but should be considered as alpha quality. As far as I know it should be mostly safe to use but please exercise caution! Many usecases, such as nested repositories have not been tested at all. There is only very minimal error handling.

I have made a 0.2 release of PMPU but it is a technical preview, not even Beta quality / reliability yet.

PMPU works to create a common interface for popular DVCS systems. Whilst these systems share many concepts and operations (and often command names) in common, there are many small differences in behaviour and specific functionality. PMPU attempts to provide a more uniform interface to this functionality, making the choice of underlying repository an more of an implementation detail, instead of a UI choice.

The following features are currently implemented in the development tree:

Development status

Development of PMPU is progressing quickly. Planned features include: Comments, patch submissions, other backends, success reports or any other feedback are always welcome. Please don't hesitate to contact me with your questions.

Download

PMPU's development is hosted in a Mercurial repository. The project can be downloaded using Mercurial from: The project history can also be browsed through the web interface at this location.

Releases

Version 0.2 has been released!

This is a technical preview release. It demonstrates the features available but may not be suitable for production use.

Same warnings apply as the 0.2-rc2 release and all other releases. There's very little error handling and it's rather new code. Basically treat this as experimental software that may eat your data. It works OK for me but please be careful with your own stuff!

nb A confusing known bug is that Export Archive in git mode adds all files to the root of the archive, rather than putting them all in a directory as the other backends do. When you extract the archive the files will be unpacked to your current directory, overwriting any files of the same name. This matches git's default archive behaviour but differs from other systems.

This release was tagged and pushed using pmpu-0.2 ;-)

Version 0.2-rc2

Same warnings apply as the 0.2-rc1 release, but the darcs behaviour is now more consistent with the darcs command line behaviour and shouldn't do things unexpectedly different to the darcs command line.

Some bug fixing today has made this a bit more solid and cleared up most of the problems in -rc1 or disabled the features until a better fix is available. A few more tests are needed but 0.2 should look very similar to this.

Enjoy!

Version 0.2-rc1

All the warnings above and the specific warnings for the version 0.1.* releases still apply to this release: it might be buggy, it might eat your data, do be careful. It's never done anything really nasty to me but it's new software and you ought to be careful with your data - that's why you're revision controlling it, after all! Please exercise caution.

This is a release candidate, meaning that I've stopped adding new features and started doing tests on how well things work. There aren't too many bugs although one or two are potentially dangerous in some cases; most people will probably be OK though. At least one of these (the darcs archive export bug) was in the previous release too.

The following tarball wraps up the 0.2-rc1 tagged code, plus a list of the tests I've tried out on it so far and the results I found. I'll try and fix up the BUGS, retest those items and then get an -rc2 out in the next few days.

Version 0.1 - Technical Preview

PMPU version 0.1 has been released. This is a preview release, so please exercise caution and don't trust it with critical data. I've given it basic testing but many usecases have not been tested. It may do bad things to your data, or your computer system and it's error handling is non-existent. Treat it as a snapshot of development code.

Update: I have just rolled up a 0.1.1+darcs release. This contains a couple of bugfixes over the 0.1 release plus preliminary support for Darcs. This retains compatibility with hg, git and bzr whose support should be unchanged. The same warnings apply as for the 0.1 release. Get it here:

Warning: (added 2008-01-15) There is a bug in the export archive code for Darcs. No matter what path you specify, the archive will be created in the repository root. If you have an existing file of the same name there then it will be overwritten.

Development snapshots:

I'm putting occasional snapshots of the development source tree on this server for download. They're not as fully tested as the releases and may do bad things. They're provided as a simple way of getting unreleased code without using hg.

Fixes and new features will continue to go into the Mercurial tree. Feel free to prod me to create a new snapshot if you see something you want in there.

Mark Williamson