SVN: аналог hg addremove
У нас есть репозиторий с несколькими файлами (без папок). Каждое время сборки мы должны загружать одну и ту же папку из другого источника (db), затем фиксировать изменения SVN - обновлять существующие, удалять не существует и добавлять новые файлы.
Итак, идея состоит в том, чтобы иметь "копию" сценариев db в SVN каждой сборке (почему используется MSBuild)
Проблема в том, что я не знаю аналога hg addremove - который автоматически синхронизирует две папки.
Кто-нибудь знает, как можно моделировать addremove?
Ответы
Ответ 1
У меня есть немного bash script, чтобы сделать это (находясь в linux):
svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove
EDIT: Благодаря cesar здесь представлена более простая версия:
svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove
Ответ 2
Для такого рода вещей я просто использую mercurial, и проверяю и выхожу из svn с:
https://www.mercurial-scm.org/wiki/HgSubversion
... может быть не совсем то, что вы хотите.
Ответ 3
Я всегда использовал svn_load_dirs.pl
script, который поставляется с svn для этой цели.
Ответ 4
(Улучшение ответа @Эрика-Карла)
Работает для:
- пути с символами "пробел"
- пути с символами '@'
- с символами '\' (в оболочке MSYS)
svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add '[email protected]'
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove '[email protected]'