Как добавить все неотслеживаемые файлы в SVN? Что-то вроде git add -i? - PullRequest
9 голосов
/ 02 октября 2008

Я использовал эту длинную команду:

svn st | awk '/\?/ {print $2}' | xargs svn add

Аналогично, для svn rm файлов, которые я случайно удалил обычным rm с помощью:

svn st | awk '/\!/ {print $2}' | xargs svn rm --force

Полагаю, я могу написать функцию bash для этих двух функций, но я бы предпочел интерактивное дополнение / rm, как у git.

Ответы [ 6 ]

7 голосов
/ 04 октября 2009

есть более простая линия ...

svn add `svn status | grep ?`

тогда вы можете установить его как псевдоним в ~ / .bashrc, например

alias svn-addi='svn add `svn status | grep ?`'
6 голосов
/ 10 сентября 2013

Это добавляет все svn-неотслеживаемые и -версионные файлы в текущем каталоге, повторяющиеся во всех подкаталогах:

svn add --force ./*

У меня работает в MacOS 10.6+ и Ubuntu 10+, с svn 1.6+. Это не обеспечивает никакой индивидуальной интерактивности для каждого файла; Я не знаю, как это сделать.

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

6 голосов
/ 02 октября 2008

Я использую обобщение командной строки, которую вы запускаете, под названием svnapply.sh. Я не написал это, но я не помню, где я нашел это. Надеюсь, оригинальный автор простит меня за это здесь:

#!/bin/bash
#
# Applies arbitrary commands to any svn status. e.g.
#
# Delete all non-svn files (escape the ? from the shell):
# svnapply \? rm
#
# List all conflicted files:
# svnapply C ls -l

APPLY=$1
shift

svn st | egrep "^\\${APPLY}[ ]+" | \
sed -e "s|^\\${APPLY}[ ]*||" | \
sed -e "s|\\\\|/|g" | \
xargs -i "$@" '{}'

Согласно комментариям, скрипт позволяет запускать произвольные команды для всех файлов с одинаковым статусом.

Обновление:

Не составит труда написать сценарий, который принимает путь к файлу в качестве аргумента и запрашивает пользователя для добавления / удаления, а затем выполняет соответствующие действия для этого файла. Объединение в цепочку этого сценария даст вам то, что вы хотите.

0 голосов
/ 05 января 2011

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

0 голосов
/ 02 октября 2008

TortoiseSVN имеет возможность показа неверсионных файлов в диалоговых окнах «Применить» и «Показать изменения». Вы можете щелкнуть правой кнопкой мыши файл, чтобы добавить его или отметить как проигнорированный.

Если вы используете Visual Studio: Последняя стабильная версия AnkhSVN имеет аналогичную команду, но в большинстве случаев она показывает только файлы, которые вы должны добавить. (Проект предоставляет список файлов для версии поставщику SCC; другие файлы автоматически игнорируются)

0 голосов
/ 02 октября 2008

Используйте графический интерфейс, который может показать вам все неотслеживаемые файлы, затем выберите все и добавьте. Любой приличный графический интерфейс SVN должен обеспечивать эту функциональность.

Тем не менее, будьте осторожны, вы действительно хотите все эти файлы.

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