The best solution is to run the command:
svn list --recursive .
However, it is rather slow. I have a large SVN repository with 26559 files with a total size of 7 GB , and this command takes almost 4 minutes .
The modern SVN client stores information about the working copy in the sqlite database, so it is quite easy to crack. Here is a Python script that retrieves a list of versioned files in less than a second (runs on 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)
Of course, this is an unsupported hack, so it can easily break. Most likely, itβs enough to change the minor version of SVN WC to break it.In addition, I have no idea how this solution interacts with complex functions, such as external functions, some disparate / mixed checks, and everything else that SVN allows.
source share