Skip to content

Nachträgliche Hinweise

Koios edited this page Apr 28, 2012 · 9 revisions

Git

In der shell bzw. Git Bash habe ich einen aktuelles Verzeichnis, dies wird vor dem $ (Git Bash: in der Zeile darüber) angegeben. Es kann auch ~ lauten, in diesem Fall seit ihr in eurem home-Verzeichnis (Linux) bzw. den Eigenen Dateien eures Benutzers (Windows). Hinweis: mit cd .. gelangt ihr ja in das übergeordnete Verzeichnis, hier wird der Pfad wieder ausgeschrieben statt mit ~ abgekürzt.

Git arbeitet innerhalb eines Ordners, indem das .git-Verzeichnis sowie die Arbeitskopie liegen. Beim clonen eines Repositories kann ja als letztes Kommandozeilen-Argument ein Ordnername angegeben werden. Git cloned dann das Repository in folgenden Ordner: aktueller_Pfad/Ordnername/.git. Wurde kein Ordnername als letzes Argument angegeben, so leitet sich Git selbst einen Ordnernamen aus der URL des Quell-Repositories ab, z.B.: git clone https://github.com/kit-cpp-workshop/workshop-ss12-01.git -> Ordnername workshop-ss12-01

Den aktuellen Pfad legt man sinnvollerweise fest, indem man sich auf der shell/Git Bash mit cd durch die Verzeichnisstruktur hangelt (cd .. nach oben, cd Ordnername in einen Unterordner). Die Git Bash kann man aus dem Kontext-Menü im Explorer öffnen, in diesem Fall ist das aktuelle Verzeichnis zu Beginn der Ordner, in/auf welchem man das Kontext-Menü geöffnet hat. Öffnet man die Git Bash hingegen aus dem Startmenü, so ist das aktuelle Verzeichnis zu Beginn ~ (eben die Eigenen Dateien, entspricht C:\Users\Benutzername\).

Nach dem clonen ist in diesem Ordner aktueller_Pfad/Ordnername dann der .git-Unterordner (versteckt!) sowie die Arbeitskopie vorhanden.

Möchte man nun mit Git-Befehlen arbeiten, z.B. git add oder git add, so muss das Programm git Wissen, auf welches Repository der Befehl bezogen ist - man kann ja beliebig viele Repositories auf seinem Rechner haben. Dazu wechselt man in der shell bzw. Git Bash in den Ordner, in welchem auch der .git-Ordner liegt. Habe ich z.B. mein Repository nach C:\cpp-workshop\workshop-ss12-01\ gecloned, so kann ich in diesem Ordner und in allen Unterordnern der Arbeitskopie die Git-Befehle ausführen, und Git weiß, welches Repository gemeint ist.

Git-Bash-Branch-Name

Wenn man in der Git Bash (Windows) in ein Verzeichnis wechselt, welches Repository enthält, so fügt die Git Bash der Zeile, in welcher das aktuelle Verzeichnis angezeigt wird, ein (master) an. Dies stammt nicht vom Ordnernamen/Pfad, sondern ist der Name des Git branches der Arbeitskopie. Standardmäßig ist der Name des branches eben master.

Eclipse-Projekte

Sonderzeichen im Projektnamen

Wir haben festgestellt, dass es offenbar Probleme gibt, wenn man Sonderzeichen oder Leerzeichen im Projektnamen verwendet. Bitte vermeidet dies daher und beschränkt euch auf a-z, A-Z (keine Umlaute!), 0-9, - sowie _ - z.B. task01_FOO-bar. Ich empfehle, im Projektnamen die Workshop-Nummer sowie die Aufgaben-Nummer festzuhalten, also etwa ws01-task01 oder ws01-task02.

Bezug zum Git-Repository / Arbeitskopie

Man kann ein Eclipse-Projekt natürlich praktisch überall hin auf seinem eigenen Rechner erzeugen. Anschließend muss man noch Dateien - etwa Quellcode-.cpp-Dateien - dem Projekt hinzufügen. Das funktioniert entweder, indem ich aus Eclipse heraus eine Datei erstelle oder indem ich eine bereits vorhandene Datei in Eclipse in das Projekt importiere. Beim Importieren hat Eclipse jedoch die Eigenart, standardmäßig die Datei in das Projektverzeichnis zu kopieren. Wenn ich also ein Projekt irgendwo auf meiner Festplatte erzeuge (z.B. C:\) und Dateien aus der Arbeitskopie eines Git-Repositories (z.B. unter D:\) importiere, dann legt Eclipse in seinem Projektverzeichnis eine Kopie der Datei an (wenn ich es ihm nicht anders sage, die Option ist aber ein wenig versteckt). Da die Kopie der Datei nicht mehr im Ordner der Arbeitskopie liegt, weiß Git nichts mehr von ihr. Ändere ich diese Kopie in Eclipse, müsste ich daher diese Kopie erst wieder in den Ordner der Arbeitskopie zurückkopieren/verschieben, damit ich sie in die Versionsgeschichte aufnehmen kann (add, commit).

Stattdessen gibt es eine wesentlich einfachere Methode: Wenn ich das Eclipse-Projekt direkt in der Arbeitskopie erstelle (z.B. C:\cpp-workshop\workshop-ss12-01\task01\), dann fügt Eclipse automatisch die im Projekt-Ordner vorhandenen Dateien dem Projekt hinzu (ohne Kopieren, sie sind ja schon im Projektverzeichnis). Wenn man dies tut für den Ordner task01, so liegen anschließend in diesem Ordner neben den ursprünglichen Dateien aus dem Repository (task01.cpp) auch die Eclipse-Projektdateien (.cproject, .project und nach dem Builden weitere Unterordner). Wenn ihr wollt, könnt ihr diese Projektdateien in eure Versionsverwaltung aufnehmen (git add .cproject .project usw., git commit), ihr müsst dies freilich nicht tun. Viel mehr raten wir euch sogar davon ab, da wir schlechte Erfahrungen damit gemacht haben: Wenn man die Projektdateien in die Versionsgeschichte aufnimmt und die Versionsgeschichte veröffentlicht (git push), dann bekommt jemand, der von eurem Repository/Fork pullt, die Projektdateien auch auf seinen Rechner. Wir hatten nun Probleme dabei, auf diesem anderen Rechner die Projektdateien wiederzuverwenden, insbesondere wenn der andere Rechner ein anderes Betriebssystem nutzt.