Kleinere Doku Fehler überarbeitet, Literatur hinzugefügt

This commit is contained in:
André Hilbig 2016-06-27 22:17:53 +02:00
parent 72d37c8242
commit 96c6777a68
5 changed files with 69 additions and 38 deletions

19
build
View File

@ -3,9 +3,10 @@ echo "===================================================================" >> bu
echo "=+-Lauf vom `date +%Y-%m-%d:%H:%M:%S`----------------------------------+=" >> build.log 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 sty2dtx -O -c gitfile-info.sty -o gitfile-info/gitfile-info.sty >> build.log
echo "=+-sty2dtx abgeschlossen-----------------------------------------+=" >> build.log echo "=+-sty2dtx abgeschlossen-----------------------------------------+=" >> build.log
cp -v gfi-run gitfile-info/ cp -v gfi-run.py gitfile-info/
cp -v post-commit gitfile-info/ cp -v post-commit.py gitfile-info/
cp -v post-merge 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/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 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 mv -v output.readme gitfile-info/README
@ -13,13 +14,13 @@ echo "=+-Kopieren und Anpassen abgeschlossen---------------------------+=" >> bu
cd gitfile-info cd gitfile-info
echo "=+-Packe DTX-----------------------------------------------------+=" >> build.log echo "=+-Packe DTX-----------------------------------------------------+=" >> build.log
../makedtx.pl -src "(.*)\.sty=>\1.sty" -doc ../dokumentation.tex \ ../makedtx.pl -src "(.*)\.sty=>\1.sty" -doc ../dokumentation.tex \
-src "gfi-run=>gfi-run" -src "post-commit=>post-commit" -src "post-merge=>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" -macrocode "post-commit" -macrocode "post-merge" \ -macrocode "gfi-run.py" -macrocode "post-commit.py" -macrocode "post-merge.py" \
-setambles "gfi-run=>\\nopreamble\\nopostamble" -setambles "post-commit=>\\nopreamble\\nopostamble" \ -setambles "gfi-run.py=>\\nopreamble\\nopostamble" -setambles "post-commit.py=>\\nopreamble\\nopostamble" \
-setambles "post-merge=>\\nopreamble\\nopostamble" \ -setambles "post-merge.py=>\\nopreamble\\nopostamble" \
-comment "gfi-run" -comment "post-commit" -comment "post-merge" \ -comment "gfi-run.py" -comment "post-commit.py" -comment "post-merge.py" \
-date "`date +%Y-%m-%d:%H:%M:%S` -- Version $1" \ -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 pdflatex gitfile-info.dtx
CHECKSUM=$(grep "The checksum should be" gitfile-info.log | grep -o "[0-9]*") CHECKSUM=$(grep "The checksum should be" gitfile-info.log | grep -o "[0-9]*")
echo "The checksum is: $CHECKSUM" echo "The checksum is: $CHECKSUM"

View File

