SVN - показывать только версионные локальные файлы (командная строка)? - PullRequest
7 голосов
/ 05 ноября 2011

У меня есть папка с версией под SVN, скажем, 100 файлов, которые не находятся под контролем версий - и около 10, которые есть.

В svn версии 1.6.6, если я наберу svn status, я получу неверсионные файлы со знаком вопроса ? или измененные / добавленные файлы M / A - но я не вижу локальных файлы, которые являются версионными, но не изменились. svn list выходит в сеть и извлекает имена, скажем, четырех версионных файлов (но не всех десяти).

Есть ли команда, которую я могу использовать в командной строке, чтобы svn перечислял, какие файлы находятся под управлением версией в данном локальном каталоге?

Большое спасибо заранее за любые ответы,
Ура!

Ответы [ 2 ]

13 голосов
/ 05 ноября 2011

svn ls выведет список всех файлов.Если вы не видите все ожидаемые файлы, возможно, они не в последней ревизии, в этом случае укажите ревизию, используя --revision, или, возможно, они находятся в папках, и, следовательно, вам придется включить --recursive.

В противном случае, если вы не хотите использовать svn ls, вы можете написать один вкладыш в bash, чтобы вы могли вычесть вывод обычных ls и svn status записей для неотслеживаемых файлов.

0 голосов
/ 24 января 2019

Лучшее решение - это запустить команду:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...