2009-09-22 7 views
2

Étant donné un point de départ dans une copie de travail Subversion (par exemple, répertoire de travail actuel), et une URL SVN cible, je voudrais trouver le fichier dans la copie de travail qui a cette URL SVN.Trouver le fichier avec une URL SVN donnée dans une copie de travail SVN

Par exemple, étant donné ce répertoire courant:

c:\Subversion\ProjectA\a\b\c\ 

qui a cette URL SVN:

https://svnserver/svn/ProjectA/trunk/a/b/c/ 

J'aimerais localiser le fichier sur le disque dur avec cet objectif URL SVN:

https://svnserver/svn/ProjectA/trunk/a/x/y/test.txt 

qui dans cet exemple serait:

c:\Subversion\ProjectA\a\x\y\test.txt 

Tout d'abord, l'API SVN fournit-elle une fonction pour ce faire? Deuxièmement, sinon, qu'est-ce qu'une bonne méthode (multi-plateforme) fiable pour l'implémenter?

Python est ma langue cible, et j'utilise pySvn bien que les liaisons SVN Python natives pourraient être une alternative.

Répondre

4

Subversion n'utilise pas ce mappage vers l'arrière de l'URL vers l'emplacement de la copie de travail proprement dit. La manière la plus stable de vérifier l'utilisation de l'URL serait d'effectuer un appel "svn info" récursif sur la copie de travail.

Ceci vous donne l'URL pour tous les fichiers et répertoires et vous pouvez faire la correspondance vous-même.

Vous pouvez optimiser cela un peu en essayant de mapper les URLs sur les chemins locaux et ne regarder que les emplacements sensibles, mais vous manqueriez d'autres emplacements créés par 'svn switch'. Je ne sais pas comment 'svn info' est mappé dans les bindings python, mais il y a très probablement une fonction info2() sur une classe client que vous pouvez utiliser.

Questions connexes