SVN: аналог адгрема hg - PullRequest
14 голосов
/ 13 мая 2011

У нас есть хранилище с несколькими файлами (без папок).Каждый раз при сборке мы должны загружать одну и ту же папку из другого источника (db), затем фиксировать изменения SVN - обновлять существующие, удалять несуществующие и добавлять новые файлы.

Так что идея состоит в том, чтобы иметь «копию» базы данныхскрипты в SVN каждой сборки (поэтому используется MSBuild )

Проблема в том, что я не знаю аналога hg addremove - которые автоматически синхронизируют две папки.

Кто-нибудь знает, как addremove можно смоделировать?

Ответы [ 4 ]

9 голосов
/ 14 мая 2011

У меня лично есть небольшой bash-скрипт для этого (находящийся в Linux):

svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove

РЕДАКТИРОВАТЬ: Благодаря cesar , вот более простая версия:

svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove
1 голос
/ 13 мая 2011

Для такого рода вещей я просто использую Mercurial, и проверяю и извлекаю из svn: https://www.mercurial -scm.org / вики / HgSubversion ... может быть не совсем то, что вы хотите.

0 голосов
/ 08 июля 2016

(Улучшение ответа @ Эрика-Карла)

Работает для:

  • путей с 'пробелами'
  • путей с '@' символами
  • путей с символами '\' (в оболочке MSYS)

svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add 'FILE@'
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove 'FILE@'
0 голосов
/ 14 мая 2011

Я всегда использовал для этой цели скрипт svn_load_dirs.pl, поставляемый с svn.

...