From 3c2aabbdf5ac29fd7078cab76b7ad4fa33d66156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Hilbig?= Date: Thu, 23 Jun 2016 18:53:02 +0200 Subject: [PATCH] =?UTF-8?q?Doku=20vervollst=C3=A4ndigt,=20kleinere=20Fehle?= =?UTF-8?q?r=20bereinigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dokumentation.tex | 422 ++++++++++++++++++++++++++++++++++++++++------ gfi-run | 27 ++- gitfile-info.sty | 4 +- post-commit | 12 +- post-merge | 12 +- 5 files changed, 393 insertions(+), 84 deletions(-) diff --git a/dokumentation.tex b/dokumentation.tex index e1caae9..4778971 100644 --- a/dokumentation.tex +++ b/dokumentation.tex @@ -7,29 +7,41 @@ \usepackage[usenames,dvipsnames,svgnames,table]{xcolor} \definecolor{blau}{rgb}{0,0,0.75} \definecolor{orange}{rgb}{0.8,0.3,0} -%\usepackage[% -% backend=biber, -% sortlocale=de_DE, -% style=authoryear, -% bibencoding=UTF8, -% block=space, -% autocite=inline, -% language=ngerman, -%]{biblatex} -%\addglobalbib{.bib} -%\renewcommand*{\mkbibnamelast}{\textsc} -%\DeclareCiteCommand{\citeauthorfull} -% {% -% \boolfalse{citetracker}% -% \boolfalse{pagetracker}% -% \usebibmacro{prenote}} -% {\ifciteindex% -% {\indexnames{labelname}} -% {}% -% \printnames[first-last]{author}} -% {\multicitedelim} -% {\usebibmacro{postnote}} +\begin{filecontents}{gitfile-info.bib} + @electronic{gitpython, + editor = "gitpython-developers", + month = {Jun}, + year = "2016", + title = "GitPython", + subtitle = "GitPython is a python library used to interact with Git repositories", + url = {https://github.com/gitpython-developers/GitPython}, + urldate = {2016-06-23}, + } +\end{filecontents} +\usepackage[% + backend=biber, + sortlocale=de_DE, + style=authoryear, + bibencoding=UTF8, + block=space, + autocite=inline, + language=ngerman, +]{biblatex} +\addglobalbib{gitfile-info.bib} +\renewcommand*{\mkbibnamelast}{\textsc} + +\DeclareCiteCommand{\citeauthorfull} + {% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\ifciteindex% + {\indexnames{labelname}} + {}% + \printnames[first-last]{author}} + {\multicitedelim} + {\usebibmacro{postnote}} \usepackage{hyperref} @@ -58,30 +70,7 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files} \newrefformat{klasse}{Klasse~\ref{#1}, S.\,\pageref{#1}} \newrefformat{fig}{Abb.\,\ref{#1}} \newrefformat{tab}{Tab.\,\ref{#1}} -\newrefformat{bsp}{Bsp.\,\ref{#1}, S.\,\pageref{#1}} \newcommand{\refMacro}[1]{Makro \texttt{\textbackslash#1}, S.\,\pageref{#1}} -\DeclareFloatingEnvironment[name={Bsp.}, - listname={Beispielverzeichnis}, within=section]{example} -\floatstyle{ruled} -\restylefloat{example} -\NewDocumentEnvironment{beispiel}{o o m}{ - \begin{example}[ht!] - \centering - \vspace{0.2cm} - \IfNoValueTF{#2}{ - \caption{#3} - }{ - \caption[#2]{#3} - } - }{ - \IfNoValueTF{#1}{ - \label{\theexample} - }{ - \label{#1} - } - \vspace{0.2cm} - \end{example} - } \DisableCrossrefs \makeatletter \makeatother @@ -111,13 +100,12 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files} numberstyle=\tiny\color{gray}, keywordstyle=\color{OliveGreen}\textbf, commentstyle=\color{gray}\itshape, - stringstyle=\color{mauve}, + stringstyle=\color{orange}, morekeywords={ - minisec, subsection, glqq, grqq, euro, Name, Vorname, Street, - Plz, Stadt, MeinBeruf, EMail, Tel, Mobile, Sta, GebDatum, ID, - Anhang, includepdf, includepdfmerge, cventry, cvlistitem, - cvlanguage, definecolor, maketitle, makePerson, cp, ln, mkdir, - todayOrt, todayDatum, + minisec, subsection, glqq, grqq, euro, href, + gfiGetAuthorName, gfiGetAuthorMail, gfiGetCommit, gfiGetCommitAbr, + gfiGetDate, gfiGetMin, gfiGetHour, gfiGetDay, gfiGetMonth, + gfiGetYear, gfiInfo, }, literate=% {Ö}{{\"O}}1 @@ -131,16 +119,338 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files} {«}{{\flqq}}4 {~}{$\sim$}1 } +\newcommand{\wM}[1]{\texttt{\textbackslash#1}} \xspaceaddexceptions{\guillemotright,\guillemotleft} +\usepackage{gitfile-info} +\usepackage{scrpage2} +\pagestyle{scrheadings} +\ifoot{Commit: \gfiGetCommitAbr} +\ofoot{\thepage} +\ihead{\gfiGetAuthorName} +\ohead{Stand: \gfiGetDate} + \CheckSum{0} -\author{André Hilbig} \begin{document} - \title{Gitfile-Info} - %\clearpage - %\addcontentsline{toc}{section}{Literatur} - %\printbibliography + \title{Gitfile-Info\newline\newline + \LaTeX-Paket zum Auslesen von git Ver"-sions"-in"-for"-ma"-tion"-en für eine + Datei\newline\newline + \LaTeX-package for reading git commit info for specific files + } + \author{Andr\'e Hilbig -- \href{mailto:mail@andrehilbig.de}{mail@andrehilbig.de}} + \date{\today} + \maketitle + + \begin{abstract} + \foreignlanguage{english}{ + If you are using git to control versions of \LaTeX-files, you may want to show yourself or + other users or devs the current version of the file, information about the author and last + edited date. All packages for git known make that kind of information available for the whole + repository. But sometimes you have a lot of files within the same repository in different + versions, from different authors etc. Perhaps you also split up a big project in small files + and want to show within the document who had edited what. This package gives you the + opportunity to do so. + } + + 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, + 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 + 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. + \end{abstract} + \begin{multicols}{2} + \tableofcontents + \end{multicols} + + \section{Änderungen} + \begin{description} + \item[v0.1] Veröffentlichung + \end{description} + + \section{Installation} + \subsection{Systemanforderungen} + Um die Informationen über einzelne Dateien aus dem git auszulesen, müssen entsprechende + Scripte bzw. Hooks innerhalb des Repositories platziert werden. Damit eine möglichst breite + Nutzbarkeit möglich ist, habe ich mich dazu entschieden mit Python und der + gitpython-Bibliothek zu arbeiten. + + \begin{itemize} + \item Python>=3 + \item gitpython: \fullcite{gitpython} + + (kann über \verb|pip| installiert werden) + \end{itemize} + + \textbf{Hinweis:} Die Scripte werden in erster Linie für Unix-basierte Betriebssysteme + geschrieben. Support für andere Systeme kann und möchte ich nicht leisten. + + \subsection{Automatische Installation} + Das Paket ist über \verb|CTAN| verfügbar und kann so mit dem \verb|tlmgr| bzw. der + Paketverwaltung des Betriebssystems\footnote{Leider halten viele Distributionen ihre + \LaTeX-Installationen nicht aktuell. Daher wird empfohlen die direkten Quellen, etwa von + |texlive|, zu verwenden.} abgerufen werden. + + \subsection{Manuelle Installation} + Falls eine automatisierte Installation nicht möglich ist, können die Pakete auch manuell + installiert werden. Es wird jedoch empfohlen, eine aktuelle Distribution zu verwenden, etwa + \verb|texlive2016|. Für Versionen davor kann keine Kompatibilität gewährleistet werden. Zur + Installation werden die Dateien \verb|gitfile-info.ins| und \verb|gitfile-info.dtx| benötigt. + + \begin{itemize} + \item Erzeugung der Paket- und Klassendateien + + \begin{lstlisting}[gobble=12,numbers=none,language=bash,% + linewidth=0.7\textwidth,resetmargins=false] + latex gitfile-info.dtx + \end{lstlisting} + \item Die erzeugte Paketdatei (*.sty) muss in einem für \TeX\ lesbarem Verzeichnis platziert + werden. Für eine lokale Installation bietet sich dafür + + \verb|~/texmf/tex/latex/bewerbung/| + + an. + \item Außerdem werden die drei Python-Scripte + + \verb|gfi-run|, \verb|post-commit| und \verb|post-merge| + + erstellt. Diese Dateien müssen im Repository platziert werden + (vgl. \prettyref{sec:installation-git}). + \end{itemize} + + \subsection{Einrichtung des Repositories}\label{sec:installation-git} + Die beiden Hooks \verb|post-commit| und \verb|post-merge| müssen innerhalb des Repositories im + Verzeichnis \verb|.git/hooks| als ausführbare Dateien platziert werden. + \begin{description} + \item[\verb|post-commit|] wird bei jedem Commit ausgeführt (nachdem der Commit vollständig + beendet ist) und schreibt für die veränderten \TeX-Dateien Änderungen in eine Hilfsdatei. + \item[\verb|post-merge|] wird nach jedem merge (erfolgreich und nicht erfolgreich -- + explizit auch nach einem pull) ausgeführt, um Veränderungen in die Hilfsdatei einzutragen. + \end{description} + + Außerdem sollte das Script \verb|gfi-run| möglichst für jeden Nutzer im Repository ausführbar + platziert werden. Wird das Script ohne Parameter ausgeführt liest es sämtliche unter + Versionsverwaltung stehende Dateien aus und erstellt die passenden Hilfsdateien. Wird dem + Script eine \TeX-Datei (inkl. Endung) übergeben, wird die Hilfsdatei für diese spezielle Datei + neu erstellt. + \begin{lstlisting}[gobble=10,numbers=none,language=bash,% + linewidth=0.7\textwidth,resetmargins=false] + # alle *.tex-Dateien aktualisieren + python gfi-run + # eine spezielle *.tex-Datei aktualisieren + python gfi-run datei.tex + \end{lstlisting} + + \textbf{Hinweis:} Die drei Dateien sollten Nutzern zur Verfügung gestellt werden. + Typischerweise sind sie nach einem Clone nicht im Baum enthalten. Jeder Nutzer muss sich die + Hooks selbstständig einrichten -- außer es werden entsprechende Konfigurationen festgelegt. + + Außerdem muss in der \verb|*.gitignore| der Filter \verb|*.gfi| festgelegt werden, da die + Hilfsdateien in \textbf {keinem} Fall unter Versionsverwaltung stehen dürfen. Daher muss ein + Nutzer nach einem \textit{frischen} Clone das Script \verb|gfi-run| aufrufen, um alle + Hilfsdateien lokal zu erstellen. + + \section{Funktionsweise} + \subsection{Vorüberlegungen} + Zunächst stand die Überlegung im Raum, Meta-Daten ähnlich wie beim Paket \verb|svninfo| direkt + in die betreffenden \TeX-Dateien einzutragen. Dadurch wird jedoch der Arbeitsstand verändert + und der eingetragene Commit ist nicht mehr aktuell. Es müsste ein erneuter Commit erfolgen + usw. Hier gäbe es die Möglichkeit, automatisierte Commits zu erstellen. Diese würden jedoch + das Repository aufblähen. + + Daher entschied ich mich dafür, die passenden Meta-Daten in eine Hilfsdatei (\verb|*.gfi|) + einzutragen. Hier können per simplem \LaTeX-Befehl Metadaten eingegeben werden. + + \subsection{Umsetzung} + Bei jedem Commit oder Pull gehen die Scripte alle geänderten \TeX-Dateien durch und + aktualisieren die entsprechenden Hilfsdateien. Hier werden \textbf{nur} Dateien mit der Endung + \verb|*.tex| berücksichtigt! Bei Problemen kann das Script \verb|gfi-run| per Hand aufgerufen + werden, um eine Aktualisierung zu erzwingen (vgl. \prettyref{sec:installation-git}). + + + \section{Nutzung des Pakets} + Alle Makros geben immer die Versionsinformationen für die \textit{aktuelle} Datei zurück, sofern + diese geeignet geladen wurde (vgl. \prettyref{sec:nutzung-include}). Das Paket wird dazu in der + Präambel des Dokumentes geladen. + \begin{lstlisting}[gobble=8,numbers=none,% + linewidth=0.7\textwidth,resetmargins=false] + \usepackage{gitfile-info} + \end{lstlisting} + Weitere Optionen müssen nicht angegeben werden. Sofern notwendige Hilfsdateien mit der Endung + \verb|*.gfi| noch nicht vorhanden sind, werden alle Makros mit Standardwerten belegt und eine + Warnung ausgegeben. + + \subsection{Auslesen der Metadaten} + \DescribeMacro{\gfiGet} + Über die \verb|\gfiGet*|-Makros können die Metadaten aus dem Repository ausgelesen werden. + + \begin{description} + \item[\wM{gfiGetDay}] gibt den Tag der letzten Änderung als zweistellige Ziffer zurück. + \item[\wM{gfiGetMonth}] gibt den Monat der letzten Änderung als zweistellige Ziffer zurück. + \item[\wM{gfiGetYear}] gibt das Jahr der letzten Änderung als zweistellige Ziffer zurück. + \item[\wM{gfiGetHour}] gibt die Stunde der letzten Änderung als zweistellige Ziffer zurück. + \item[\wM{gfiGetMin}] gibt die Minute der letzten Änderung als zweistellige Ziffer + zurück. + \item[\wM{gfiGetDate}] gibt das volle Datum der letzten Änderung mit Uhrzeit im Format + \verb|dd. Monat yyyy HH:MM| zurück\footnote{Das Format wird durch die Scripte vorgegeben und muss in + diesen ggfs. angepasst werden, sofern eine Lokalisierung gewünscht ist (vgl. + \prettyref{sec:implementierung-scripte})} + \item[\wM{gfiGetAuthorName}] gibt den Namen des Autors der letzten Änderung zurück. + \item[\wM{gfiGetAuthorMail}] gibt die E-Mailadresse des Autors der letzten Änderung zurück. + \item[\wM{gfiGetCommit}] gibt den Hash des letzten Commits zurück. + \item[\wM{gfiGetCommitAbr}] gibt die Kurzform des letzten Commits zurück. + \end{description} + + \subsection{Versionsinfo} + \DescribeMacro{\gfiInfo} + Sofern eine kleine Zusammenfassung der aktuellen Datei gezeigt werden soll, kann dazu das Makro + + |\gfiInfo|\oarg{Hashlänge}\oarg{Datumsformat}\oarg{Autorformat}\oarg{tcolorbox} + + benutzt werden. Sofern alle optionalen Argumente leer gelassen werden, wird der lange Hash, das + Standard \wM{gfiGetDate} und der Name des Autors als Hyperlink auf die E-Mailadresse in einer + |tcolorbox| mit dem Namen |gfiInfoBox| ausgegeben. + + \gfiInfo + + \begin{description} + \item[Hashlänge] kann durch Angabe von |abr| als verkürzter Hash ausgegeben werden. Standard: + lang. + \item[Datumsformat, Autorformat] können jeweils beliebige \TeX-Befehle enthalten. Standard: + langes Datum und Name als Hyperlink. + \item[tcolorbox] kann einer beliebigen über |\newtcolorbox{}| eingeführten tcolorbox + entsprechen. Standard: |gfiInfoBox|. + \end{description} + + \DescribeMacro{gfiInfoBox} + Durch Verwendung der definierten Box \verb|gfiInfoBox| können auch beliebige andere + Zusammenstellungen erstellt werden. + + \begin{lstlisting}[gobble=6,] + \begin{gfiInfoBox} + \vspace{1mm} + Die letzte Änderung wurde durch den Autor \gfiGetAuthorName\ + (\href{mailto:\gfiGetAuthorMail}{\gfiGetAuthorMail}) am + \gfiGetDay.\gfiGetMonth.\gfiGetYear\ um + \gfiGetHour:\gfiGetMin\,Uhr commited. Die letzte Änderung + hat den Commit \gfiGetCommitAbr. + \vspace{1mm} + \end{gfiInfoBox} + \end{lstlisting} + + \begin{gfiInfoBox} + \vspace{1mm} + Die letzte Änderung wurde durch den Autor \gfiGetAuthorName\ + (\href{mailto:\gfiGetAuthorMail}{\gfiGetAuthorMail}) am \gfiGetDay.\gfiGetMonth.\gfiGetYear\ um + \gfiGetHour:\gfiGetMin\,Uhr commited. Die letzte Änderung hat den Commit \gfiGetCommitAbr. + \vspace{1mm} + \end{gfiInfoBox} + + \subsection{Laden weiterer \TeX-Dateien}\label{sec:nutzung-include} + Ähnlich wie im Paket \verb|svninfo| soll auch die Aufsplittung eines größeren Projekts in + mehrere Teildateien mit den entsprechenden Versionen der einzelnen Dateien auslesbar sein. Dafür + müssen diese Dateien ebenfalls die Endung \verb|*.tex| haben, um von den Scripten erkannt zu + werden. + + \DescribeMacro{gfiInclude} + \DescribeMacro{gfiInput} + Im Hauptdokument werden die Metadaten automatisch beim Beginn geladen. Sofern eine weitere Datei + per \wM{include} oder \wM{input} geladen werden sollen, müssen dafür die Befehle + + |\gfiInclude|\marg{Datei} bzw. |\gfiInput|\marg{Datei} + + genutzt werden. Die Endung der Datei sollte dabei \textbf{nicht} mit angegeben werden. Intern + werden die jeweiligen Befehle zum Laden einer weiteren Datei entsprechend genutzt. Außerdem wird + die zugehörige Hilfsdatei eingebunden, um die notwendigen Metadaten zu erhalten. Nachdem die + inkludierte Datei vollständig bearbeitet wurde, werden die Metadaten der vorherigen bzw. dann + aktuellen Datei geladen. Es ist auch möglich, beliebige Verschachtelungen vorzunehmen. + + + + \section{Implementierung} + \subsection{Paket} + Das Paket lädt automatisch die zugehörige Hilfsdatei eines Hauptdokuments über den + entsprechenden \wM{jobname}. Der Nutzer musst hierfür keine Anpassung vornehmen. Sollten + weitere Dokumente in eingebunden werden, müssen die bereitgestellten Befehle genutzt werden, + sofern die zugehörigen Versioninformationen geladen werden sollen (vgl. + \prettyref{sec:nutzung-include}). Die Hilfsdatei trägt den selben Namen, wie die zugehörige + \TeX-Datei und enthält passende Aufrufe des \wM{gfiSet*}-Makros. + + \DescribeMacro{\gfiSetDate} + |\gfiSetDate|\marg{Tag}\marg{Monat}\marg{Jahr}\marg{Stunde}\marg{Minute}\marg{Lokalisierte + Langfassung} + + Tag, Monat, Stunde und Minute sind jeweils als zweistellige Ziffern einzulesen. Das Jahr wird + als vierstellige Ziffer eingelesen und in der Langassung kann beliebiger Text stehen, der + einer durch die Scripte lokalisierten Version entspricht. Entsprechend werden dadurch die + \wM{gfiGet*}-Makros definiert. \wM{gfiGetDate} entspricht der Langfassung. + + \DescribeMacro{\gfiSetAuthor} + |\gfiSetAuthor|\marg{Name}\marg{E-Mail} + + Name und E-Mail sollten die zugehörigen Daten enthalten und werden mit den \wM{gfiGet*}-Makros + verknüpft. + + \DescribeMacro{\gfiSetCommit} + + |\gfiSetCommit|\marg{Hash}\marg{Hash-Abr} + + Die volle Fassung des Commits wird im Hash, die kurze Version im Hash-Abr eingegeben und + entsprechend mit \wM{gfiGet*} verknüpft. + + \subsection{Scripte}\label{sec:implementierung-scripte} + Die Scripte sind auf deutsche Monatsbezeichnungen eingestellt. Sofern hier eine andere + Lokalisierung gewünscht wird, muss in \textit{allen} Scripten der entsprechende Eintrag in der + Präambel geändert werden! + + \begin{lstlisting}[gobble=8,numbers=none,language=python,% + linewidth=0.7\textwidth,resetmargins=false] + locale.setlocale(locale.LC_ALL, 'de_DE') + \end{lstlisting} + + + \subsubsection{gfi-run} + Das \verb|gfi-run| kann sowohl zur Initialisierung als auch zur erzwungenen Aktualisierung + aller \TeX-Dateien benutzt werden. + \begin{lstlisting}[gobble=12,numbers=none,language=bash,% + linewidth=0.7\textwidth,resetmargins=false] + # alle *.tex-Dateien aktualisieren + python gfi-run + # eine spezielle *.tex-Datei aktualisieren + python gfi-run datei.tex + \end{lstlisting} + + Das Script sucht dabei mithilfe von \verb|git ls-files| nach allen unter Versionsverwaltung + stehenden Dateien und erstellt (überschreibend) aufgrund von \verb|git log| für jede Datei + einzeln die passende Hilfsdatei mit den Metadaten. Wird eine Datei übergeben, so wird nicht + geprüft, ob diese unter Verwaltung steht und eine Hilfsdatei (im Zweifel leer) erstellt. + + \lstinputlisting[language=python,title=Quelltext von gfi-run]{gfi-run} + + \subsubsection{post-commit} + Der \verb|post-commit|-Hook von \verb|git| wird nach jedem Commit, der erfolgreich + ausgeführt wurde, automatisch ausgeführt. Der Hook liest aus, welche Dateien sich verändert + haben und ändert für die passenden \TeX-Dateien die Hilfsdateien mit den neuen Metadaten. + Das Script sollte im Verzeichnis \verb|.git/hooks| ausführbar platziert werden. + + \lstinputlisting[language=python,title=Quelltext von post-commit]{post-commit} + + \subsubsection{post-merge} + Der \verb|post-merge|-Hook von \verb|git| wird nach jedem Merge ausgeführt. Er wird auch bei + einem nicht erfolgreichen Merge aufgerufen. Explizit bedeutet dies auch, dass nach jedem + Pull das Script ausgeführt wird. Der Hook liest aus, welche Dateien sich verändert + haben und ändert für die passenden \TeX-Dateien die Hilfsdateien mit den neuen Metadaten. + Das Script sollte im Verzeichnis \verb|.git/hooks| ausführbar platziert werden. + + \lstinputlisting[language=python,title=Quelltext von post-merge]{post-merge} + + \clearpage + \addcontentsline{toc}{section}{Literatur} + \printbibliography \end{document} diff --git a/gfi-run b/gfi-run index 84a1e7f..ec60a9a 100755 --- a/gfi-run +++ b/gfi-run @@ -18,20 +18,19 @@ index = repo.index if len(sys.argv) <= 1: commFiles = git.ls_files(full_name=True).split("\n") - #commit = git.log('-1', format='%h').rstrip() - + #commit = git.log('-1', format='%h').rstriMin #cmt = subprocess.check_output('git log -1 --format="%s" ', shell=True).decode("utf-8").rstrip() for fl in commFiles: flname, flext = os.path.splitext(fl) if flext == '.tex': rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1]) - date = [time.strftime("%d. %B %Y %H:%M", time.gmtime(rawdate)), - time.strftime("%d", time.gmtime(rawdate)), - time.strftime("%m", time.gmtime(rawdate)), - time.strftime("%Y", time.gmtime(rawdate)), - time.strftime("%H", time.gmtime(rawdate)), - time.strftime("%M", time.gmtime(rawdate))] + date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)), + time.strftime("%d", time.localtime(rawdate)), + time.strftime("%m", time.localtime(rawdate)), + time.strftime("%Y", time.localtime(rawdate)), + time.strftime("%H", time.localtime(rawdate)), + time.strftime("%M", time.localtime(rawdate))] 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], @@ -48,12 +47,12 @@ else: fl = sys.argv[1] flname, flext = os.path.splitext(fl) rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1]) - date = [time.strftime("%d. %B %Y %H:%M", time.gmtime(rawdate)), - time.strftime("%d", time.gmtime(rawdate)), - time.strftime("%m", time.gmtime(rawdate)), - time.strftime("%Y", time.gmtime(rawdate)), - time.strftime("%H", time.gmtime(rawdate)), - time.strftime("%M", time.gmtime(rawdate))] + date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)), + time.strftime("%d", time.localtime(rawdate)), + time.strftime("%m", time.localtime(rawdate)), + time.strftime("%Y", time.localtime(rawdate)), + time.strftime("%H", time.localtime(rawdate)), + time.strftime("%M", time.localtime(rawdate))] 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], diff --git a/gitfile-info.sty b/gitfile-info.sty index be6c83a..4748a27 100644 --- a/gitfile-info.sty +++ b/gitfile-info.sty @@ -25,8 +25,8 @@ \renewcommand{\gfiGetDay}{#1} \renewcommand{\gfiGetMonth}{#2} \renewcommand{\gfiGetYear}{#3} - \renewcommand{\gfiGetMin}{#4} - \renewcommand{\gfiGetHour}{#5} + \renewcommand{\gfiGetHour}{#4} + \renewcommand{\gfiGetMin}{#5} \renewcommand{\gfiGetDate}{#6} } \providecommand{\gfiSetAuthor}[2]{% diff --git a/post-commit b/post-commit index 65bb21b..b2e2616 100755 --- a/post-commit +++ b/post-commit @@ -17,12 +17,12 @@ 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.gmtime(headcommit.authored_date)), - time.strftime("%d", time.gmtime(headcommit.authored_date)), - time.strftime("%m", time.gmtime(headcommit.authored_date)), - time.strftime("%Y", time.gmtime(headcommit.authored_date)), - time.strftime("%H", time.gmtime(headcommit.authored_date)), - time.strftime("%M", time.gmtime(headcommit.authored_date))] +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)), + time.strftime("%H", 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() diff --git a/post-merge b/post-merge index dcdee49..0dccecd 100755 --- a/post-merge +++ b/post-merge @@ -24,12 +24,12 @@ for fl in commFiles: flname, flext = os.path.splitext(fl) if flext == '.tex': rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1]) - date = [time.strftime("%d. %B %Y %H:%M", time.gmtime(rawdate)), - time.strftime("%d", time.gmtime(rawdate)), - time.strftime("%m", time.gmtime(rawdate)), - time.strftime("%Y", time.gmtime(rawdate)), - time.strftime("%H", time.gmtime(rawdate)), - time.strftime("%M", time.gmtime(rawdate))] + date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)), + time.strftime("%d", time.localtime(rawdate)), + time.strftime("%m", time.localtime(rawdate)), + time.strftime("%Y", time.localtime(rawdate)), + time.strftime("%H", time.localtime(rawdate)), + time.strftime("%M", time.localtime(rawdate))] 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],