CLI tool to get Git commit informations and store them in a config file
Project description
Git App Version
A CLI tool written in Python to fetch Git commit informations and store them in a config file.
supported formats :
- JSON
- YAML
- XML
- INI
- CSV
- Shell script variables
Typical usecase : when deploying, run this command and import the git version config file.
Requirements
- Python 2.7 or >= 3.4
- python pip package tool
Installation
Just run :
pip install git-app-version
Or download latest binary release for Linux amd64 :
wget https://github.com/csanquer/git-app-version/releases/download/v1.0.0/git-app-version_linux_amd64.tar.gz
tar -xvzf git-app-version_linux_amd64.tar.gz
sudo mv git-app-version /usr/local/bin/
sudo chmod a+x /usr/local/bin/git-app-version
Usage
Help
To get help
git-app-version -h
Help result
Usage: git-app-version [OPTIONS] [REPOSITORY] [COMMIT]
Get Git commit informations and store them in a config file
REPOSITORY git repository path, Default is the current directory.
COMMIT git commit to check, Default is HEAD.
Options:
-V, --version
-q, --quiet silent mode
-o, --output TEXT output file path (without extension).
Default is '<repository-path>/version'.
-f, --format [all|json|yml|xml|ini|csv|sh]
output file format and extension, use 'all'
to output all format, can be set several
times , Default is json.
-n, --namespace TEXT namespace like notation in version file, use
dot separator to segment namespaces e.g.:
'foo.bar.git'. Default is 'app_version' for
XML and INI and no namespace for JSON and
YAML. Never used for CSV or Shell file.
-m, --meta METADATA meta data to add, format = "<key>=<value>",
can be set several times
-d, --csv-delimiter TEXT CSV delimiter, default=","
-e, --csv-eol [lf|crlf] CSV end of line, lf = Unix new line, crlf =
windows new line, default=lf
-u, --csv-quote TEXT CSV quoting character, default='"'
-h, --help Show this message and exit.
Get Commit Informations
To store git commit informations into a json file
# git-app-version -o <output-file-without-extension> -f <file-format> <my-git-repository>
git-app-version -o version -f json
output :
Git commit :
---------------- ----------------------------------------
abbrev_commit 40aaf83
author_date 2015-09-05T16:14:16+0000
author_email paul.durand@example.com
author_name Paul Durand
author_timestamp 1441469656
branches master develop
commit_date 2015-09-05T16:14:16+0000
commit_timestamp 1441469656
committer_email paul.durand@example.com
committer_name Paul Durand
deploy_date 2016-06-21T09:33:01+0000
deploy_timestamp 1466501581
full_commit 40aaf83894b98898895d478f8b7cc4a866b1d62c
message new feature
top_branches master
version v1.1.0-3-g439e52
---------------- ----------------------------------------
written to :
<my-git-repository>/version.json
This will generate a version.json file in the current directory (if this directory is a git repository).
You can generate several format at once :
git-app-version -o version -f json -f yml -f xml -f ini -f sh
Metadata : adding custom fields
You can add custom metadata fields with the --meta / -m option (can be used several times) :
git-app-version -m foo=bar -m custom_key=custom_value
output :
Git commit :
---------------- ----------------------------------------
abbrev_commit 40aaf83
author_date 2015-09-05T16:14:16+0000
author_email paul.durand@example.com
author_name Paul Durand
author_timestamp 1441469656
branches master develop
commit_date 2015-09-05T16:14:16+0000
commit_timestamp 1441469656
committer_email paul.durand@example.com
committer_name Paul Durand
custom_key custom_value
deploy_date 2016-06-21T09:33:01+0000
deploy_timestamp 1466501581
foo bar
full_commit 40aaf83894b98898895d478f8b7cc4a866b1d62c
message new feature
top_branches master
version v1.1.0-3-g439e52
---------------- ----------------------------------------
written to :
<my-git-repository>/version.json
Commit informations fields
-
full_commit : Git SHA1 commit hash,
e.g.: 40aaf83894b98898895d478f8b7cc4a866b1d62c
-
abbrev_commit : Git SHA1 commit hash abbrev notation (x significant first characters),
e.g.: 40aaf83
-
version : result of the command
git describe --tags --always, see git-describe, if no version is found, the abbrev commit will be used per defaulte.g.: v1.1.0-3-g439e52
-
message : Git commit message
-
commit_date : Git commit date in iso8601 format,
e.g.: 2016-03-01T09:33:33+0000
-
commit_timestamp : Git commit date in timestamp format,
e.g.: 1456824813
-
author_date : Git author date in iso8601 format,
e.g.: 2016-03-02T11:33:45+0000
-
author_timestamp : Git author date in timestamp format,
e.g.: 1456918425
-
deploy_date : current date (when running the tool) in iso8601 format,
e.g.: 2016-03-02T11:33:45+0000
-
deploy_timestamp : current date (when running the tool) in timestamp format,
e.g.: 1456918425
-
branches : branches which the commit belongs,
e.g.: ['master', 'develop']
-
top_branches : branches where the commit is the HEAD commit,
e.g.: ['master']
-
committer_name : Git committer name,
e.g.: Paul Durand
-
committer_email : Git committer email,
e.g.: paul.durand@example.com
-
author_name : Git author name,
e.g.: Paul Durand
-
author_email : Git author email,
e.g.: paul.durand@example.com
File formats
-
json
without namespace
git-app-version -f json
result
{ "version": "v1.1.0-3-g439e52", "full_commit": "40aaf83894b98898895d478f8b7cc4a866b1d62c", "abbrev_commit": "40aaf83", "branches": [ "develop", "master" ], "top_branches": [ "master" ], "committer_email": "paul.durand@example.com", "committer_name": "Paul Durand", "author_name": "Paul Durand", "author_email": "paul.durand@example.com", "commit_date": "2015-09-05T16:14:16+0000", "commit_timestamp": "1441469656", "author_date": "2015-09-05T16:14:16+0000", "author_timestamp": "1441469656", "deploy_date": "2016-06-21T09:33:01+0000", "deploy_timestamp": "1466501581", "message": "new feature" }
with namespace
git-app-version -f json -n git.infos
result
{ "git": { "infos": { "version": "v1.1.0-3-g439e52", "full_commit": "40aaf83894b98898895d478f8b7cc4a866b1d62c", "abbrev_commit": "40aaf83", "branches": [ "develop", "master" ], "top_branches": [ "master" ], "committer_email": "paul.durand@example.com", "committer_name": "Paul Durand", "author_name": "Paul Durand", "author_email": "paul.durand@example.com", "commit_date": "2015-09-05T16:14:16+0000", "commit_timestamp": "1441469656", "author_date": "2015-09-05T16:14:16+0000", "author_timestamp": "1441469656", "deploy_date": "2016-06-21T09:33:01+0000", "deploy_timestamp": "1466501581", "message": "new feature" } } }
-
yml
without namespace
git-app-version -f yml
result
--- 'version': 'v1.1.0-3-g439e52' 'full_commit': '40aaf83894b98898895d478f8b7cc4a866b1d62c' 'abbrev_commit': '40aaf83' 'committer_name': 'Paul Durand' 'committer_email': 'paul.durand@example.com' 'author_name': 'Paul Durand' 'author_email': 'paul.durand@example.com' 'commit_date': '2015-09-05T16:14:16+0000' 'commit_timestamp': '1441469656' 'author_date': '2015-09-05T16:14:16+0000' 'author_timestamp': '1441469656' 'deploy_date': '2016-06-21T09:32:57+0000' 'deploy_timestamp': '1466501577' 'message': 'new feature' 'branches': - 'develop' - 'master' 'top_branches': - 'master'
with namespace
git-app-version -f yml -n git.infos
result
--- 'git': 'infos': 'version': 'v1.1.0-3-g439e52' 'full_commit': '40aaf83894b98898895d478f8b7cc4a866b1d62c' 'abbrev_commit': '40aaf83' 'committer_name': 'Paul Durand' 'committer_email': 'paul.durand@example.com' 'author_name': 'Paul Durand' 'author_email': 'paul.durand@example.com' 'commit_date': '2015-09-05T16:14:16+0000' 'commit_timestamp': '1441469656' 'author_date': '2015-09-05T16:14:16+0000' 'author_timestamp': '1441469656' 'deploy_date': '2016-06-21T09:32:57+0000' 'deploy_timestamp': '1466501577' 'message': 'new feature' 'branches': - 'develop' - 'master' 'top_branches': - 'master' -
xml
with default namespace
git-app-version -f xml
result
<?xml version='1.0' encoding='UTF-8'?> <app_version> <version>v1.1.0-3-g439e52</version> <full_commit>40aaf83894b98898895d478f8b7cc4a866b1d62c</full_commit> <abbrev_commit>40aaf83</abbrev_commit> <commit_date>2015-09-05T16:14:16+0000</commit_date> <commit_timestamp>1441469656</commit_timestamp> <author_date>2015-09-05T16:14:16+0000</author_date> <author_timestamp>1441469656</author_timestamp> <deploy_date>2016-06-21T09:32:53+0000</deploy_date> <deploy_timestamp>1466501573</deploy_timestamp> <committer_name>Paul Durand</committer_name> <committer_email>paul.durand@example.com</committer_email> <author_name>Paul Durand</author_name> <author_email>paul.durand@example.com</author_email> <message>new feature</message> <branches>develop</branches> <branches>master</branches> <top_branches>master</top_branches> </app_version>
with namespace
git-app-version -f xml -n git.infos
result
<?xml version='1.0' encoding='UTF-8'?> <git> <infos> <version>v1.1.0-3-g439e52</version> <full_commit>40aaf83894b98898895d478f8b7cc4a866b1d62c</full_commit> <abbrev_commit>40aaf83</abbrev_commit> <commit_date>2015-09-05T16:14:16+0000</commit_date> <commit_timestamp>1441469656</commit_timestamp> <author_date>2015-09-05T16:14:16+0000</author_date> <author_timestamp>1441469656</author_timestamp> <deploy_date>2016-06-21T09:32:53+0000</deploy_date> <deploy_timestamp>1466501573</deploy_timestamp> <committer_name>Paul Durand</committer_name> <committer_email>paul.durand@example.com</committer_email> <author_name>Paul Durand</author_name> <author_email>paul.durand@example.com</author_email> <message>new feature</message> <branches>develop</branches> <branches>master</branches> <top_branches>master</top_branches> </infos> </git>
-
ini
with default namespace
git-app-version -f ini
result
[app_version] version = v1.1.0-3-g439e52 full_commit = 40aaf83894b98898895d478f8b7cc4a866b1d62c abbrev_commit = 40aaf83 commit_date = 2016-03-01T09:33:33+0000 commit_timestamp = 1456824813 author_date = 2016-03-01T09:33:33+0000 author_timestamp = 1456824813 deploy_date = 2016-03-02T11:33:45+0000 deploy_timestamp = 1456918425 message = new feature author_name = Paul Durand author_email = paul.durand@example.com committer_name = Paul Durand committer_email = paul.durand@example.com top_branches = ['master'] branches = ['master','develop']
with namespace
git-app-version -f ini -n git.infos
result
[git.infos] version = v1.1.0-3-g439e52 full_commit = 40aaf83894b98898895d478f8b7cc4a866b1d62c abbrev_commit = 40aaf83 commit_date = 2016-03-01T09:33:33+0000 commit_timestamp = 1456824813 author_date = 2016-03-01T09:33:33+0000 author_timestamp = 1456824813 deploy_date = 2016-03-02T11:33:45+0000 deploy_timestamp = 1456918425 message = new feature author_name = Paul Durand author_email = paul.durand@example.com committer_name = Paul Durand committer_email = paul.durand@example.com top_branches = ['master'] branches = ['master','develop']
-
csv
you can configure CSV format with the option --csv-delimiter , --csv-eol and --csv-quote
git-app-version -f csv --csv-delimiter ',' --csv-eol lf --csv-quote '"'
result
version,v1.1.0-3-g439e52 full_commit,40aaf83894b98898895d478f8b7cc4a866b1d62c abbrev_commit,40aaf83 commit_date,2016-03-01T09:33:33+0000 commit_timestamp,1456824813 author_date,2016-03-01T09:33:33+0000 author_timestamp,1456824813 deploy_date,2016-03-02T11:33:45+0000 deploy_timestamp,1456918425 message,new feature author_name,Paul Durand author_email,paul.durand@example.com committer_name,Paul Durand committer_email,paul.durand@example.com top_branches,"['master']" branches,"['master','develop']"
-
sh (shell script variables)
git-app-version -f sh
result
version="v1.1.0-3-g439e52" full_commit="40aaf83894b98898895d478f8b7cc4a866b1d62c" abbrev_commit="40aaf83" commit_date="2016-03-01T09:33:33+0000" commit_timestamp="1456824813" author_date="2016-03-01T09:33:33+0000" author_timestamp="1456824813" deploy_date="2016-03-02T11:33:45+0000" deploy_timestamp="1456918425" message="new feature" author_name="Paul Durand" author_email="paul.durand@example.com" committer_name="Paul Durand" committer_email="paul.durand@example.com" top_branches="['master']" branches="['master','develop']"
Licensing
Project under GPL v3 License
Copyright (C) 2016 Charles Sanquer
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git-app-version-1.0.2.tar.gz.
File metadata
- Download URL: git-app-version-1.0.2.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2646f0ffc74d6ad6ffd4403630325e51fb46a20b1533973e69671332eb005a8
|
|
| MD5 |
ba24b28054e28ff3487d3948ea0d12f9
|
|
| BLAKE2b-256 |
bd6d46541081b255a2fef113a1236531ea63a520c35e1d43e7c897a2076ffc32
|
File details
Details for the file git_app_version-1.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: git_app_version-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84fb1f78733b8d2c382be8253accc30bf6816c9a5377d764b1482a83870adeff
|
|
| MD5 |
156f3970ed494312f0e0dbf2f382120b
|
|
| BLAKE2b-256 |
6be2d7383fc96d9929695b53de2f2f1e7a0599db8aac9b1f9510dce6334712d8
|