Подтвердить что ты не робот

Как добавить все новые файлы в SVN

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

svn add --force path/to/dir

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

svn add --force .

Ответ 3

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

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

добавление:

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

удаление:

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

Изменить: важно не использовать "добавить *", если вы хотите сохранить свои проигнорированные файлы, иначе все, что было проигнорировано, будет добавлено повторно.

Ответ 4

svn status | grep "^\?" | awk '{print $2}' | xargs svn add

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

Ответ 5

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

svn st | grep ^\? | cut -c 2- | xargs svn add

Ответ 6

Решение

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

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

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

(похоже, что количество ведущих заготовок отличается от моей системы - просто отрегулируйте).

Ответ 7

Вы должны иметь возможность запускать:

svn add *

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

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

Ответ 8

svn add *

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

svn commit

затем:)

Ответ 9

В некоторых оболочках, таких как fish, вы можете использовать globing ** для этого:

svn add **

Ответ 10

svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add

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

Ответ 11

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

Статус svn | awk '{$ 1 = "; print $0} '| xargs -i svn добавить" {}"

Ответ 12

Мне нравятся эти команды, поскольку они используют svn status для поиска новых или отсутствующих файлов, которые уважают файлы, которые игнорируются.

svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )

svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )

Ответ 13

Среди bash однострочного я думаю, что это самый красивый:

svn status | tee >(awk '/^?/{print $2}' | xargs -r svn add >&2) | awk '/^!/{print $2}' | xargs -r svn delete

Он добавит все новые файлы и удалит все отсутствующие файлы. Используйте с осторожностью, возможно, установите псевдоним для быстрого доступа.

ПРИМЕЧАНИЕ для Mac: в xargs -r есть расширение GNU: оно может не поддерживаться. В этом случае просто удалите его и игнорируйте предупреждения, когда нет файлов для добавления или удаления

Ответ 14

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

  • svn add --depth пустой путь/в каталог
  • Выполнить "svn propset svn: ignore -F ignoreList.txt --recursive" из места, где находится ignoreList.txt. В моем случае этот файл находился в двух каталогах над "path/to/directory", который я хотел добавить. Обратите внимание, что ignoreList.txt содержит расширения файлов, которые я хочу, чтобы svn игнорировался, например. *.aux и т.д.
  • svn add --force path/to/directory/.

Вышеупомянутые шаги работали.