2010-12-27 8 views
0

Wir git erstellt haben nackte im Shared-Modus und die Daten-Repository erstellt von den git nackten klonen.Wie Backup-Repository mit Hardlinks erstellt

Da beide git bare Repo und git Daten Repo auf dem gleichen Dateisystem liegt, so scheint es, die Objektdateien um Platz zu sparen sind hardlinked.

ich sichern wollte das git bare Repository jetzt und das Daten-Repository löschen.

Ich fürchte, dass die Daten-Repository löschen, werden die nackten Repository in der veralteten Zustand aufgrund der Objektdateien werden lassen hardlinked.

Gibt es einen Weg, wo ich alle Objektdateien aus dem Datenrepo kopieren kann, die fest mit dem blanken Repo verbunden sind, so dass ich die Daten Repo löschen und den Repo sichern kann?

Ihre Hilfe wird sehr geschätzt.

Antwort

3

Haben Sie keine Angst. Sie können eine der Kopien einfach löschen, ohne die andere zu verlieren. Es gibt kein "Original" und keine "Kopie". Stattdessen sind beide "originale" Dateien, die ohne die andere Seite existieren werden. Nur der Inhalt der Datei wird auf der Festplatte geteilt und somit nur einmal gespeichert.

Das ist keine Eigenschaft von Git. Es ist genau die Art und Weise, wie Hardlinks immer funktioniert haben (im Gegensatz zu Softlinks/Symlinks, die eine klare Unterscheidung zwischen der Linkdatei und der verknüpften Datei haben). Es ist auch der Grund, warum Hardlinks nicht innerhalb eines Systems über Dateisystemgrenzen hinweg funktionieren. Und das ist auch der Grund, warum Funktionen (in mehreren Programmiersprachen), die eine Datei in UN * X-ähnlichen Systemen entfernen, oft "unlink" statt "remove" genannt werden.

Natürlich, da der Inhalt der Datei nur einmal auf der Disk gespeichert sind, werden beide Kopien ändern, wenn Sie eine von ihnen bearbeiten. Aber das ist kein Problem. Git nie _changes_ Dateien in der Objektdatenbank, wenn nur fügt sie hinzu sie (und gelegentlich entfernt (= entkoppelt) sie auf Garbage Collection). Da Objektdateien in Git unveränderlich sind, spielt die Tatsache, dass sie fest mit anderen unveränderlichen Dateien verknüpft sind, keine Rolle (abgesehen davon, dass Speicherplatz gespart wird), weshalb die Option -l jetzt der Standard in git-clone ist.

Verwandte Themen