tm
is a tool developed in pure Python 3 that allows you to manage and track the development of a project by defining tasks. These tasks represent features, and are synchronized with your project's Git repository, so that each time you create or complete a task a branch is created or merged, respectively. The branch management is performed by the tool itself, you only have to indicate when you started or completed the task.
Once your local Git repository is initialized and a remote added, then tm
must be initialized to manage the project's tasks:
$ cd <project_dir>
$ tm init
Task manager initialized in project.
After running tm init
a log file is created along with the tasks database.
When a new feature is needed, a task should be created. The creation of a task involves adding a new entry to the tasks database. There are four attributes that must be completed to successfully create the task: its unique identifier (used to also identify the feature branch), a verbose description of the task (which will then be used as commit message), a list of tasks this new task may depend on and its priority.
$ tm create
New task creation.
Identifier: <unique_id>
Description: <commit_message>
Depends from: <tasks_to_complete_first>
Priority: <integer>
Task successfully created.
To start working on a created task you must use the unique identifier defined in the task creation:
$ tm start <unique_id>
...
Task successfully labels as started.
After this point a new branch named after the identifier value is created. This branch is the merged with master
/develop
when labeled as completed. If a second new task is created and then started before the previous one has been labeled as completed, the merging will then be done with the branch name of the first incomplete task.
Once you completed the feature the task represents, you are ready to label it as completed. By doing this the branch in which this task was being developed gets merged with master
/develop
.
$ tm completed <unique_id>
...
Task successfully labeled as completed.
The only task attribute that can not be modified is its identifier. The rest can be modified by running:
$ tm update <unique_id>
Update task <unique_id>
New description: ...
New dependencies: ...
New priority: ...
If any of the fields is left blank, then it is considered as unmodified.
Local commits can be performed for a clearer workflow. These are then pushed to the remote repository when the task is completed. This can be achieved by running:
$ tm partial <unique_id> <partial_commit_msg>
Clone tm
using
$ git clone https://github.com/tulians/tm
Extract the files from the compressed file and run:
$ python3 tm/config.py [-installation_and_executable_dir]
- Add
master
/develop
branches to merge to.
This project is under development, so if you found any aspect that can be optimized or found a bug that must be fixed, please open an issue. Alternatively, you can contact me by e-mail on jtulians@gmail.com.
MIT