2008-10-19 3 views
71

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

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

ответ

94

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

svn status | grep ^? 

Файлы, которые не версионные указаны с? в начале строки.

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

+3

Лично я всегда «СВН дифф» перед «СВН CI», но так как это медленно, иногда, я всегда «SVN стат» перед «СВН дифф», который удобен, потому что тогда я не забываю добавлять вещи :) – ephemient 2008-10-23 19:05:57

+9

Если у вас есть много неверсифицированных файлов, которые вы хотите добавить, выполните следующие действия: `svn st | grep ^? | awk '{print $ 2} | xargs svn add` Вначале найдутся неверсированные файлы, awk будет печатать только второй элемент в строке (т. е. путь к файлу), а xargs сделает этот путь аргументом svn add. – 2012-09-22 23:30:52

+6

В конце команды awk отсутствует одиночная цитата. Команда должна быть: `svn st | grep ^? | awk '{print $ 2}' | xargs svn add` – jplandrain 2014-01-20 13:20:56

15

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

(svn stat) -match '^\?' 

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

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

Надеюсь, это полезно кому-то!

36

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

svn status --no-ignore 
9

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

svn stat | find "?" 
0

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

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

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

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

svn propset svn:ignore "PATH OR PATERN" 
Смежные вопросы