Qu'advient-il si j'ajoute un lien symbolique à la subversion?
J'aimerais ajouter un lien symbolique à la subversion et quand je fais un checkout tout ce qu'il fait est d'ajouter le même lien symbolique droit à ma caisse, mais j'ai peur de l'ajouter si ce n'est pas ce qui se passe.
- vous pourriez expérimenter avec un jetable projet, de sorte que vous ne risquez pas de votre projet.
- N'ayez pas peur, il fait ce que vous attendez.
Vous devez vous connecter pour publier un commentaire.
Il va travailler aussi longtemps que vous êtes sur un Unix/Linux lorsque vous check it out. Bonne chance sur Windows car il ne supporte pas les liens symboliques.
Voir la note sur ce page dans le SVN Livre sur les liens symboliques pour plus d'informations.
Windows Vista, Windows 7 et Windows 8 un véritable soutien des liens symboliques sur le système de fichiers NTFS1. Ces liens symboliques sont entièrement compatibles avec le système de fichiers Unix liens symboliques
Je tiens à souligner la ci-dessus. Trop de gens à tort croire que Windows ne prend pas en charge les liens symboliques.
Cette désinformation car Windows 2000 et Windows XP ne supporte pas les liens symboliques. Ils ont pris en charge Répertoire des Points de Jonction, mais pas POSIX style des liens symboliques. Encore plus bizarre, ni Windows 2000 ou Windows XP fourni avec le nécessaire
linkd
la commande pour créer le Répertoire de ces Points de Jonction.Ce n'est plus vrai. Windows Vista, Windows 7 et Windows 8, non seulement le support des liens symboliques, mais aussi venir avec le
mklink
de commande. Ces liens symboliques sont compatibles avec la norme POSIX système d'exploitation compatible liens symboliques (Mac OS X, Linux, Unix)Maintenant au cœur du problème:
Bien que Windows prend désormais en charge les liens symboliques, et ces liens symboliques sont compatible avec Unix/Linux/Mac liens symboliques, de Subversion lui-même ne prend pas en charge les liens symboliques sous Windows. Je n'ai aucune idée de pourquoi c'est le cas.
Je ne recommande pas de mettre dans les liens symboliques dans le référentiel, même si vous ne travaillez que dans POSIX style OS et Windows. Au lieu de cela, vous devriez avoir votre construction et/ou de déployer des mesures de créer tout les liens symboliques. Cela vous donne plus de souplesse puisque vous pouvez tester votre système d'exploitation lors d'une construction ou de déploiement et de gérer tous les problèmes.
De Plus, la création des liens symboliques lors de la compilation/déploiement scène crée moins d'entretien des maux de tête que de l'avoir dans votre référentiel. Imaginez si je renommer, déplacer ou supprimer un fichier est un lien symbolique pointant vers dans mon référentiel. J'ai aussi n'oubliez pas de regarder pour tous les liens symboliques et les modifier trop, quelque chose qui n'est pas susceptible de se produire. Après tout, il est impossible de regarder un fichier et connaissent tous les liens symboliques qui peut-être pointant vers ce fichier.
Donc comme un 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 à partir de Linux ou autre OS POSIX. Il fonctionne, tout simplement.
Mais lorsque vous essayez d'ajouter un lien symbolique à partir de Windows, vous verrez
Je suppose que c'est parce que Windows requiert l'UAC pour créer un lien symbolique. Si Subversion permet le lien symbolique sous Windows, l'UAC va casser normal
svn up
.Peut-être que je l'ai raté dans d'autres réponses, mais pensé que je pourrais ajouter.
Client Windows 7:
Client Linux:
Liens symboliques non seulement de "survivre", mais ils peuvent être créées et éditées dans le référentiel à partir de Windows. Vous avez juste besoin de faire un fichier avec le contenu suivant et un SVN propriété de
svn:special
=*
.Lorsque vous vérifier cela avec un client SVN qui sait comment créer des liens symboliques 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 à zb226 commentaire:
"Un client SVN qui sait comment créer des liens symboliques" est un binaire qui a été construit à partir de la source, ce qui a été écrit pour utiliser une fonction, qui sait comment créer un lien symbolique, dans un système de fichier qui a une notion de liens symboliques.
Un rapide coup d'oeil à la La Subversion de la source de 1.8.13 montre en ligne 608 de io.c à l'aide de la lien symbolique fonction dont je ne suis pas au courant de l'existence de la norme des bibliothèques de Windows.
Une autre réponse souligne qu'il existe un programme appelé mklink qui peut être utilisé pour créer un lien symbolique sous Windows1. En C et C++ normalement vous devez inclure une bibliothèque au lieu d'appeler à un programme qui peut ou ne peut pas exister. Il ne ressemble à Microsoft a une fonction similaire appelé CreateSymbolicLink mais il semble très immature. Je ne vois rien au sujet de savoir si cela fonctionne sur le système NTFS qui est ce que 99,9% de SVN répertoire de travail sera soutenu par sur Windows j'attends. Il ne mentionne ReFS mais je n'imagine pas que sera communément utilisé pour un bon moment encore.
En résumé, il ressemble à la disponibilité et la stabilité des liens symboliques sous Windows en NTFS n'est pas là, donc Subversion développeurs n'ont pas ajouté du code pour utiliser Windows les commandes équivalentes encore.
Quand (ou si) les liens symboliques devenir chaque jour une partie de Windows que j'attends à ce qu'ils font dans les versions de Windows les clients Subversion. La plupart des gens que je connais qui ne fonctionne que sur Windows ne sait même pas ce qu'est un lien symbolique et des gens que je connais qui travaillent avec les Systèmes d'exploitation Windows peu sont au courant que Microsoft sont en train d'expérimenter avec eux.
1. Sur le documentation pour mklink il déclare ceci s'applique à "Windows Vista, Windows Server 2008, Windows Server 2012, Windows 8" et bizarrement, omet de Windows 7. Je suppose que ça signifie en fait qu'il existe et ne fonctionne que sur les versions spécifiques de Windows qui ont des versions de NTFS qui soutiennent les liens symboliques. Je n'imagine pas les liens symboliques ont toujours existé en NTFS.
J'ai juste remarqué de Github Git pour Windows client prend en charge NTFS de Windows liens symboliques. Ils fournissent même instructions sur la façon de l'activer! Un autre clou à ajouter à la Subversion du cercueil.
junction
de faire quelque chose de comparable pour les liens symboliques (jonctions) sur windows. Mais le SVN client traite avec le même message d'erreur qu'il jugeait être des liens symboliques. Peut-être que cette jonction outil peut être utilisé pour le manque de lien symbolique de commande sur windows.Bien...je ne suis pas sûr de la réponse technique ou de ce que les ramifications peut-être, mais je l'ai juste essayé. J'ai créé un sym lien vers un dir dans une caisse que j'ai eu. Ajouté et validé. Nuked l'ensemble de la caisse. Re-vérifié, et le sym lien est toujours là avec le lien approprié.
Espère que cela va suffire pour vos soucis 😉
Prises de svn-livre
La faq dit la raison que les liens symboliques ne sont pas pris en charge sur windows, c'est que, par défaut, seuls les administrateurs peuvent faire des liens symboliques.
Oui, je peux confirmer que la gestion des versions des liens symboliques ne fonctionne pas correctement dans la Subversion.