An open API service indexing awesome lists of open source software.

https://github.com/andreacrotti/project-organizer

organize all your projects supporting different SCM
https://github.com/andreacrotti/project-organizer

Last synced: about 1 year ago
JSON representation

organize all your projects supporting different SCM

Awesome Lists containing this project

README

          

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
** TODO [#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

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

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

** TODO define a grammar/syntax for a configuration file format

** TODO write doc in RST format
** TODO check if [[http://code.google.com/p/gerrit/][gerrit]] might be something which can be included (even if it's a Java program)
** TODO check when sqlite was included in Python
** TODO 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 [[https://github.com/libgit2/pygit2][libgit2]] and its python bindings to access to git
repositories from git.

** Mercurial
[[http://mercurial.selenic.com/wiki/MercurialApi][Official mercurial API]] to access the repository in an object
oriented fashion. The official API can break compatibility at every
version, use [[https://bitbucket.org/haard/hgapi][HGapi]] to get a stable interface.

** Bazaar
[[http://wiki.bazaar.canonical.com/BzrLib][BZrlib]]

** Subversion
[[http://svnbook.red-bean.com/en/1.1/ch08s02.html][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