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]'