2009-09-30 9 views
21

Jemand fragte bereits, wie Sie git Symlinks folgen können. Es gab eine Antwort für ein symlinked Verzeichnis, aber nicht für eine symlinked Datei. Es war auch vor über einem Jahr.Get git Symlinks (wieder) zu folgen

Frage: Wie erhalten Sie git, einem Symlink zu folgen und die Datei hinzuzufügen, auf die er sich bezieht?

Hier ist die alte Frage: How can I get git to follow symlinks?. Es gibt auch eine Frage darüber, was git normalerweise tut How does git handle symbolic links?. Ich bin auf der Suche nach einer Möglichkeit, dieses Verhalten zu ändern.

Wenn Sie sich interessieren: Ich laufe Git 1.5.4.3 auf Unix und git Version 1.6.0 auf Mac.

Antwort

22

Ich bin mir ziemlich sicher, dass es keinen Weg gibt.

Außerdem klingt es wie eine Art unsiches, undefiniertes Verhalten - was sollte es tun, wenn Sie zwischen den Versionen der Datei wechseln und es schreiben müssen? Vor allem, wenn Sie eine Revision vor dem Hinzufügen auschecken, möchten Sie wirklich, dass der Inhalt einer Datei außerhalb des Repositorys entfernt wird? Was passiert, wenn Sie zum Präsentieren und Wiederherstellen der Datei zurückkehren oder wenn der Symlink selbst geändert wird - sollte er auch den Symlink selbst verfolgen?

Dinge entlang dieser Linien waren Ende des letzten Jahres said on the git mailing list in Reaktion auf im Wesentlichen die gleiche Frage.

+0

das sind einige ausgezeichnete Punkte - danke. – Peter

+1

Ja, leider. Ich weiß, dass es in einigen Fällen wirklich nett wäre, Links zu folgen. Es gab einen Ansatz, der in einer der Antworten dort vorgeschlagen wurde - machen Sie die externen Repo-Dateien Symlinks in den Repo und möglicherweise noch Symlinks zu ihnen aus dem Repo. Hoffe, du findest einen Weg, um zu tun, was du brauchst! – Cascabel

6

wie etwa harte Links verwenden, dann git keine Ahnung, es ist eine verknüpfte Datei hat (oder?)

11

Sie können Hardlinks anstelle von Softlinks (auch bekannt als Symlinks) verwenden. Git wird dann den Inhalt der verknüpften Datei sehen. Der Nachteil ist, dass beim Auschecken die Datei als eine normale Datei im ausgecheckten Verzeichnis erstellt wird, da Git sie nicht als Link versteht.

2

Das Problem mit der Verwendung von Hardlinks ist, dass, wenn etwas an den anderen Ort schreibt die Datei ersetzt, anstatt nur Änderungen zu schreiben, dann hat die Zieldatei einen neuen Inode auf dem Dateisystem und der Hardlink zeigt nicht mehr darauf, Die Dateien sind also nicht synchron.