summaryrefslogtreecommitdiff
path: root/morphlib/gitversion.py
Commit message (Collapse)AuthorAgeFilesLines
* Fix behaviour of `morph --version`Pedro Alvarez2014-09-301-2/+4
| | | | | | | | | | | | | | | | Currently, if morph is installed in the system, `morph --version` prints the sha1 of the version installed. $ morph --version e8adedb8f3f27d9212caf277b8e8f7c6792a20c2 If you run morph from git, the output will be something similar to the following. $ morph --version baserock-14.26-124-g7b73af4 This patch changes the behaviour of the latter to match the former.
* Make morph get its version from git.Richard Maw2013-01-281-0/+57
When morph is built, it writes various version information from git into morphlib. When morphlib is loaded it attempts to read this version information. if it cannot be found then it checks whether morphlib is being run from inside a git checkout, if it is then it reads the information that way. If it isn't in a git checkout then it raises an exception as builds made in such a fashion are not reproducible. The git version information retained is: 1. The output of git describe This is a relatively human-friendly way of knowing a version and gives a reasonably short output string. This will end with `-unreproducible` if there were uncommitted changes. 2. The commit sha1, so the exact part of Morph's history can be found 3. The tree sha1, so if the branch has been rebased rather than merged such that the commit is lost, you may still be able to find it, though it requires a git-wizard to check it out 4. The branch of morph, so that it's easier to see if the Further possible changes to increase reproducibility include: 1. Not allowing `python setup.py build` if there are uncommitted changes 2. Failing to run with uncommitted changes (recommended against since it will just annoy developers who are making changes to morph, and make them commit just to shut it up, then destroy the history later) Requiring an extra flag to build in this case may work better. 3. Reading the uncommitted changes into a tree object and including that would allow it to be recovered if the tree was later committed. 4. Checking whether the commit has been pushed upstream as well. Too annoying to work.