Frage

In Anbetracht, dass Git nicht erkennt symbolische Links diesen Punkt außerhalb des Lagers, ist es ein Problem harte Links verwenden?

Könnte Git sie brechen? Können Sie mir bitte auf detaillierte Informationen verweisen?

War es hilfreich?

Lösung

Der ‚Baum‘ Objekt, was Verzeichnisse in Git, speichert Dateinamen und (Teilmenge der Berechtigungen). Es speichert keine Inode-Nummer (oder eine andere Art von Datei-ID). Deshalb harte Links kann nicht in git dargestellt werden, zumindest nicht ohne Tools von Drittanbietern wie Metastore oder git-Cache-meta ( und ich bin nicht sicher, ob es möglich ist, auch mit diesen Tools).

Git versucht, Dateien nicht zu berühren, dass es nicht zu aktualisieren braucht, aber man muss berücksichtigen, dass git nicht Hardlinks nicht versuchen zu erhalten, so dass sie von git gebrochen werden.


über symbolische Links außen gerichteten Repository : git hat keine Probleme mit ihnen und soll Inhalte von symbolischen Links bewahren ... aber Nützlichkeit solcher Links ist zweifelhaft zu mir, als ob diese Symlinks gebrochen werden würde oder nicht, hängt von dem Dateisystem-Layout außerhalb git-Repository und nicht unter der Kontrolle von git.

Andere Tipps

Ok, jetzt ist dies eine späte Antwort = D

Ich fand heraus, dass mit Haken, können Sie das git pull Ereignis erfassen (wenn es etwas zu ziehen ist ...) Schreiben Sie das Skript Ereignishandler .git/hooks/post-merge Datei.

Als erstes müssen Sie es chmod +x.

Dann legen die ln Befehle im Inneren harten Links zu jedem Zug neu zu erstellen. Ordentlich huh!

Es funktioniert, ich brauche nur, dass für mein Projekt und ls -i zeigt, dass die Dateien automatisch nach pull verknüpft wurden.


Mein Beispiel .git/hooks/post-merge:

#!/bin/sh
ln -f $GIT_DIR/../apresentacao/apresentacao.pdf $GIT_DIR/../capa/apresentacao.pdf
ln -f $GIT_DIR/../avaliacoesMono/avaliacao_monografias_2011_Nilo.pdf $GIT_DIR/../capa/avaliacoes.pdf
ln -f $GIT_DIR/../posters/poster_Nilo_sci.pdf $GIT_DIR/../capa/poster.pdf
ln -f $GIT_DIR/../monografia/monografia_Nilo.pdf $GIT_DIR/../capa/monografia_Nilo.pdf

. WICHTIG: Wie Sie sehen können, der Pfad zu jeder Datei in Ihrem Repository mit $GIT_DIR beginnen sollte, dann den Teil-Pfad zur Datei relativ hinzufügen

Auch wichtig:. -f ist notwendig, da Sie die Zieldatei neu erstellen

Von dieser msysgit Ausgabe

Junction Punkte sind keine symbolischen Links; daher sind symbolische Links einfach ungestützt in msysGit.

Auch Hard-Links wurden nie von Git verfolgt .

Das Problem waren Windows-orientiert (da es sich um msysgit ist) und die Debatte über die mögliche Unterstützung von Symlink.
Aber der Kommentar über Hardlink Bedenken Git im Allgemeinen.

Google ‚git harte Links beibehalten‘ und es zeigt, dass git nicht weiß, wie schwer Linkstruktur AFAIK zu erhalten, vielleicht durch Design.

Webprojekte von mir verwenden harte Links wie folgt:

www/products/index.php
www/products/dell_latitude_id577/index.php #(hard linked to above)
www/products/dell_inspiron_id323/index.php #(hard linked again to above)

me@server:www/products$ ls -l index.php
-rwxr-xr-x 3 me me 1958 Aug 22 22:10 index.php*

Wenn ich wollte Änderungen an index.php ich es an einer Stelle ändern und die Hard-Links (Produktdetailseiten) zeigt auf die Änderungen -. Außer git nicht über diese Beziehung bewahren während der Klonierung und Ziehen an anderen Computern

me@server:www$ git pull

auf einer anderen Maschine wird eine neue index.php für jede feste Verknüpfung erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top