Как добавить все новые файлы в SVN - PullRequest
60 голосов
/ 23 января 2010

Я использую ORM, который генерирует большое количество файлов из CLI. Есть ли простой способ запустить svn add для всех файлов в каталоге, которые отображаются как ?, когда я запускаю svn status?

Редактировать Эти файлы существуют в дереве каталогов, поэтому добавление * для одного каталога не будет работать.

Ответы [ 14 ]

131 голосов
/ 24 сентября 2013

Это добавит все неизвестные (кроме игнорируемых) файлы в указанное дерево каталогов:

svn add --force path/to/dir

Это добавит все неизвестные (кроме игнорируемых) файлы в текущем каталоге и ниже:

svn add --force .
66 голосов
/ 08 сентября 2010

Для справки это очень похожие вопросы.

Мне кажется, это работает лучше всего. Они также работают с пробелами и не добавляют повторно пропущенные файлы. Я не видел их в списке ни на одном из ответов, которые видел.

добавление:

svn st | grep ^? | sed 's/?    //' | xargs svn add

удаление:

svn st | grep ^! | sed 's/!    //' | xargs svn rm

Редактировать: Важно НЕ использовать «add *», если вы хотите сохранить игнорируемые файлы, иначе все, что было проигнорировано, будет добавлено заново.

28 голосов
/ 23 января 2010

вы можете просто сделать svn add path/to/dir/*, вы получите предупреждение обо всем, что уже находится в управлении версиями, но оно добавит все, что не является.

8 голосов
/ 23 января 2010
svn status | grep "^\?" | awk '{print $2}' | xargs svn add

Взят из Интернета, но я уже давно пользуюсь им, и он хорошо работает.

5 голосов
/ 23 января 2010

Если svn add whatever/directory/* не работает, вы можете сделать это жестким путем:

svn st | grep ^\? | cut -c 2- | xargs svn add
4 голосов
/ 27 августа 2013

Раствор

svn status | grep ^? | sed 's/?    //' | xargs svn add

не работает с пробелами. Вместо этого можно использовать

svn status | grep ^? | sed 's/^?       //' | xargs -I fn svn add "fn"

(кажется, что число пробелов в моей системе отличается - просто настройте его)

3 голосов
/ 23 января 2010
svn add *

должен сделать эту работу. Просто убедитесь, что:

svn commit

потом:)

3 голосов
/ 23 января 2010

Вы должны быть в состоянии запустить:

svn add *

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

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

1 голос
/ 25 декабря 2015

Это добавляет все неверсионные файлы, даже если они содержат пробелы

svn status |awk '{$ 1 = "";печатать $ 0} '|xargs -i svn add "{}"

1 голос
/ 11 октября 2010
svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add

Это было основано на ответе Маркба ... и небольшой охоте в Интернете. Это выглядит некрасиво, но, похоже, у меня работает на OS X (включая файлы с пробелами).

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