Question

Considérant que Git ne reconnaît pas les liens symboliques qui pointent en dehors du dépôt, est-il un problème à l'aide des liens durs?

pourrait Git les casser? Pouvez-vous s'il vous plaît me indiquer des informations détaillées?

Était-ce utile?

La solution

L'objet « arbre », représentant les répertoires dans Git, nom de fichier stocke et (sous-ensemble de) autorisations. Il ne stocke pas le numéro inode (ou tout autre type d'identification de fichier). Par conséquent, liens durs ne peuvent pas être représentés dans git , du moins pas sans outils tiers tels que ou href="https://gist.github.com/andris9/1978266" rel="noreferrer"> git-cache-méta ( et je ne sais pas s'il est possible même avec ces outils).

Git essaie de ne pas toucher les fichiers qu'il n'a pas besoin de mise à jour, mais vous devez tenir compte du fait que git ne cherche pas à préserver les liens physiques, de sorte qu'ils peuvent être brisés par git.


A propos de liens symboliques vers l'extérieur référentiel : git n'a aucun problème avec eux et devrait préserver le contenu des liens symboliques ... mais l'utilité de ces liens est douteux pour moi, comme si ces liens symboliques seraient brisés ou ne dépend pas de la mise en page du système de fichiers à l'extérieur dépôt git, et non sous le contrôle de git.

Autres conseils

Ok, maintenant ceci est une réponse tardive = D

J'ai découvert que, en utilisant des crochets, vous pouvez capturer l'événement git pull (quand il y a quelque chose à tirer ...) écrire le gestionnaire d'événements de script fichier .git/hooks/post-merge.

D'abord, vous devez chmod +x il.

Ensuite, mettez les commandes ln à l'intérieur pour recréer des liens durs à chaque tirage. hein Neat!

Il fonctionne, je voulais juste que pour mon projet et ls -i montre que les fichiers ont été automatiquement liés après pull.


Mon exemple de .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

IMPORTANT:. Comme vous pouvez le voir, le chemin vers un fichier dans votre répertoire doit commencer par $GIT_DIR, puis ajoutez le chemin relatif au fichier partiel

Il est également important. -f est nécessaire, parce que vous recréez le fichier de destination

De ce numéro msysgit

  

Points de jonction ne sont pas des liens symboliques; Par conséquent, les liens symboliques sont tout simplement   non pris en charge dans msysGit.

     

En outre, des liens durs ne furent jamais suivies par Git .

La question était Windows orientée (car il est sur le point msysgit) et le débat sur le soutien potentiel de symlink.
Mais le commentaire de lien dur préoccupations Git en général.

Google git préserver des liens durs »et il montre que git ne sait pas comment préserver la structure des liens dur AFAIK, peut-être par la conception.

Projets Web de la mine utilisent des liens durs comme suit:

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*

Si je voulais apporter des modifications à index.php je change en un seul endroit et les liens durs (pages voir la fiche produit) le point sur les changements -. Sauf git ne conserve pas cette relation pendant le clonage et en tirant sur d'autres ordinateurs

me@server:www$ git pull

sur une autre machine va créer une nouvelle index.php pour chaque lien dur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top