Stars, Gates & Realities

 
Mal gegen eine unsichtbare Wand gelaufen, wie?
Morning greetings, Guest
Friday, 22 Nov 2024
1
1
Arbeits-Repository
Ich hab ein Git-Repository eingerichtet, über das die gesamte Modell-Entwirklung laufen soll.

Was ist Git?
Ein Versionsverwaltungssystem wie bspw. Subversion, welches selbst Open Source ist.

Quote from Wikipedia:

Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen an Dokumenten oder Dateien verwendet wird. Alle Versionen werden in einem Archiv mit Zeitstempel und Benutzerkennung gesichert und können später wiederhergestellt werden.



Dieses beschriebene Archiv ist ein "Repository".


Wo liegt das Repository?
Auf assembla.com.
Dort müsst ihr euch anmelden, dann ordne ich euch dem Projekt als Mitarbeiter zu und ihr könnt das Repository "herunterladen".
Jeder Mitarbeiter besitzt dann lokal eine vollständige Kopie des Repos.


Wie arbeitet man gemeinsam?
Sinn des online liegenden Repository ist natürlich, dass jeder Mitarbeiter darauf Zugriff hat und seine Arbeiten dorthin "hochlädt".
Man kann aber lokal auf völlig beliebige Weise arbeiten, eigene Versionszweige abspalten (create branch), Versionszweige wieder vereinen (merge), etc. etc.
Dazu fügt man Änderungen zuerst dem lokal liegenden Repository hinzu und kann anschließend die Änderungen, die für das gesamte Projekt wichtig sind, dem online liegenden Repository hinzufügen.

Änderungen anderer Mitarbeiter kann man ebenso durch ein Update vom Online-Repo ins lokale Repo laden. Git kümmert sich dabei darum, dass keine neueren Speicherstände überschrieben werden und Änderungen verloren gehen.

Normalerweise können sogar mehrere Änderungen an einer Datei von verschiedenen Personen vorgenommen werden und unabhängig ins Online-Repository eingereicht werden. Allerdings ist dies nur bei Dateien im Textformat möglich (typischerweise SourceCode-Dateien). Da Modelle und Bilder jedoch als speziell codierte Binärdateien abgespeichert werden, kann Git den Inhalt nur als Ganzes auffassen. Mehrere Änderungen durch verschiedene Personen können daher nicht gleichzeitig eingereicht werden.


Wo gibt es gute Anleitungen zu Git?

Auf http://de.gitready.com/.
Beachte aber, dass dort immer von den Konsolen-Befehlen die Rede ist und dass die Anleitungen nicht für GitExtensions geschrieben ist. GitExtensions benutzt im Hintergrund aber natürlich diese Konsolen-Befehle. GitExtensions ist einfach nur eine Oberfläche, um bequem mit Schaltflächen arbeiten zu können und sich nicht die genauen Befehle merken zu müssen.


Was, wenn es sonstige Probleme gibt?
Mich fragen ;-)

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
2
Repository aufsetzen: Schritt für Schritt
  1. .NET 4 Runtime herunterladen und installieren:
    Hier zu finden: http://www.softpedia.com/get/Others/Signatures-Updates/NET-Framework.shtml.
    Das Runtime ist notwendig für Git Extensions.

  2. Git Extensions herunterladen und installieren:
    Dazu unter http://code.google.com/p/gitextensions/downloads/list die neueste Version herunterladen.
    Nehmt die vollständige Version "complete including MSysGit and KDiff3, dadurch werden bei der Installation 3 Programme installiert:
    • MSysGit: Die Windows-Variante von Git
    • GitExtensions: Eine komfortable Oberfläche für Git
    • KDiff3: Ein Programm zur Findung und Auflösung von Unterschieden in Textdateien


  3. Bei Assembla.com anmelden:
    Ich habe euch dazu Einladungen an eure Email-Adresse verschickt. Diesen müsst ihr nur folgen und solltet dann direkt dem Projekt zugeordnet werden. Falls nicht, meldet euch bei mir.
    Anschließend beginnt der komplizierte Teil...

  4. Lokales Repository initialisieren:
    • GitExtensions aufrufen --> Eine allgemeine Übersicht erscheint
    • Links auf "create new repository" gehen --> Ein Eingabefenster geht auf
    • Gewünschten Pfad angeben, wo das Repo liegen soll
    • Andere Einstellungen auf Standard lassen, bestätigen mit "Initialize"
    • Anschließend öffnet sich die Repository-Übersicht (Falls nicht, diese öffnen)


  5. SSH-Key generieren und einrichten:
    • In GitExtensions in der Repository-Übersicht oben auf "Remotes --> Putty --> Generate or import Key" gehen
    • Es öffnet sich der "Putty Key Generator"
    • Auf den Button "Generate" klicken und lustig die Maus hin und herbewegen bis die Generierung fertig ist
    • Es wurde nun ein privater und ein öffentlicher (public) Schlüssel generiert, der zur Authentifizierung bei Assembla dient
    • Über den Button "Save private Key" den privaten Schlüssel in einer Datei speichern (Ein Passphrase ist nicht nötig). Diese Datei wird später wieder geladen, wenn man Änderungen einsendet.
    • Markiere und kopiere den Inhalt des oberen mehrzeiligen Feldes vom Putty-Fenster in die Zwischenablage. Dies ist der Public Key (Öffentlicher Schlüssel).
    • Logge dich bei Assembla.com ein
    • Gehe dort auf deine Startseite (Start), dann auf "Profile" und wähle ganz unter unter "Manage Git Settings" den Link "Manage your public SSH keys"
    • Stelle dort nun den Public Key rein, indem du den Key aus der Zwischenablage in das Feld unter "Add a key ..." einfügst und über den Button "Add key" bestätigst.


  6. Repo-Zugriff auf Assembla.com einrichten:
    • Gehe in die Repository-Übersicht von GitExtensions zurück
    • Wähle dort "Remotes --> Manage remote repositories" aus
    • Es öffnet sich ein kleines Fenster "Remote repositories"
    • Trage im Feld "Name" einen kurzen Namen für das Online-Repo ein, bspw. "origin"
    • Trage im Feld "Url" folgende URL ein: git@git.assembla.com:sgr-models.git
    • Wähle für das Feld "Private key file" die Datei, in der du zuvor den privaten SSH-Schlüssel gespeichert hast
    • Anschließend über den Button "Save" die Eingaben bestätigen
    • Die sich öffnende Abfrage, ob eine Standard-Konfig eingerichtet werden soll, mit Yes beantworten


  7. Online-Repository "herunterladen":
    • Gehe in der Repository-Übersicht von GitExtensions auf "Commands --> Checkout branch"
    • Es öffnet sich ein kleines Fenster mit Titel "Checkout branch"
    • Wähle den Punkt "Remote branch" aus
    • Wähle für das Feld "Select branch" den Eintrag "master" in der Auswahlbox
    • Bestätige dies über den Button "Checkout". Es wird nun der aktuelle Stand des Online-Repositories in dein lokales Repository geladen


  8. Fertig

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
3
Änderungen einreichen
Ein Git-Repository besteht im Groben aus 3 Teilen:

  1. Workspace / Arbeitsverzeichnis:
    Das ist der aktuelle Stand im Ordner eines Repositorys.
    Änderungen im Arbeitsverzeichnis müssen per "Commit" dem Archiv mitgeteilt werden.

  2. Stage / Index:
    Das ist eine Art Zwischenablage, in der man Änderungen vormerken kann. Man kann sie zu späteren Zeitpunkt ergänzen oder wieder zurücknehmen.
    Beim normalen Arbeitsablauf übernimmt man Änderungen aus dem Arbeitsverzeichnis in die Stage und reicht sie meist direkt anschließend beim Archiv ein.

  3. Archiv:
    Das ist das eigentliche Repository. Das Archiv enthält alle Änderungen und Versionsstände, die jemals eingereicht wurden.


