Git et liens en dur
Considérant que Git ne reconnaît pas les liens symboliques qui pointent à l'extérieur du référentiel, est-il un problème à l'aide de liens en dur?
Pourrait Git percer?
Pouvez-vous svp m'indiquer des informations détaillées?
- De quoi êtes-vous en train de faire et pourquoi? Un lien en dur n'est pas différent à partir d'un fichier normal. Si vous avez déjà été à tirer une nouvelle version à partir d'un autre référentiel, il serait de remplacer l'un de vous a - quel est le point de liaison à quelque chose en dehors de l'opération?
- Git va reconnaître les liens symboliques qui pointent vers un chemin hors du référentiel.
- Pas de mipadi, le seul moyen est en agitant les fichiers dans le repo et le symjbolic liens de dans leur "vraie" emplacement
Vous devez vous connecter pour publier un commentaire.
L'arbre de l'objet, soit dans les répertoires du Git, magasins nom de fichier et (sous-ensemble d'autorisations. Il ne stocke pas les inode numéro (ou autre type de fichier id). Donc des liens en dur ne peut pas être représenté dans git, du moins pas sans outils tiers tels que metastore ou git-cache-meta (et je ne suis pas sûr si c'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 prendre en compte le fait que git n'a pas essayer de préserver des liens physiques, de sorte qu'ils peuvent être cassés par git.
Sur liens symboliques qui pointent à l'extérieur de référentiel: git a pas de problèmes avec eux et se doivent de préserver le contenu des liens symboliques... mais l'utilité de ces liens est douteux pour moi que de savoir si ces liens symboliques serait cassé ou pas dépend de la structure du système de fichiers à l'extérieur dépôt git, et pas sous le contrôle de git.
Ok, maintenant, c'est un retard de réponse =D
Je trouve que, à l'aide de crochets, vous pouvez capturer l'
git pull
événement (quand il y a quelque chose à tirer...) l'écriture du script gestionnaire d'événement pour.git/hooks/post-merge
fichier.Tout d'abord, vous devez
chmod +x
il.Ensuite, mettez le
ln
commandes à l'intérieur afin de recréer des liens en dur à chaque traction. Neat hein!Il fonctionne, j'ai juste besoin que pour mon projet et
ls -i
indique que les fichiers ont été reliés automatiquement aprèspull
.Mon exemple de
.git/hooks/post-merge
:IMPORTANT: Comme vous pouvez le voir, le chemin vers un fichier dans votre espace de stockage doit commencer avec
$GIT_DIR
, puis ajouter l'partielle chemin relatif vers le fichier.Aussi important:
-f
est nécessaire, parce que vous êtes à recréer le fichier de destination.De cette msysgit problème
De la question ont été orienté Windows (depuis qu'il est à propos de msysgit) et le débat sur le soutien potentiel de lien symbolique.
Mais le commentaire à propos de lien en dur préoccupations Git en général.
Google git préserver des liens en dur " et il montre que git ne sais pas comment faire pour préserver le lien en dur de la structure autant que je sache, peut-être par la conception.
Des projets Web de la mine utilisez des liens en dur comme suit:
Si je voulais apporter des modifications à index.php -je le changer en un seul endroit et les liens en dur (détails sur le produit pages) point à la modification, à l'exception git ne permet pas de conserver cette relation au cours du clonage et en tirant sur d'autres ordinateurs.
sur une autre machine va créer un nouveau index.php pour chaque lien en dur.
hardlink --ignore-time
sur/var/lib/jenkins
, pour récupérer de l'espace disque. Pendant la journée, certains fichiers unhardlinked de nouveau aprèsgit pull
oumvn compile
mais c'est ok, j'attends que cela se produise. Si git ont été de préserver les liens durs, puis mon espace disque stratégie de recyclage ne fonctionne pas.