10
votes

Les liens symboliques du client de subversion (SVN) de la Dérapersion (SVN) comme s'ils étaient des fichiers?

J'ai un répertoire sur un système Linux contenant principalement des liens symboliques aux fichiers sur un système de fichiers différent. J'aimerais ajouter le répertoire à un référentiel Subversion, la désirerençage des symboles dans le processus (les traiter comme des fichiers qu'ils indiquent, plutôt que des liens). En règle générale, j'aimerais pouvoir gérer toutes les opérations de copie de travail avec ce comportement, mais la commande 'svn ajouter' est celle où elle commence, je pense.

L'utilitaire client SVN ne semble pas avoir d'options relatives à la désérofacturation de Symlink dans la copie de travail. Je n'ai trouvé aucune référence à cela dans le manuel ( http: // svnbook. Red-Bean.com/fr/1.5/index.html ), soit.

J'ai trouvé une affiche sur la liste de diffusion des utilisateurs SVN qui posa la même question mais n'a jamais reçu de réponse, ici:

  • http://markmail.org/message/ngchfnzlmm43yj7h

    (cette affiche a fini par utiliser des liens durs au lieu de symboles de symboles. Cette technique n'est pas une option, dans mon cas, car les fichiers sous-jacents réels résident sur un système de fichiers séparé.)

    J'utilise Subversion V1.6.1 sur Fedora 11.

    Pour ce que cela vaut, je sais qu'il existe des outils / techniques alternatifs qui pourraient aider à se rapprocher de ce comportement, mais que je dois jeter pour diverses raisons. J'ai déjà envisagé ces possibilités de ces possibilités: - un montage "union", fusionnant tous les répertoires contenant les fichiers réels, avec le répertoire de copie de travail SVN en tant que "sommet" de l'Union; - copier / déplacer les fichiers réels sur le même système de fichiers que la copie de travail SVN et l'utilisation de hardlinks au lieu de symboles de symboles; - Systèmes de contrôle de version non SVN. Celles-ci étaient toutes des idées soignées et je suis sûr qu'ils sont de bonnes solutions à d'autres problèmes, mais elles ne travailleront pas compte tenu des contraintes de cet environnement et de cette situation.


3 commentaires

Je ne pense tout simplement pas que ce soit possible (et je ne pense pas que tout VCS puisse le faire, il suit des liens symboliques mais ne peut pas les suivre, ou il ne les suit pas et ne suit pas).


Ça commence à regarder comme ça. Ce qui semble stupide, étant donné que la plupart des utilitaires qui manipulent les constructions de chemin (CP, MV, LN, RM, RSYNC) ont toutes des options permettant de préciser que les symboles doivent être déréférencés, non traités littéralement. Je veux dire, c'est juste moi, ou l'absence d'une option «Dréréférence» diminuait-elle la fonctionnalité de l'outil? (Si je suis seul, ici, je ne me dérangerai probablement pas à soumettre une demande de fonctionnalité au projet SVN.)


3 ans trop tard, mais vous n'êtes pas seul. J'en ai aussi besoin.


5 Réponses :


1
votes

Vous avez beaucoup de contraintes, mais une chose qui fonctionne toujours: pirater la source.

Vous pouvez facilement construire votre propre SVN pour Linux, bien que ce mod soit peut-être ou non "facile". Quoi qu'il en soit, si vous n'avez pas de liens symboliques gérés, vous pouvez faire un piratage brut et juste avoir SVN les suivre toujours, comme si elles sont des liens difficiles.

Si votre référentiel contient des liens versionnés et que vous devez consulter cette partie de celui-ci, vous aurez besoin d'un piratage plus sophistiqué qui, par exemple, utilise une propriété qui contrôle la fonctionnalité par fichier ou par hiérarchie ou quelque chose. < / p>

Il pourrait y avoir un autre choix: les liens vers les versions sont apparus dans 1.1.0, si le comportement avant de suivre les liens symboliques, vous pourriez peut-être simplement exécuter un ancien client.


2 commentaires

Donc, vous dites la réponse à ma question actuelle (le client SVN peut-il le faire) est "non". Droit?


Juste, je dis «Non, du moins, pas depuis 1.1.0 et peut-être pas avant cela, non plus». Je suppose que vous avez envisagé d'ajouter les autres arbres de systèmes de fichiers, puis de garder des symboles locaux non avancés. Cela semblerait fonctionner joliment sauf pour avoir besoin de plus d'une commission ou de mise à jour pour synchroniser l'ensemble de la copie de travail. (Mais pas sur d'autres copies de travail sans les liens locaux.)



0
votes

Idée: injecter une bibliothèque partagée à l'aide de LD_PRELOAD qui intercepte STAT / Open / Diskink, etc. afin que SVN ne voie pas les symboles. Cela vous éviterait de devoir modifier la source SVN.


0 commentaires

0
votes

Vous pouvez également utiliser des liens physiques au lieu de liens symboliques.


0 commentaires

0
votes

Aussi loin que je sache, avec la version de subversion actuelle (1.6.x), il n'y a aucun moyen de le faire. Si cela avait été pour les fichiers (non des répertoires) sur le même système de fichiers, vous avez pu utiliser des liens durs (W / O the -s interrupteur dans ln commande).


0 commentaires

0
votes

J'ai fait face à un défi similaire. Mon répertoire de base contient de nombreux scripts dans ~ / scripts dispersés sur divers sous-répertoires. Cependant, je voulais une mise en page plus propre dans SVN bénéficie de ses collaborateurs qui parcourent des choses à la recherche d'exemples de code.

J'ai créé un ~ / scripts / svn / signal15 / code / avec prod et test sous-répertoires en dessous, alors Difficile Tous les scripts dispersés ailleurs.

La commande suivante puis importer le répertoire / mise en page du fichier que je avais besoin;

cd ~ / scripts; svn svn import http: // svn_server / repo / code

Le repo affiche maintenant http: // svn_server / reposer / code / signal15 / avec "prod" et "test" sous-répertoires.

J'ai maintenant des mises en page personnalisées; a) La mise en page de mon annuaire de domicile reste inchangée (sans ~ / scripts / svn sous-répertoire) b) Le référentiel SVN contient une branche "Signal15" avec mes scripts organisés. P.S:. Avec une fonction shell, je peux check-in et check-out au besoin aussi


0 commentaires