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:
- Flow-oriented interface, based around incoming and outgoing
changesets. (hg, bzr, git, darcs)
- Disconnected operation: bundle creation and bundle
import (hg, bzr, git, darcs)
- Control local changeset server for easy ad-hoc repository
sharing. (hg, bzr, git)
- Initialise repositories in new or existing
directories. (hg, bzr, git, darcs)
- Clone repositories from a local or remote location. (hg,
bzr, git, darcs)
- 'Favourites' interface for commonly used upstream
repositories. (hg, bzr, git, darcs)
- Launch external commit and history tools (hg, bzr,
git, darcs)
- Create an archive of the current repository
contents. (hg, bzr, git, darcs)
- Command line interface with history for quick access to SCM
functionality. (hg, bzr, git, darcs)
- Tag revisions from the GUI. (hg, bzr, git, darcs)
- SCM plugins to integrate better with commandline
tools. (hg, bzr, git)
- Update current working directory to a specified revision
ID. (hg, bzr, git, darcs)
- Bundle outgoing changesets and send them via e-mail. (hg,
bzr, git, darcs)
- Graphical file annotate with flexible searching, history
browsing and hyperlinks between revisions. (hg, bzr, git)
- Launch repository optimizer from GUI. (bzr, git,
darcs) hg doesn't use an optimizer.
- "Forest of repositories" / submodule support (hg with the forest
extension as used by OpenJDK, git preliminary support).
- "Mercurial Queues" support (hg only)
Development status
Development of PMPU is progressing quickly. Planned features include:
- Better error handling, better safety.
- Improved, more powerful, incoming-outgoing interface.
- E-mail client integration combined with patch / bundle export -
improved offline operation.
- Access to powerful hg features and popular extensions such as MQ.
- Improved functionality in all backends and addition of others.
- Enhanced command line with SCM-independent commands, intelligent
completion, etc.
- Lots of other stuff.
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