diff --git a/README b/README index 3c0e383..62b40be 100644 --- a/README +++ b/README @@ -33,13 +33,20 @@ | Installation | | | Getting the files: + latex gitfile-info.ins Getting the documentation: + latexmk -pdf gitfile-info.dtx - Copy the following files into a TeX-readable directory: - - The following files are needed to make a new application: + Copy the following file into a TeX-readable directory: + gitfile-info.sty - The following files are needed to make a new documentation-table: + Copy the hooks into .git/hooks: + post-commit + post-merge + + Copy the init-script into a executable directory, maybe within the git-repo to post it to the + other users: + gfi-run | | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ diff --git a/dokumentation.tex b/dokumentation.tex index db137dd..182d35a 100644 --- a/dokumentation.tex +++ b/dokumentation.tex @@ -156,11 +156,11 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files} } Wenn Versionen von \LaTeX-Dateien mit git kontrolliert werden, dann kommt es vor, dass für - einen selbst, anderen Nutzern oder Entwicklern der aktuelle Entwicklungsstand der Datei, + einen selbst, andere Nutzern oder Entwickler der aktuelle Entwicklungsstand der Datei, Hinweise zum Autor und dem Datum der letzten Bearbeitung im PDF gezeigt werden sollen. Mir bekannte Pakete können zwar den Stand des Repositories auslesen, jedoch nicht für eine bestimmte Datei unterscheiden. Allerdings wird manchmal mit vielen Dateien in einem Repository - gearbeitet, die jeweils in verschiedene Versionen vorliegen. Möglicherweise soll auch ein + gearbeitet, die jeweils in verschiedenen Versionen vorliegen. Möglicherweise soll auch ein großes Projekt in mehrere \TeX-Dateien aufgeteilt werden. Dann soll dennoch für jede einzelne Datei die Versionsinfo angezeigt werden können. Dieses Paket soll diese Funktionalität liefern. @@ -171,7 +171,7 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files} \section{Änderungen} \begin{description} - \item[v0.1] Veröffentlichung + \item[v0.1] Intialisierung und erste Veröffentlichung \end{description} \section{Installation} diff --git a/gfi-run b/gfi-run index ec60a9a..86876ba 100755 --- a/gfi-run +++ b/gfi-run @@ -7,8 +7,12 @@ import time import codecs from git import Repo import locale +# Locales for date set up to de_DE +# Please edit to you needs locale.setlocale(locale.LC_ALL, 'de_DE') +# set up the git repo +# path is the current working directory pathrepo = os.getcwd() repo = Repo(pathrepo) assert not repo.bare @@ -16,15 +20,19 @@ git = repo.git headcommit = repo.head.commit index = repo.index +# check for specific file (else) or +# every tex file within the git if len(sys.argv) <= 1: + # get all the files within the git commFiles = git.ls_files(full_name=True).split("\n") - #commit = git.log('-1', format='%h').rstriMin - #cmt = subprocess.check_output('git log -1 --format="%s" ', shell=True).decode("utf-8").rstrip() + # iterate through all files and read date/author/commit and + # write in the help file for fl in commFiles: flname, flext = os.path.splitext(fl) if flext == '.tex': - rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1]) + rawdate = int(git.log('-1', fl, + pretty='format:"%at"').split('"')[1]) date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)), time.strftime("%d", time.localtime(rawdate)), time.strftime("%m", time.localtime(rawdate)), @@ -37,13 +45,14 @@ if len(sys.argv) <= 1: git.log('-1', fl, pretty='format:"%h"').split('"')[1]] f = codecs.open(flname+".gfi", "w", encoding="utf-8") f.write("% gitfile-info control file\n") - f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{" - + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") + f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + + "}{" + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n") f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}") - #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}") f.close else: + # get the specific file, read date/author/commit and + # write the help file fl = sys.argv[1] flname, flext = os.path.splitext(fl) rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1]) @@ -56,13 +65,11 @@ else: author = [git.log('-1', fl, pretty='format:"%an"').split('"')[1], git.log('-1', fl, pretty='format:"%ae"').split('"')[1]] commit = [git.log('-1', fl, pretty='format:"%H"').split('"')[1], - git.log('-1', fl, pretty='format:"%h"').split('"')[1]] + git.log('-1', fl, pretty='format:"%h"').split('"')[1]] f = codecs.open(flname+".gfi", "w", encoding="utf-8") f.write("% gitfile-info control file\n") - f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{" - + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") + f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + + "}{" + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n") f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}") - #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}") f.close - diff --git a/post-commit b/post-commit index b2e2616..4f9a7aa 100755 --- a/post-commit +++ b/post-commit @@ -1,14 +1,17 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -*- mode:python -*- -import sys import os import time import codecs from git import Repo import locale +# Locales for date set up to de_DE +# Please edit to you needs locale.setlocale(locale.LC_ALL, 'de_DE') +# set up the git repo +# path is the current working directory pathrepo = os.getcwd() repo = Repo(pathrepo) assert not repo.bare @@ -16,8 +19,11 @@ git = repo.git headcommit = repo.head.commit index = repo.index -commFiles = git.diff_tree('-r', 'HEAD', no_commit_id=True, name_only=True).split("\n") -date = [time.strftime("%d. %B %Y %H:%M", time.localtime(headcommit.authored_date)), +# get the commited/changed files and date/author/commit +commFiles = git.diff_tree('-r', 'HEAD', no_commit_id=True, + name_only=True).split("\n") +date = [time.strftime("%d. %B %Y %H:%M", + time.localtime(headcommit.authored_date)), time.strftime("%d", time.localtime(headcommit.authored_date)), time.strftime("%m", time.localtime(headcommit.authored_date)), time.strftime("%Y", time.localtime(headcommit.authored_date)), @@ -25,18 +31,15 @@ date = [time.strftime("%d. %B %Y %H:%M", time.localtime(headcommit.authored_date time.strftime("%M", time.localtime(headcommit.authored_date))] author = [headcommit.author.name, headcommit.author.email] commit = [headcommit.hexsha, headcommit.hexsha[:6]] -#commit = git.log('-1', format='%h').rstrip() - -#cmt = subprocess.check_output('git log -1 --format="%s" ', shell=True).decode("utf-8").rstrip() +# iterate through all files and write the gfi help-files for fl in commFiles: flname, flext = os.path.splitext(fl) if flext == '.tex': f = codecs.open(flname+".gfi", "w", encoding="utf-8") f.write("% gitfile-info control file\n") - f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{" - + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") + f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + + "}{" + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n") f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}") - #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}") f.close diff --git a/post-merge b/post-merge index 0dccecd..0988c7e 100755 --- a/post-merge +++ b/post-merge @@ -6,8 +6,12 @@ import time import codecs from git import Repo import locale +# Locales for date set up to de_DE +# Please edit to you needs locale.setlocale(locale.LC_ALL, 'de_DE') +# set up the git repo +# path is the current working directory pathrepo = os.getcwd() repo = Repo(pathrepo) assert not repo.bare @@ -15,11 +19,11 @@ git = repo.git headcommit = repo.head.commit index = repo.index -commFiles = git.diff_tree('-r', 'ORIG_HEAD', 'HEAD', no_commit_id=True, name_only=True).split("\n") -#commit = git.log('-1', format='%h').rstrip() - -#cmt = subprocess.check_output('git log -1 --format="%s" ', shell=True).decode("utf-8").rstrip() +# get the commited/changed files and date/author/commit +commFiles = git.diff_tree('-r', 'ORIG_HEAD', 'HEAD', + no_commit_id=True, name_only=True).split("\n") +# iterate through all files and write the gfi help-files for fl in commFiles: flname, flext = os.path.splitext(fl) if flext == '.tex': @@ -36,9 +40,8 @@ for fl in commFiles: git.log('-1', fl, pretty='format:"%h"').split('"')[1]] f = codecs.open(flname+".gfi", "w", encoding="utf-8") f.write("% gitfile-info control file\n") - f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{" - + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") + f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + + "}{" + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n") f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n") f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}") - #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}") f.close