Wie angedeutet muss man seine Änderungen immer ins Archiv übernehmen, damit sie ggf. wiederhergestellt werden können.
Dies geschieht über GitExtensions recht komfortable über einen "Commit".
Der Commit kann über die Repository-Übersicht von GitExtensions aufgerufen werden. Alternativ auch über das Kontextmenü auf eurem Arbeitsverzeichnis, sofern ihr das bei der Installation gestattet habt.

Commit
Das Commit-Fenster zeigt links oben die Änderungen im Arbeitsverzeichnis und links unten die Änderungen, die in die Stage übernommen wurden.

Als ordentlicher Mitarbeiter sollte man rechts unten einen Kommentar zu den Änderungen angeben, die man gemacht hat. Die erste Zeile des Kommentar dient dabei als Überschrift des gesamten Commits. Daher sollte immer zumindest eine Überschrift eingetragen werden. Der eigentliche Kommentar kann durch eine Leerzeile getrennt eingetragen werden.

Über den Button "Commit" werden die Änderungen im lokalen Repository eingereicht.

Push
Ein einfacher Commit teilt Änderungen nicht den anderen Mitarbeitern mit, da sie ja nur im lokalen Repository liegen. Damit Mitarbeiter die Änderungen mitbekommen, muss man ein Push anwenden.

Ein Push reicht Änderungen im lokalen Repository im Online-Repository ein. Dies kann nachträglich geschehen, indem man in der Repository-Übersicht von GitExtensions auf "Commands --> Push" geht.
Anschließend einfach den Namen des Online-Repository wählen und bestätigen.

Alternativ bietet das Commit-Fenster neben dem Button "Commit" einen Button "Commit & push", über den der Push direkt beim Commit ausgeführt werden kann.

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
4
Änderungen abholen
Wie bekommt man nun Änderungen mit, die andere Mitarbeiter eingereicht haben?
Ganz einfach, diese liegen ja im Online-Repository. Es ist lediglich ein "Pull" notwendig, um besagte Änderungen aus dem Online-Repository ins lokale Repository bzw. Arbeitsverzeichnis zu laden.

Pull
Ein Pull kann über die Repository-Übersicht von GitExtensions aufgerufen werden: "Commands --> Pull". Alternativ auch über das Kontextmenü auf eurem Arbeitsverzeichnis, sofern ihr das bei der Installation gestattet habt.

Anschließend öffnet sich das Pull-Fenster.
Dort wählst du wieder bei "Remote" das Online-Repository und bestätigst das Ganze mit Klick auf den Button "Pull". Optional kann vorher bei "Remote Branch" auch ein spezieller Zweig (Branch) abgeholt werden, wenn nichts gewählt ist, wird der Master-Zweig genommen.

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
5
Umzugs des Repositories
Das Repo wurde von Codaset.com nach Assembla.com umgezogen.

Ich hab bereits die Anleitung entsprechend angepasst.

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
1




"Stargate" and all related materials are the property of MGM Television Entertainment.
Please read the site's trademark declaration.