A Commit object has all the information of a Git commit, and much more. More specifically:
- hash (str): hash of the commit
- msg (str): commit message
- author (Developer): commit author (name, email)
- committer (Developer): commit committer (name, email)
- author_date (datetime): authored date
- author_timezone (int): author timezone (expressed in seconds from epoch)
- committer_date (datetime): commit date
- committer_timezone (int): commit timezone (expressed in seconds from epoch)
- branches (List[str]): List of branches that contain this commit
- in_main_branch (Bool): True if the commit is in the main branch
- merge (Bool): True if the commit is a merge commit
- modified_files (List[ModifiedFile]): list of modified files in the commit (see :ref:`modifiedfile_toplevel`)
- parents (List[str]): list of the commit parents
- project_name (str): project name
- project_path (str): project path
- deletions (int): number of deleted lines in the commit (as shown from –shortstat).
- insertions (int): number of added lines in the commit (as shown from –shortstat).
- lines (int): total number of added + deleted lines in the commit (as shown from –shortstat).
- files (int): number of files changed in the commit (as shown from –shortstat).
- dmm_unit_size (float): DMM metric value for the unit size property.
- dmm_unit_complexity (float): DMM metric value for the unit complexity property.
- dmm_unit_interfacing (float): DMM metric value for the unit interfacing property.
Example:
for commit in Repository('path/to/the/repo').traverse_commits(): print( 'The commit {} has been modified by {}, ' 'committed by {} in date {}'.format( commit.hash, commit.author.name, commit.committer.name, commit.committer_date ) )