Лучшее решение - это запустить команду:
svn list --recursive .
Однако это довольно медленно.У меня есть большое репозиторий SVN с 26559 файлами общего размера 7 ГБ , и эта команда занимает почти 4 минуты .
Современный SVN-клиент хранит информацию о рабочей копии в базе данных sqlite , поэтому ее легко взломать.Вот скрипт Python, который извлекает список версионных файлов менее чем за секунду (работает в SVN 1.9.5):
import sqlite3
db = sqlite3.connect('.svn/wc.db')
cursor = db.cursor()
cursor.execute("SELECT * FROM NODES")
data = cursor.fetchall()
for row in data:
filename = row[1]
if len(filename.strip()) == 0:
continue
print(filename)
Конечно, это неподдерживаемый хак, поэтому его легко сломать.Скорее всего, достаточно изменить минорную версию SVN WC, чтобы сломать ее.Кроме того, я понятия не имею, как это решение взаимодействует со сложными функциями, такими как внешние функции, некоторые разрозненные / смешанные проверки и любые другие сумасшедшие вещи, которые допускает SVN.