Nos développeurs utilisent un mélange de systèmes d'exploitation basés sur Windows et Unix. Par conséquent, les liens symboliques créés sur des machines Unix deviennent un problème pour les développeurs Windows. Dans Windows (msysgit), le lien symbolique est converti en un fichier texte avec un chemin vers le fichier vers lequel il pointe. J'aimerais plutôt convertir le lien symbolique en un véritable lien symbolique Windows.
Le ( actualisé ) La solution que j'ai à ce problème est la suivante :
- Ecrire un script post-checkout qui recherchera récursivement les fichiers textes "symlink".
- Remplacez-les par un lien symbolique Windows (en utilisant mklink) avec le même nom et la même extension que le lien symbolique fictif.
- Ignorez ces liens symboliques Windows en ajoutant une entrée dans .git/info/exclude.
Je ne l'ai pas mis en œuvre, mais je pense qu'il s'agit d'une approche solide de ce problème.
Questions :
- Quels inconvénients voyez-vous, le cas échéant, à cette approche ?
- Est-ce que ce script post-checkout est même implémentable ? C'est-à-dire que je peux trouver récursivement les fichiers "symlink" factices que git crée ?
- Quelqu'un a-t-il déjà travaillé sur un tel script ?
7 votes
Bien que Git supporte les liens symboliques, je vous déconseille fortement de les stocker comme liens dans votre dépôt, notamment si vous travaillez aussi avec ce code sous Windows.
4 votes
@Greg Hewgill - Je suis tout à fait d'accord avec vous. Malheureusement, la nature de notre base de code nécessite des liens symboliques... donc les supprimer n'est pas une option pour nous.
13 votes
Vous pouvez également demander sur la liste de diffusion msysgit pourquoi ils ne l'ont pas implémenté de cette manière dès le départ.
0 votes
Le problème est le suivant : que se passe-t-il lorsqu'ils ajoutent un nouveau lien dans Windows ? Votre solution est parfaite pour les ajouter sous Linux. Voir ma réponse, j'espère que vous n'aurez pas besoin d'utiliser des scripts.
11 votes
@GregHewgill pourquoi pas ? Windows supporte à la fois les liens symboliques et les jonctions - cela me semble vraiment être une fonctionnalité manquante dans les versions Windows de Git...
1 votes
La création de liens symboliques sous Windows ne fonctionne toujours pas, même en date du Git pour Windows v2.3.6. .
0 votes
@drizzd mingw/msys est assez vieux pour avoir été conçu à l'origine pour fonctionner sur Win9x. Win9x n'a rien qui ressemble à un lien symbolique.
2 votes
@DanDascalescu Pourriez-vous expliquer 'la création de liens symboliques sous Windows ne fonctionne toujours pas' ? Voulez-vous dire que la création de liens symboliques et leur compréhension par Git ne fonctionnent pas ? Ou essayez-vous de dire que les liens symboliques sur les partitions NTFS sous Windows ne fonctionnent pas ? J'ai constaté que les jonctions en NTFS répondent à presque tous les besoins d'un utilisateur sous Windows, à l'exception des deux plus évidents : les chemins relatifs et les fichiers. Ce qui ne fonctionne pas sous Windows, c'est d'empêcher les utilisateurs du groupe Admin de créer des liens symboliques de type Dir. C'est absurde et c'est le problème fondamental de tout ce qui concerne les liens symboliques dans Windows.
15 votes
Avec le "mode développeur" activé dans Windows 10, la création de liens symboliques ne nécessite pas de droits d'administrateur ! (D'autres ont fait le même commentaire sur les réponses moins votées, mais je ne les ai pas vues. J'espère que ce commentaire sera plus visible pour les futurs lecteurs).