Найти файл с заданным URL-адресом SVN в рабочей копии SVN - PullRequest
2 голосов
/ 22 сентября 2009

Учитывая начальную точку в рабочей копии Subversion (например, текущий рабочий каталог) и целевой URL-адрес SVN, я хотел бы найти файл в рабочей копии, в которой есть этот SVN-URL.

Например, для данного текущего каталога:

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

, который имеет этот SVN URL:

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

Я хотел бы найти файл на жестком диске с этим целевым URL-адресом SVN:

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

, который в этом примере будет:

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

Во-первых, предоставляет ли API-интерфейс SVN функцию для этого? Во-вторых, если нет, то каков хороший надежный (кроссплатформенный) метод для его реализации?

Python - мой целевой язык, и я использую pySvn, хотя нативные привязки Python SVN могут быть альтернативой.

1 Ответ

4 голосов
/ 22 сентября 2009

Subversion не использует обратное сопоставление URL-адреса с местом расположения рабочей копии. Самый стабильный способ проверить использование URL-адреса - выполнить рекурсивный вызов svn info над рабочей копией.

Это дает вам URL для всех файлов и каталогов, и вы можете сделать сопоставление самостоятельно.

Вы могли бы немного оптимизировать это, пытаясь отобразить URL-адреса на локальные пути и смотреть только на разумные местоположения, но вы бы пропустили другие местоположения, созданные с помощью 'svn switch'.

Я не знаю, как 'svn info' отображается в привязках python, но, скорее всего, в клиентском классе есть некоторая функция info2 (), которую вы можете использовать.

...