Kleinere Doku Fehler überarbeitet, Literatur hinzugefügt
This commit is contained in:
parent
72d37c8242
commit
96c6777a68
19
build
19
build
@ -3,9 +3,10 @@ echo "===================================================================" >> bu
|
||||
echo "=+-Lauf vom `date +%Y-%m-%d:%H:%M:%S`----------------------------------+=" >> build.log
|
||||
sty2dtx -O -c gitfile-info.sty -o gitfile-info/gitfile-info.sty >> build.log
|
||||
echo "=+-sty2dtx abgeschlossen-----------------------------------------+=" >> build.log
|
||||
cp -v gfi-run gitfile-info/
|
||||
cp -v post-commit gitfile-info/
|
||||
cp -v post-merge gitfile-info/
|
||||
cp -v gfi-run.py gitfile-info/
|
||||
cp -v post-commit.py gitfile-info/
|
||||
cp -v post-merge.py gitfile-info/
|
||||
cp -v dokumentation.gfi gitfile-info/gitfile-info.gfi
|
||||
sed "s/Version: [0-9].[0-9]*/Version: $1/1" README > /tmp/output.readme
|
||||
sed "s/Last Change: [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/Last Change: `date +%Y-%m-%d`/1" /tmp/output.readme > output.readme
|
||||
mv -v output.readme gitfile-info/README
|
||||
@ -13,13 +14,13 @@ echo "=+-Kopieren und Anpassen abgeschlossen---------------------------+=" >> bu
|
||||
cd gitfile-info
|
||||
echo "=+-Packe DTX-----------------------------------------------------+=" >> build.log
|
||||
../makedtx.pl -src "(.*)\.sty=>\1.sty" -doc ../dokumentation.tex \
|
||||
-src "gfi-run=>gfi-run" -src "post-commit=>post-commit" -src "post-merge=>post-merge" \
|
||||
-macrocode "gfi-run" -macrocode "post-commit" -macrocode "post-merge" \
|
||||
-setambles "gfi-run=>\\nopreamble\\nopostamble" -setambles "post-commit=>\\nopreamble\\nopostamble" \
|
||||
-setambles "post-merge=>\\nopreamble\\nopostamble" \
|
||||
-comment "gfi-run" -comment "post-commit" -comment "post-merge" \
|
||||
-src "gfi-run.py=>gfi-run.py" -src "post-commit.py=>post-commit.py" -src "post-merge.py=>post-merge.py" \
|
||||
-macrocode "gfi-run.py" -macrocode "post-commit.py" -macrocode "post-merge.py" \
|
||||
-setambles "gfi-run.py=>\\nopreamble\\nopostamble" -setambles "post-commit.py=>\\nopreamble\\nopostamble" \
|
||||
-setambles "post-merge.py=>\\nopreamble\\nopostamble" \
|
||||
-comment "gfi-run.py" -comment "post-commit.py" -comment "post-merge.py" \
|
||||
-date "`date +%Y-%m-%d:%H:%M:%S` -- Version $1" \
|
||||
-author "André Hilbig, mail@andrehilbig.de" -codetitle "Implementation" gitfile-info
|
||||
-author "André Hilbig, mail@andrehilbig.de" -codetitle "Code" gitfile-info
|
||||
pdflatex gitfile-info.dtx
|
||||
CHECKSUM=$(grep "The checksum should be" gitfile-info.log | grep -o "[0-9]*")
|
||||
echo "The checksum is: $CHECKSUM"
|
||||
|
@ -18,6 +18,31 @@
|
||||
url = {https://github.com/gitpython-developers/GitPython},
|
||||
urldate = {2016-06-23},
|
||||
}
|
||||
@electronic{datenumber,
|
||||
author = "Jörg-Michael Schröder",
|
||||
month = {Aug},
|
||||
year = "2001",
|
||||
title = "The datenumber.sty package v0.02",
|
||||
url = {http://www.ctan.org/pkg/datenumber},
|
||||
urldate = {2016-06-27},
|
||||
}
|
||||
@electronic{svninfo,
|
||||
author = "Achim Brucker",
|
||||
month = {Mar},
|
||||
year = "2010",
|
||||
title = "The svninfo package",
|
||||
url = {http://www.ctan.org/pkg/svninfo},
|
||||
urldate = {2016-06-27},
|
||||
}
|
||||
@electronic{gitinfo2,
|
||||
author = "Brent Longborough",
|
||||
month = {Nov},
|
||||
year = "2015",
|
||||
title = "gitinfo2.sty",
|
||||
subtitle = "A package for accessing metadata from the git dvcs",
|
||||
url = {http://www.ctan.org/pkg/gitinfo2},
|
||||
urldate = {2016-06-27},
|
||||
}
|
||||
\end{filecontents}
|
||||
\usepackage[%
|
||||
backend=biber,
|
||||
@ -242,20 +267,21 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
\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/|
|
||||
\verb|~/texmf/tex/latex/gitfile-info/|
|
||||
|
||||
an.
|
||||
\item Außerdem werden die drei Python-Scripte
|
||||
|
||||
\verb|gfi-run|, \verb|post-commit| und \verb|post-merge|
|
||||
\verb|gfi-run.py|, \verb|post-commit.py| und \verb|post-merge.py|
|
||||
|
||||
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.
|
||||
Die beiden Scripte \verb|post-commit.py| und \verb|post-merge.py| müssen innerhalb des Repositories im
|
||||
Verzeichnis \verb|.git/hooks| als ausführbare Dateien unter den Namen \verb|post-commit| bzw.
|
||||
\verb|post-merge| 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.
|
||||
@ -263,17 +289,17 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
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
|
||||
Außerdem sollte das Script \verb|gfi-run.py| 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
|
||||
python gfi-run.py
|
||||
# eine spezielle *.tex-Datei aktualisieren
|
||||
python gfi-run datei.tex
|
||||
python gfi-run.py datei.tex
|
||||
\end{lstlisting}
|
||||
|
||||
Die Scripte sollten in einer Standard \texttt{texlive}"~Installation unter dem Pfad
|
||||
@ -286,24 +312,26 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
|
||||
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
|
||||
Nutzer nach einem \textit{frischen} Clone das Script \verb|gfi-run.py| 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.
|
||||
Zunächst stand die Überlegung im Raum, Meta-Daten ähnlich wie beim Paket \verb|svninfo|
|
||||
\autocite[vgl.][]{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.
|
||||
einzutragen. Hier können per simplem \LaTeX-Befehl Metadaten eingegeben werden. Das bereits
|
||||
bestehende Paket gitinfo2 \autocite[vgl.][]{gitinfo2} konnte nicht benutzt werden, da es das
|
||||
gesamte Repository ausliest und nicht zwischen einzelnen Dateien unterscheidet.
|
||||
|
||||
\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
|
||||
\verb|*.tex| berücksichtigt! Bei Problemen kann das Script \verb|gfi-run.py| per Hand aufgerufen
|
||||
werden, um eine Aktualisierung zu erzwingen (vgl. \prettyref{sec:installation-git}).
|
||||
|
||||
|
||||
@ -340,6 +368,8 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
\item[\wM{gfiGetCommitAbr}] gibt die Kurzform des letzten Commits zurück.
|
||||
\end{description}
|
||||
|
||||
Ergänzend sei auf das
|
||||
|
||||
\subsection{Versionsinfo}
|
||||
\DescribeMacro{\gfiInfo}
|
||||
Sofern eine kleine Zusammenfassung der aktuellen Datei gezeigt werden soll, kann dazu das Makro
|
||||
@ -386,10 +416,10 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
\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.
|
||||
Ähnlich wie im Paket \verb|svninfo| \autocite[vgl.][]{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}
|
||||
@ -443,15 +473,15 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\subsubsection{gfi-run}
|
||||
Das \verb|gfi-run| kann sowohl zur Initialisierung als auch zur erzwungenen Aktualisierung
|
||||
\subsubsection{gfi-run.py}
|
||||
Das \verb|gfi-run.py| 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
|
||||
python gfi-run.py
|
||||
# eine spezielle *.tex-Datei aktualisieren
|
||||
python gfi-run datei.tex
|
||||
python gfi-run.py datei.tex
|
||||
\end{lstlisting}
|
||||
|
||||
Das Script sucht dabei mithilfe von \verb|git ls-files| nach allen unter Versionsverwaltung
|
||||
@ -459,24 +489,24 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
|
||||
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}
|
||||
\lstinputlisting[language=python,title=Quelltext von gfi-run.py]{gfi-run.py}
|
||||
|
||||
\subsubsection{post-commit}
|
||||
\subsubsection{post-commit.py}
|
||||
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}
|
||||
\lstinputlisting[language=python,title=Quelltext von post-commit.py]{post-commit.py}
|
||||
|
||||
\subsubsection{post-merge}
|
||||
\subsubsection{post-merge.py}
|
||||
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}
|
||||
\lstinputlisting[language=python,title=Quelltext von post-merge.py]{post-merge.py}
|
||||
|
||||
\addcontentsline{toc}{section}{Literatur}
|
||||
\printbibliography[title=Weiterführende Quellen]
|
||||
|
Loading…
Reference in New Issue
Block a user