@ -18,6 +18,31 @@
url = {https://github.com/gitpython-developers/GitPython}, url = {https://github.com/gitpython-developers/GitPython},
urldate = {2016-06-23}, 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} \end{filecontents}
\usepackage[% \usepackage[%
backend=biber, 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 \item Die erzeugte Paketdatei (*.sty) muss in einem für \TeX\ lesbarem Verzeichnis platziert
werden. Für eine lokale Installation bietet sich dafür werden. Für eine lokale Installation bietet sich dafür
\verb|~/texmf/tex/latex/bewerbung/| \verb|~/texmf/tex/latex/gitfile-info/|
an. an.
\item Außerdem werden die drei Python-Scripte \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 erstellt. Diese Dateien müssen im Repository platziert werden
(vgl. \prettyref{sec:installation-git}). (vgl. \prettyref{sec:installation-git}).
\end{itemize} \end{itemize}
\subsection{Einrichtung des Repositories}\label{sec:installation-git} \subsection{Einrichtung des Repositories}\label{sec:installation-git}
Die beiden Hooks \verb|post-commit| und \verb|post-merge| müssen innerhalb des Repositories im 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 platziert werden. Verzeichnis \verb|.git/hooks| als ausführbare Dateien unter den Namen \verb|post-commit| bzw.
\verb|post-merge| platziert werden.
\begin{description} \begin{description}
\item[\verb|post-commit|] wird bei jedem Commit ausgeführt (nachdem der Commit vollständig \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. 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. explizit auch nach einem pull) ausgeführt, um Veränderungen in die Hilfsdatei einzutragen.
\end{description} \end{description}
Außerdem sollte das Script \verb|gfi-run| möglichst für jeden Nutzer im Repository ausführbar 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 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 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 Script eine \TeX-Datei (inkl. Endung) übergeben, wird die Hilfsdatei für diese spezielle Datei
neu erstellt. neu erstellt.
\begin{lstlisting}[gobble=10,numbers=none,language=bash,% \begin{lstlisting}[gobble=10,numbers=none,language=bash,%
linewidth=0.7\textwidth,resetmargins=false] linewidth=0.7\textwidth,resetmargins=false]
# alle *.tex-Dateien aktualisieren # alle *.tex-Dateien aktualisieren
python gfi-run python gfi-run.py
# eine spezielle *.tex-Datei aktualisieren # eine spezielle *.tex-Datei aktualisieren
python gfi-run datei.tex python gfi-run.py datei.tex
\end{lstlisting} \end{lstlisting}
Die Scripte sollten in einer Standard \texttt{texlive}"~Installation unter dem Pfad 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 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 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. Hilfsdateien lokal zu erstellen.
\section{Funktionsweise} \section{Funktionsweise}
\subsection{Vorüberlegungen} \subsection{Vorüberlegungen}
Zunächst stand die Überlegung im Raum, Meta-Daten ähnlich wie beim Paket \verb|svninfo| direkt Zunächst stand die Überlegung im Raum, Meta-Daten ähnlich wie beim Paket \verb|svninfo|
in die betreffenden \TeX-Dateien einzutragen. Dadurch wird jedoch der Arbeitsstand verändert \autocite[vgl.][]{svninfo} direkt in die betreffenden \TeX-Dateien einzutragen. Dadurch wird
und der eingetragene Commit ist nicht mehr aktuell. Es müsste ein erneuter Commit erfolgen jedoch der Arbeitsstand verändert und der eingetragene Commit ist nicht mehr aktuell. Es
usw. Hier gäbe es die Möglichkeit, automatisierte Commits zu erstellen. Diese würden jedoch müsste ein erneuter Commit erfolgen usw. Hier gäbe es die Möglichkeit, automatisierte Commits
das Repository aufblähen. 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|) 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} \subsection{Umsetzung}
Bei jedem Commit oder Pull gehen die Scripte alle geänderten \TeX-Dateien durch und 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 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}). 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. \item[\wM{gfiGetCommitAbr}] gibt die Kurzform des letzten Commits zurück.
\end{description} \end{description}
Ergänzend sei auf das
\subsection{Versionsinfo} \subsection{Versionsinfo}
\DescribeMacro{\gfiInfo} \DescribeMacro{\gfiInfo}
Sofern eine kleine Zusammenfassung der aktuellen Datei gezeigt werden soll, kann dazu das Makro 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} \end{gfiInfoBox}
\subsection{Laden weiterer \TeX-Dateien}\label{sec:nutzung-include} \subsection{Laden weiterer \TeX-Dateien}\label{sec:nutzung-include}
Ähnlich wie im Paket \verb|svninfo| soll auch die Aufsplittung eines größeren Projekts in Ähnlich wie im Paket \verb|svninfo| \autocite[vgl.][]{svninfo} soll auch die Aufsplittung eines
mehrere Teildateien mit den entsprechenden Versionen der einzelnen Dateien auslesbar sein. Dafür größeren Projekts in mehrere Teildateien mit den entsprechenden Versionen der einzelnen Dateien
müssen diese Dateien ebenfalls die Endung \verb|*.tex| haben, um von den Scripten erkannt zu auslesbar sein. Dafür müssen diese Dateien ebenfalls die Endung \verb|*.tex| haben, um von den
werden. Scripten erkannt zu werden.
\DescribeMacro{gfiInclude} \DescribeMacro{gfiInclude}
\DescribeMacro{gfiInput} \DescribeMacro{gfiInput}
@ -443,15 +473,15 @@ pdftitle = {\LaTeX-package for reading git commit info for specific files}
\end{lstlisting} \end{lstlisting}
\subsubsection{gfi-run} \subsubsection{gfi-run.py}
Das \verb|gfi-run| kann sowohl zur Initialisierung als auch zur erzwungenen Aktualisierung Das \verb|gfi-run.py| kann sowohl zur Initialisierung als auch zur erzwungenen Aktualisierung
aller \TeX-Dateien benutzt werden. aller \TeX-Dateien benutzt werden.
\begin{lstlisting}[gobble=12,numbers=none,language=bash,% \begin{lstlisting}[gobble=12,numbers=none,language=bash,%
linewidth=0.7\textwidth,resetmargins=false] linewidth=0.7\textwidth,resetmargins=false]
# alle *.tex-Dateien aktualisieren # alle *.tex-Dateien aktualisieren
python gfi-run python gfi-run.py
# eine spezielle *.tex-Datei aktualisieren # eine spezielle *.tex-Datei aktualisieren
python gfi-run datei.tex python gfi-run.py datei.tex
\end{lstlisting} \end{lstlisting}
Das Script sucht dabei mithilfe von \verb|git ls-files| nach allen unter Versionsverwaltung 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 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. 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 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 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. 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. 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 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 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 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. 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. 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} \addcontentsline{toc}{section}{Literatur}
\printbibliography[title=Weiterführende Quellen] \printbibliography[title=Weiterführende Quellen]

View File