Skip to main content

CLI tool to get Git commit informations and store them in a config file

Project description

https://badge.fury.io/py/git-app-version.svg https://travis-ci.org/csanquer/git-app-version.svg?branch=master https://scrutinizer-ci.com/g/csanquer/git-app-version/badges/quality-score.png?b=master https://scrutinizer-ci.com/g/csanquer/git-app-version/badges/coverage.png?b=master

A CLI tool written in Python to fetch Git commit informations and store them in an INI/XML/YAML/JSON file.

Typical usecase : when deploying, run this command and import the git version config file.

Requirements

  • Python 2.7 or >= 3.3

  • python pip package tool

Installation

Just run

pip install git-app-version

Usage

Help

To get help

git-app-version -h

Help result

usage: git-app-version [-h] [-V] [-v] [-q] [-o path] [-f format]
                       [-n namespace]
                       [path] [commit]

Get Git commit informations and store them in a INI/XML/YAML/JSON file.

positional arguments:
  path                  git repository path. Default is the current directory.
  commit                git commit to check. Default is HEAD.

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         display tool version
  -v, --verbose         increase verbosity : use -v or -vv
  -q, --quiet           silent mode
  -o path, --output path
                        output file path (without extension). Default is
                        '<repository-path>/version'.
  -f format, --format format
                        output file format and extension (ini/xml/yml/json).
                        Default is json.
  -n namespace, --namespace namespace
                        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.

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

This will generate a version.json file in the current directory (if this directory is a git repository).

Commit informations

  • 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 default

    e.g.: v1.1.0-3-g439e52

  • 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’]

  • branches : branches which the commit belongs,

    e.g.: [‘master’, ‘develop’]

  • 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"
    }

    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"
        }
      }
    }
  • 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'
    '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'
        '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>
      <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>
        <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
    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
    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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git-app-version-0.5.1.tar.gz (10.5 kB view hashes)

Uploaded Source

Built Distribution

git_app_version-0.5.1-py2.py3-none-any.whl (13.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page