Kleinere Doku Fehler überarbeitet, Literatur hinzugefügt
This commit is contained in:
		
							
								
								
									
										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]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user