Как получить список всех непереведенных файлов из SVN?

Иногда вы развиваетесь, и вы решаете совершить, забыв, что вы создали несколько файлов в своем проекте. Затем, через несколько дней после того, как ваш собеседник получит вашу сборку из Subversion и жалуется, что некоторые файлы, похоже, отсутствуют. Вы понимаете, ах, я забыл добавить эти файлы!

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

Ответ 1

Используйте команду svn status:

svn status | grep ^?

Файлы, которые не являются версиями, обозначены символом? в начале строки.

Если вы обнаружите, что у вас всегда есть определенные файлы, которые нельзя добавлять в репозиторий (например, сгенерированные двоичные файлы), вы должны настроить svn:ignore в содержащем каталоге, чтобы эти файлы не отображались при использовании svn status.

Ответ 2

Если некоторые файлы имеют "игнорирование", добавленные к их статусу, они не будут отображаться в статусе "svn". Вам понадобится:

svn status --no-ignore

Ответ 3

Если вы работаете в Windows, вы можете сделать что-то похожее на Greg Hewgill, используя PowerShell.

(svn stat) -match '^\?'

Это можно было бы довольно легко расширить, чтобы найти все неверсированные и проигнорированные файлы и удалить их.

(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm

Надеюсь, что это поможет кому-то!

Ответ 4

Или из командной строки Windows:

svn stat | find "?"

Ответ 5

Вы можете использовать эту команду для перечисления всех путей для файлов без версий:

svn status | awk '/^?/ {print $2}'

Первая часть сделает svn status, а затем перенаправит вывод на AWK, который сделает простой фильтр "первый символ должен быть"? ", тогда он напечатает второй параметр" путь к файлу".

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

svn propset svn:ignore "PATH OR PATERN"