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
|
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"
|
||||||
|
@ -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]
|
||||||
|
Loading…
Reference in New Issue
Block a user