Thread Source Code verwalten (30 answers)
Opened by tophoven at 2009-07-15 09:40

murphy
 2009-07-19 22:11
#123401 #123401
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2009-07-19T15:12:14 sid burn
Quote
Bei einem Versionskontrollsystem ist es mir wichtig, dass ein Datenverlust so gut wie ausgeschlossen werden kann.
[...]

Wenn du Datensicherheit möchtest musst du backups machen. Eine Speicherung in klartext ist da weniger Sicherer als eine Speicherung in einer Datei.
[...]

Datensicherheit im Programmdesign und Backups schließen sich nicht aus, sondern ergänzen sich. Ich mache ja auch Backups von Datenbanken, will aber trotzdem, dass die Datenbank ACID-Transaktionen kann.

Du kannst es gerne albern finden, dass ich Datensicherheit auf mehreren Ebenen haben will, aber ich sehe es eher so, dass ich da einfach höhere Anforderungen als Du habe. Zu meiner Paranoia gehört eben auch, dass ich im Extremfall mit mehreren ausgefallenen Backups und nur einer verbleibenden, teilweise beschädigten Kopie, immer noch eine realistische Chance zur Datenrettung haben will.

Quote
Quote
Ferner ist diese Speichervariante extrem ineffizient, wenn man wie ich auch gerne mal lokal mehrere Branches anlegt um verschiedene Dinge auszuprobieren.
[...]

Naja die Speichervariante ist eigenltich extrem effizent. Zum Suchen muss nämlich nur eine Datei durchsucht werden. Und eine Datei zu öffnen ist I/O mäßig schnellerer sprich effizenter als zig hunderte kleine Dateien. Und da es komprimiert ist, kann git schneller commits anzeigen und darin suchen als wenn es zig kleine Dateien hat.
[...]

Zur Geschwindigkeit habe ich gar nichts gesagt, da man darüber nicht vernünftig diskutieren kann, ohne Randbedingungen wie das verwendete Dateisystem und dessen Einstellungen genauer festzulegen und richtige Benchmarks zu machen.

Der Speicherverbrauch mehrerer Repositories mit ähnlichem Inhalt ist aber definitiv höher, wenn jedes Repository die gesamte Versionsgeschichte als eine große Datei enthält, als wenn sich diese Repositories untereinander teilweise dieselben Daten, z.B. mittels Hardlinks, teilen.

Ich denke, wir haben hier wohl etwas aneinander vorbeigeredet, da bei Git der Begriff Branch etwas anders verwendet wird als bei einigen anderen verteilten Versionskontrollsystemen. Ich bin es mehr gewohnt, dass ein Repository im wesentlichen identisch mit einem Branch ist und habe beim Schreiben nicht beachtet, dass Git ja pro Repository mehrere Branches speichern kann.

Quote
[...]
Was daran jetzt eine Designentscheidung ist weiß ich nicht. Hat man ein haufen kleine Dateien ist es ineffizent und man verschwendet viel speicher. Bei jedem commit allerdiengs immer wieder alles zusammenzuführen ist auch nicht gerade effizent.
[...]

Nun, das Speicherformat der Repositories ist auf jeden Fall eine Designentscheidung. Dass Git hier praktisch sein eigenes Dateisystem implementiert, halte ich für eine vorschnelle Optimierung an der falschen Stelle: Es wird ohne Not Funktionalität des Kernels dupliziert und zusätzliche Komplexität in ein Anwendungsprogramm verlagert. Selbst wenn das im Endeffekt eine besonders effiziente Lösung sein sollte, wäre für meinen Geschmack der Entwicklungsaufwand besser angelegt, wenn man stattdessen existierende Dateisystemtreiber entsprechend verbessern würde.

Quote
[...]
Naja und gerade für lokale branches ist Git ja bekannt das es schnell ist, und nein, für lokale branches muss auch nichts kopiert werden. Wie kommst du darauf das für branches ein haufen kopiert werden muss?
[...]

Siehe oben: Aus Gewohnheit setze ich schnell mal Repositories und Branches gleich.

Quote
Quote
Bekommt es auch wirklich mit, dass die gleiche Datei jetzt anders heißt und übernimmt korrekt die Versionsgeschichte?

Ja bekommt es. Es bekommt es sogar mit wenn du die Datei leicht modifizierst. Git zeigt dir prozentual an zu welcher Datei die neue Datei identisch ist.

Das ist natürlich cool :-) Da ich Git selten verwende, habe ich nicht bemerkt, dass dieses Feature inzwischen implementiert ist.

Quote
Quote
Nutzen muss ich sie nicht, aber wenn ich zum Beispiel einfach mal man git eingebe, bekomme ich eine solch riesige Liste von Kommandos um die Ohren gehauen, dass ich schon gar keine Lust mehr habe, mich auf die Suche nach dem passenden Highlevelbefehl zu machen, den ich brauche.

Einfach unter der Rubrik "High-Level Commands" zu schauen ist wohl zu schwer?

Einfach zwei Manpages git und git-lowlevel schreiben, damit der Überblick gewahrt bleibt und man nicht mit überflüssigen Informationen bombardiert wird, ist wohl zu schwer? ;-)

Quote
[...]
Ansonsten sind die High-Level befehle ziemlich identisch zu denen in anderen VCS Systemen. Und wenn du die Befehle einmal kennst, musst du in der Regel auch nicht mehr einen Befehl suchen.
[...]

Genau deswegen hat mich die Manpage ja so genervt: Die Kommandos, die ich nicht durch Ausprobieren sofort gefunden hatte, fand ich im dortigen Datenwald auch erstmal nicht ;-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Source Code verwalten