Was ist Konfigurationsverwaltung? (S.5)
Identifikation, Verwaltung und Dokumentation von Software-Einheiten, inkl. Bereitstellung älterer Versionen.
Wer übernahm früher die Aufgabe der Konfigurationsverwaltung? (S.5)
Eine dedizierte Rolle wie ein „Archivar“ in der Organisation.
Wer übernimmt heute diese Aufgaben? (S.5)
Spezialisierte Software-Systeme, die technisch betrieben und gewartet werden müssen.
Welche Zuständigkeiten hat die Konfigurationsverwaltung? (S.6)
Bereitstellung von Quellcode/ Änderungskontrolle/ (früher) Koordination und Konfliktauflösung.
Was bedeutet „Single Point of Truth“ in der Konfigurationsverwaltung? (S.7)
Zentraler, verbindlicher Speicherort für alle Versionen und Varianten einer Software-Einheit.
Warum ist die eindeutige Identifikation und Archivierung wichtig? (S.7)
Um alte Releases korrekt rekonstruieren zu können und ungewollte Änderungen zu verhindern.
Welche Metriken können in der Konfigurationsverwaltung erhoben werden? (S.7)
Kennzahlen wie Nutzungshäufigkeit, Fehlerdichte, Änderungsrate.
Welche Umgebungen gibt es in typischen Softwareentwicklungsprozessen? (S.8)
Development, Unit Test, Staging, Reference, System Test, Production.
In welcher Umgebung benötigt man typischerweise Stubs? (S.8)
In frühen Testumgebungen wie Unit Test oder Development, wenn abhängige Komponenten noch fehlen.
Was ist ein Versionskontrollsystem? (S.9)
Ein System zur Verwaltung von Versionshistorien und Änderungen an Dateien.
Was unterscheidet CVCS von DVCS? (S.9)
CVCS speichert Historie zentralauf einem server, DVCS verteilt auf mehrere Repositories, Server optional.
Warum kann DVCS zentral betrieben werden, CVCS aber nicht dezentral? (S.9)
DVCS speichert vollständige Historien lokal, CVCS benötigt zwingend den zentralen Server.
Nenne Beispiele für CVCS. (S.10)
Subversion, CVS, RCS, Visual Source Safe, ClearCase.
Nenne Beispiele für DVCS. (S.10)
Git, Mercurial, Bazaar.
Welche Grundbefehle gehören zum Git-Workflow? (S.12)
init, clone, add/stage, commit, push, pull, log, status.
Welche Software ist nötig, um mit Git zu arbeiten? (S.13)
Ein Git-Client, installiert z. B. über Paketverwaltung oder von git-scm.com.
Wie prüft man, ob Git korrekt installiert ist? (S.14)
Mit dem Befehl `git --version`.
Wie initialisiert man ein Git-Repository? (S.15)
Mit `git init` in einem leeren Verzeichnis oder über einen Git-Hoster.
Wie klont man ein bestehendes Git-Repository? (S.16)
Mit `git clone <URL>`, unterstützt werden Git-, HTTP(S)- und SSH-Protokolle.
Wie zeigt man die Historie eines Repositories an? (S.17)
Mit `git log` oder kompakt mit `git log --oneline`.
Wozu dient `git status`? (S.18)
Zeigt Änderungen im Arbeitsverzeichnis und Staging-Bereich an.
Wie fügt man Dateien zur Versionskontrolle hinzu? (S.19)
Mit `git add <Dateiname>`.
Was ist die Staging-Area? (S.20)
Bereich, in dem Änderungen vorgemerkt werden, bevor sie committet werden.
git stage <Datei>
Wie macht man einen Commit in Git? (S.21)
Mit `git commit` für gestagte Änderungen oder `git commit -a` für alle geänderten Dateien.
Wie ändert man den Standard-Editor für Git? (S.22)
Mit `git config --global core.editor "<Editorname/ bzw nano>"`.
Wie veröffentlicht man lokale Commits? (S.23)
Mit `git push` in ein konfiguriertes Remote-Repository.
Wie holt man Änderungen vom Remote-Repository? (S.24)
Mit `git pull`.
Welche Statuszustände kann eine Datei in Git haben? (S.25)
Unversioniert, zum Commit vorgemerkt, geändert, aufgezeichnet.
Wie prüft man konfigurierte Remotes? (S.27)
Mit `git remote -v`.
Wie setzt man eine Datei auf einen früheren Stand zurück? (S.28)
Mit `git checkout <Pfad-zur-Datei>` oder `git checkout <Commit-Hash>`.
Wozu dient Tagging in Git? (S.29)
Um bestimmte Stände (z. B. Releases) mit Namen zu versehen.
Sie können einzelnen Ständen mittels Tags auch Namen
vergeben (nützlich etwa bei Veröffentlichungen/Releases):
git tag name-des-tags
Auch tags bleiben zunächst lokal, bis Sie diese hochladen:
git push origin <tagname>
Oder um alle Tags hochzuladen:
git push origin --tags
Wie behebt man Merge-Konflikte durch Neu-Klonen? (S.30)
Ordner umbenennen, neu klonen, Änderungen migrieren, committen, pushen.
Wie löst man Merge-Konflikte direkt in Git? (S.31)
Mit `--ours` oder `--theirs` Strategien oder dateiweiser Konfliktauflösung.
Bestimmte Datei aus dem Repositorium durch lokale ersetzen:
git checkout --ours <Dateiname>
Für alle Konflikte lokale Datei nutzen:
git merge --strategy-option ours
Änderungen der Gegenseite nehmen, eigene verwerfen:
git checkout --theirs <Dateiname> bzw.
git merge --strategy-option theirs
Was ist der Unterschied zwischen zentralisierter und dezentraler Versionsverwaltung? (S.33)
Zentralisiert = eine Historie auf einem Server/ Dezentral = vollständige Historie auf jedem Rechner, Server optional.
Warum funktioniert eine dezentrale Versionsverwaltung ohne Server? (S.33)
Jede Kopie enthält die gesamte Historie und kann unabhängig arbeiten.
Zuletzt geändertvor einem Monat