This is for developers. Specifically those who know how to use tools, satisfy dependencies, and want to set up a development environment. It is not user-friendly.
You'll need these tools:
$ git clone --recursive https://github.com/GothenburgBitFactory/timewarrior.git timewarrior.git
The master branch always represents the more recently released version, and should be your preferred choice.
$ cd timew.git $ git checkout master # Master is the stable branch. $ cmake -DCMAKE_BUILD_TYPE=release . # 'release' for performance. $ make # Just build it.
The dev branch is always the highest numbered branch, in this
$ cd timew.git $ git checkout 1.1.0 # Dev branch $ git submodule init # Initialize the submodule for this branch $ git submodule update # Update the submodule for this branch $ cmake -DCMAKE_BUILD_TYPE=debug . # debug or release. Default: neither. $ make VERBOSE=1 # Shows details
If you do a fresh clone, the following will checkout
$ git clone --recursive -b 1.1.0 https://github.com/GothenburgBitFactory/timewarrior.git $ cmake -DCMAKE_BUILD_TYPE=debug . # debug or release. Default: neither. $ make VERBOSE=1 # Shows details
Build the debug type if you want symbols in the binary for debugging.
There are C++, Python and Bash tests, build and run them:
$ cd timew.git/test $ make VERBOSE=1 # Shows details $ ./run_all # Runs all tests silently > all.log $ ./problems # Find errors in all.log
Talk to us first - make sure you are working on something that is wanted. Patches will not be applied simply because you did the work, or because it was easy, or because you want it. Instead, the change has to be considered right for the project.
Remember the various forms of documentation involved, and the test
suite. Work on the dev branch, not
master. When you
are are ready to submit, do this:
$ git commit
Follow the standard form for commit messages, which looks like this:
Category: Short message - Details - Details
Here is a good example:
TW-1636: UUID with numeric-only first segment is not parsed properly - Switched Nibbler::getUUID to Nibbler::getPartialUUID, which caused partial UUID matching to fail sometimes. - Changed precedence to search for UUID before ID, which solves the numeric UUID problem.
Create the patch using this:
$ git format-patch HEAD^
Expect feedback. It is unlikely your patch will be accepted unmodified. Usually this is because you violated the coding style, worked in the wrong branch, or forgot about documentation and unit tests.