Remove VCS abstraction from PQM
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PQM |
Triaged
|
High
|
Unassigned |
Bug Description
PQM has inside it a bit of a VCS abstraction layer. I'd like to nuke
this in favour of bzr's VCS abstraction - bzr can natively speak to SVN
and bzr at the moment, as well as reading to varying degrees from hg/git
and possibly tla/baz in the future.
It would remove a bunch of code which I think is rarely used to do this,
and allow some of the improvements to UI and usability to be done more
easily if we do this.
Concretely I think we should:
- nuke the VCS abstraction in pqm in favour of direct bzrlib calls
- drop specific support for tla/baz*/Arx in the PQM codebase
For each VCS PQM currently supports to reinstate that support what is
needed is a small bzrlib plugin which implements enough of the
ControlDir, WorkingTree and Branch API's to satisfy PQM. Thats < 100
lines of python (I wrote a similar plugin in 2 hours at europython last
year for git to make 'bzr viz' work on git branches). The needed methods
will be small in number - create_checkout, merge, commit, conflicts.
We should maintain a list of the bzrlib API's used so that folk which
don't want a full bzr-foreign-branch plugin can do one which is simply
sufficient for PQM.
We should also document in the README/user documentation how to deploy
with bzrlib - e.g.
===
python2.4
can run from source - so you can:
unpack the PQM source to pqm
unpack a bzr source tree to pqm/bzr
drop your VCS specific plugin into pqm/bzr/
Alternatively, bzr will look in ~/.bazaar/plugins for plugins, and pqm
loads bzr via the python path so just having bzr installed on the system
is enough.
===
affects /products/pqm
status triaged
importance high
--
GPG key available at: <http://
Related branches
- pqm developers: Pending requested
-
Diff: 943 lines (+738/-6) (has conflicts)2 files modifiedpqm/__init__.py (+679/-0)
pqm/tests/test_pqm.py (+59/-6)
Changed in pqm: | |
assignee: | nobody → daniel-thewatkins |
status: | Triaged → In Progress |
Changed in pqm: | |
assignee: | Daniel Watkins (daniel-thewatkins) → nobody |
status: | In Progress → Triaged |
I've started documenting this in the code base.