dlangille / git_proc_commit

Tools for processing git commits one at a time.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This script aims to process, one at a time, commits made to the FreeBSD ports tree. If successful, this proof-of-concept will become the basis for FreshPorts commit processing after the FreeBSD projects moves to using git for all commits.

Example test:

[dan@pro02:~/src/git_proc_commit] $ ./git-show-commit.sh
0d5f1c8c72d95bc46329694b2490099765002331
ab24c4bd5dffffeabdcaa9bc5f3ca1e1615c95d5
f2bfe60090b840b6d99a3288c0b745843cefcfe1
[dan@pro02:~/src/git_proc_commit] $ 

Example test with git:

$ ./git-show-commit.py
jrm
sysutils/doctl: Update to v1.31.2

Sponsored by:	DigitalOcean [1]

[1] DigitalOcean provided VM credit to test doctl

0d5f1c8c72d95bc46329694b2490099765002331

Looking at the original code example from Jan-Piet MENS (output reformated to 80 column width).

[dan@mydev:~/src/git_proc_commit] $ python3
Python 3.6.9 (default, Aug 27 2019, 04:29:05) 
[GCC 4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final 335540)] on freebsd12
Type "help", "copyright", "credits" or "license" for more information.
>>> import git
>>> repo = git.Repo("~/src/freebsd-ports")
>>> commits = list(repo.iter_commits("master", max_count=9))
>>> dir(commits[0])
['Index', 'NULL_BIN_SHA', 'NULL_HEX_SHA', 'TYPES', '__class__', '__delattr__', 
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', 
'__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', 
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', 
'__str__', '__subclasshook__', '_deserialize', '_get_intermediate_items', 
'_id_attribute_', '_iter_from_process_or_stream', '_process_diff_args', 
'_serialize', '_set_cache_', 'author', 'author_tz_offset', 'authored_date', 
'authored_datetime', 'binsha', 'committed_date', 'committed_datetime', 
'committer', 'committer_tz_offset', 'conf_encoding', 'count', 
'create_from_tree', 'data_stream', 'default_encoding', 'diff', 'encoding', 
'env_author_date', 'env_committer_date', 'gpgsig', 'hexsha', 'iter_items', 
'iter_parents', 'list_items', 'list_traverse', 'message', 'name_rev', 'new', 
'new_from_sha', 'parents', 'repo', 'size', 'stats', 'stream_data', 'summary', 
'traverse', 'tree', 'type']
>>> print(commits[0].author)
jrm
>>> print(commits[0].message)
sysutils/doctl: Update to v1.31.2

Sponsored by:	DigitalOcean [1]

[1] DigitalOcean provided VM credit to test doctl

>>> print(commits[0].hexsha)
0d5f1c8c72d95bc46329694b2490099765002331
>>> 
[dan@mydev:~/src/git_proc_commit] $ ./git-example.py
jrm
sysutils/doctl: Update to v1.31.2

Sponsored by:	DigitalOcean [1]

[1] DigitalOcean provided VM credit to test doctl

0d5f1c8c72d95bc46329694b2490099765002331

Example using git-show-commit.py duplicating git-show-commit.sh in python

[dan@mydev:~/src/git_proc_commit] $ ./git-show-commit.py
f2bfe60090b840b6d99a3288c0b745843cefcfe1
ab24c4bd5dffffeabdcaa9bc5f3ca1e1615c95d5
0d5f1c8c72d95bc46329694b2490099765002331

references:

About

Tools for processing git commits one at a time.

License:BSD 2-Clause "Simplified" License


Languages

Language:Shell 50.3%Language:Python 48.1%Language:PLpgSQL 1.6%