organize all your projects supporting different SCM
Python Emacs Lisp
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
conf
organizer
test
.dir-locals.el
.gitignore
README.org
setup.py
tox.ini

README.org

Project organizer

This project aims to set up an uniform way to manage multiple projects, trying to support many different SCMs and modalities.

Every project can be a separate entity, but sharing configurations and general rules with many other projects.

In case there is an original project of our personal fork, we should be able to see detailed diffs and statistics about it.

Tasks

[#A] define exactly what is the scope of the project, or it might end up trying to be too smart

This tool should be mainly used for developer, to manage graphs easily

define what should be the user interface, as CLI and as cmdloop

take from mr.developer or write from scratch some code to abstract the SCM used

define a grammar/syntax for a configuration file format

write doc in RST format

check if gerrit might be something which can be included (even if it’s a Java program)

check when sqlite was included in Python

define a way to make it py3k compatible (possibly with the same code-base)

Native libraries

In this case we want to access directy to the internals, might be faster and more powerful but the API might not be stable.

Git

We can use libgit2 and its python bindings to access to git repositories from git.

Mercurial

Official mercurial API to access the repository in an object oriented fashion. The official API can break compatibility at every version, use HGapi to get a stable interface.

Bazaar

BZrlib

Subversion

using the SVN api with some examples in Python

Emacs integration

Switching to project should be done withing Emacs (calling shell commands) too with the following:

  • always store buffers and window configurations used
  • restore buffers (maybe in new frames) and window configurations
  • show and analyse the time spent in each of the projects (possibly using org-mode and its advanced timing mechanisms)

Keep a database storing all the bugs filled, and create org-mode-like links to be able to jump them easily.

Ideas

  • this project might be a good candidate to test the actor model for some real concurrency, see for example pyzmq
  • instead of reinventing the wheel and try to create another SCM-agnostic generic system, just make it very easy to create generic alias for commonly used operations
  • have a way to generate graphviz graphs of the project tree in SCM-agnostic way
  • store all the statistics and the history of the work in an internal database, using sqlite for example