Je voudrais append un lien symbolique à la subversion et quand je fais une vérification, tout ce qu’il fait est d’append le même lien symbolique à ma caisse, mais j’ai peur de l’append si ce n’est pas ce qui arrive.
Cela fonctionnera aussi longtemps que vous utiliserez une plate-forme Unix / Linux lorsque vous la consulterez. Bonne chance sous Windows car il ne supporte pas les liens symboliques.
Voir la remarque sur cette page dans le livre SVN sur les liens symboliques pour plus d’informations.
Je tiens à souligner ce qui précède. Trop de personnes croient à tort que Windows ne supporte pas les liens symboliques.
Cette désinformation vient du fait que Windows 2000 et Windows XP ne prenaient pas en charge les liens symboliques. Ils ont pris en charge les points de jonction de Directory , mais pas les liens symboliques de style POSIX. Encore plus bizarre, ni Windows 2000 ni Windows XP ne sont linkd
avec la commande linkd
requirejse pour créer ces points de jonction de répertoire.
Ce n’est plus vrai. Windows Vista, Windows 7 et Windows 8 prennent non seulement en charge les liens symboliques, mais également la commande mklink
requirejse. Ces liens symboliques sont compatibles avec les liens symboliques des systèmes d’exploitation compatibles POSIX (Mac OS X, Linux, Unix)
Au coeur du problème:
Bien que Windows prenne désormais en charge les liens symboliques et que ces liens symboliques soient compatibles avec les liens symboliques Unix / Linux / Mac, Subversion lui-même ne prend pas en charge les liens symboliques sous Windows. Je ne sais pas pourquoi c’est le cas.
Je ne recommande pas de placer des liens symboliques dans le référentiel, même si vous ne travaillez que sur des systèmes d’exploitation de type POSIX et non sur Windows. Au lieu de cela, vous devez faire en sorte que vos étapes de création et / ou de déploiement créent tous les liens symboliques requirejs. Cela vous donne plus de flexibilité puisque vous pouvez tester votre système d’exploitation pendant une construction ou un déploiement et gérer les problèmes.
De plus, la création de liens symboliques lors de la phase de création / déploiement entraîne moins de problèmes de maintenance que si vous les avez dans votre référentiel. Imaginez si je renommer, déplacer ou supprimer un fichier qui a un lien symbolique pointant vers lui dans mon référentiel. Je dois aussi me souvenir de rechercher des liens symboliques et de les modifier, ce qui est peu probable. Après tout, il est impossible de regarder un fichier et de connaître tous les liens symboliques qui pointent éventuellement vers ce fichier.
Donc, en résumé:
1. Oui, je sais que le FS dans NTFS est synonyme de système de fichiers.
Rien ne se passe si vous ajoutez un lien symbolique depuis Linux ou un autre système d’exploitation POSIX. Cela fonctionne juste.
Mais lorsque vous essayez d’append un lien symbolique à partir de Windows, vous verrez
C:\repo>svn add test_link svn: E200007: Symbolic links are not supported on this platform
Je suppose que c’est parce que Windows nécessite UAC pour créer un lien symbolique. Si Subversion autorise un lien symbolique sous Windows, UAC interrompt le svn up
normal.
Peut-être que je l’ai manqué dans d’autres réponses, mais j’ai pensé que je pourrais append.
Client Windows 7:
TortoiseSVN 1.8.7, Build 25475 – 64 Bit, 2014/05/05 20:52:12
Subversion 1.8.9, – release
Client Linux:
svn, version 1.6.17 (r1128011)
Les liens symboliques non seulement «survivent» mais peuvent être créés et édités dans le référentiel à partir de Windows. Il vous suffit de créer un fichier avec le contenu suivant et une propriété SVN de svn:special
= *
.
link name_of_source_file
Lorsque vous vérifierez cela avec un client SVN qui sait créer des liens symboliques, un sera créé pour vous. Le client Windows 7 crée des fichiers texte, mais le client Linux crée des liens symboliques.
En réponse à la remarque de zb226:
“Un client SVN qui sait créer des liens symboliques” est un binary construit à partir de sources, qui a été écrit pour utiliser une fonction, qui sait créer un lien symbolique, dans un système de fichiers qui a un concept de liens symboliques. .
Un rapide coup d’œil à la source de Subversion du 1.8.13 apparaît à la ligne 608 de io.c en utilisant la fonction de lien symbolique dont je ne connais pas l’existence dans les bibliothèques Windows standard.
Une autre réponse souligne qu’il existe un programme appelé mklink qui peut être utilisé pour créer un lien symbolique sur Windows 1 . En C et C ++, vous devriez normalement inclure une bibliothèque au lieu d’appeler un programme qui peut ou non exister. Il semble que Microsoft ait une fonction similaire appelée CreateSymbolicLink, mais elle semble très immature. Je ne vois rien à savoir si cela fonctionne sur NTFS, qui est ce que 99,9% des répertoires de travail SVN seront sauvegardés sur Windows, je pense. Il ne mentionne pas ReFS mais je n’imagine pas que cela sera couramment utilisé pendant un bon moment.
En résumé, il semble que la disponibilité et la stabilité des liens symboliques sous Windows avec NTFS n’existent pas. Les développeurs de Subversion n’ont donc pas ajouté de code pour utiliser les commandes équivalentes de Windows.
Lorsque (ou si) les liens symboliques deviennent un élément quotidien de Windows, je pense qu’ils feront partie des versions Windows des clients Subversion. La plupart des personnes que je connais qui travaillent uniquement sous Windows ne savent même pas ce qu’est un lien symbolique et parmi les personnes qui travaillent avec des systèmes d’exploitation autres que Windows, peu savent que Microsoft les expérimente.
1. Dans la documentation de mklink, il est écrit que ceci s’applique à “Windows Vista, Windows Server 2008, Windows Server 2012, Windows 8” et omet étrangement Windows 7. Je suppose que cela signifie qu’il existe et ne fonctionne que sur des versions spécifiques de Windows avoir des versions spécifiques de NTFS qui prennent en charge les liens symboliques. Je n’imagine pas que les liens symboliques ont toujours existé dans NTFS.
Je viens de remarquer que le client Git for Windows de Github prend en charge les liens symboliques Windows NTFS. Ils fournissent même des instructions sur la façon de l’activer! Un autre clou à append au cercueil de Subversion.
Eh bien … Je ne suis pas sûr de la réponse technique ou des ramifications possibles, mais je viens de l’essayer. J’ai créé un lien sym vers un répertoire dans une caisse que j’avais. Ajouté et engagé. Nuked la caisse entière. Re-vérifié et le lien sym est toujours là avec le lien approprié.
J’espère que cela suffira à vos soucis;)
Lorsqu’un lien symbolique est engagé dans un repository Subversion, Subversion se souvient que le fichier était en fait un lien symbolique, ainsi que l’object auquel le lien symbolique «pointe».
Lorsque ce lien symbolique est extrait vers une autre copie de travail sur un système autre que Windows, Subversion reconstruit un véritable lien symbolique au niveau du système de fichiers à partir du lien symbolique versionné.
Mais cela ne limite en rien la facilité d’utilisation des copies de travail sur des systèmes tels que Windows qui ne prennent pas en charge les liens symboliques. Sur de tels systèmes, Subversion crée simplement un fichier texte régulier dont le contenu est le chemin indiqué par le lien symbolique d’origine. Bien que ce fichier ne puisse pas être utilisé comme lien symbolique sur un système Windows, il n’empêchera pas non plus les utilisateurs Windows d’exécuter leurs autres activités liées à Subversion.
Tiré de svn-book
La faq indique que la raison pour laquelle les liens symboliques ne sont pas supportés sur Windows est que, par défaut, seuls les administrateurs peuvent créer des liens symboliques.