Versionsmanagement
- Warum?
- Wie?
- Praktische Anwendung
26 Oktober, 2016
Versionsmanagement
Versionsverwaltung übernimmt nicht das Ordnung halten!
Ordner für Ursprungsdaten, Auswertungsskripte und Ergebnisse
Beispiel:
Projekt/Daten/ALLBUS Projekt/Daten/SOEP Projekt/Skripte/Aufbereitung Projekt/Skripte/Funktionen Projekt/Bericht
Wissenschaftliches Schreiben ist oftmals ein Kooperationsprojekt
Hilfsmittel:
Den ganzen PHD-Comic gibts hier: http://www.phdcomics.com/comics/archive.php?comicid=1531
Einfaches Verständnis:
Version 1
Version 2
Schreibt man zusammen an einer Auswertung und jeder schreibt an anderen Teilen der Arbeit entstehen schnell viele unterschiedliche Dateien.
Platon und Aristoteles schreiben zusammen an einem Aufsatz.
Den beiden hätte mit einer einfachen Variante einer Versionsverwaltung geholfen werden können.
Die einfachste Lösung
Verschiedene Versionen mit unterschiedlichem Titel abspeichern. Dann kann anhand des Änderungsdatums der Datei gesehen werden, wann Änderungen vorgenommen worden sind.
Aufsatz_01.tex
Abgleich er der Inhalte der Dateien Wort für Wort, um herausfindenden, welche Änderungen durchgeführt wurden.
Wird zudem noch den Autor der Version mit in den Titel dazu geschrieben, kann auch im Nachhinein noch festgestellt werden, wer die Änderungen durchgeführt hat.
Aufsatz_02_Platon.tex
Das ist natürlich umständlich und die beiden haben wichtigeres zu tun!
Im wesentlichen, genau das gerade beschriebene
Faustregel: Lässt sich der Dateiinhalt mit einem Texteditor lesen, können Änderungen einer Datei in einer Versionsverwaltung einfach nachvollzogen werden.
Faustregel: Benötigt man zum Aufruf einer Datei ein anderes Programm als einen Texteditor (z. B. Word: docx, Excel: xlsx, SPSS: sav , Stata: dta, R: rda, einen Bildbetrachter, ein PDF-Betrachter oder ähnliches), sind Änderungen in der Datei nicht nachvollziehbar.
+
zentral; *
dezentral
Git herunterladen und installieren git-scm.com
Unterschiedliche Projekte haben unterschiedliche Sichtbarkeit. Github ist nur öffentlich kostenlos. Private Repos kosten Geld. Gitlab braucht einen Hoster, bietet dafür größere Kontrolle.
Git Repositories (Ordner unter Versionsverwaltung) können
Das Network Operations Centers (NOC) der Ruhr-Uni hat eine Gitlab-Installation
Zuerst sollte man seine Benutzerinformationen angeben
git config --global user.email "you@example.com" git config --global user.name "Your Name"
Anschließend den jeweiligen Lieblings-Editor als Standard festlegen (Standard ist vi)
git config --global core.editor notepad
git init .
, über die "Git Gui" (Startmenü) oder über RStudio angelegt werden (Neues Projekt - Version Control - Git)git merge
)Zunächst wird ein Ordner oder eine Datei in einem Ordner zum commit vorgemerkt
git add ordner/datei
Dann wird ein commit Text ergänzt und der commit eingetragen
git commit -m "Ich habe eine wichtige Änderung vorgenommen"
Zunächst wird eine Datei zur Änderung vorgemerkt:
git commit dateiname.R
Es öffnet sich der Editor und man muss einen Kommentar eingeben. Man kann den Kommentar auch direkt angeben
git commit dateiname.Rmd -m "Ich habe eine wichtige Änderung vorgenommen"
Hat man Änderungen in mehreren Dateien vorgenommen, können diese auf einmal versioniert werden
git commit -a
git push
alle neuen Änderungen auf den Server übertragengit pull
holt man sich den neusten Stand vom ServerGit fügt beide Varianten in den Text ein und markiert die Stelle
<<<<<<< HEAD # Line 1 a # Line 2 # Line 3 a ======= # Line 1 # Line 2 b # Line 3 >>>>>>> b2
Man löst den Konflikt, indem man die Textstelle bearbeit und die Marker löscht.
Man commited nun alle Änderungen - Ein Kommentar wird bereits vorgegeben
git commit -a
Neben der Kommandozeile gibt es zahlreiche grafische Oberflächen für Git
Nicht vergessen, den Haken zu setzen!
.gitignore
enthält Informationen über Ordner und Dateien/Dateitypen, die nicht commited werden sollen
Einen aussagekräftigen Text wählen und mögliche Projektkonventionen beachten.
Die Sichtbarkeit kann anschließend noch angepasst werden.
Gitlab geht von einem Ordner aus, der keine git Struktur aufweist.
git init
ist unnötig, hat RStudio für uns bereits erledigt. git add
und git commit
haben wir in RStudio gemacht.
origin
Entwicklung in git kann nicht nur in einem Entwicklungszweig erfolgen.
Einen Nebenzweig kann man mit git branch
erzeugen
git branch -b testing
Ein neuer Branch wird mit -b
erzeugt
Anschließend kann über
git checkout master
und
git checkout testing
zwischen beiden Zweigen gewechselt werden.
Nicht jede Entwicklung muss im Detail auf dem Server nachvollziehbar sein!
Alle verfügbaren Zweige können mit
git branch
angezeigt werden
Dabei können Zweige auf dem Server und lokal unterschiedlich sein
merge
Ist im Branch testing eine Änderung eingetragen wechselt man auf den master kombiniert beide Zweige
git merge testing
Hierbei können merge Konflikte auftreten
git clone
.gitignore
git cherry-pick
git rebase
git tag
git revert
git checkout ...
git bisect
git submodule