Передайте все на SVN Repo - PullRequest
       1

Передайте все на SVN Repo

4 голосов
/ 14 января 2012

У меня есть папка, которая является извлечением из хранилища SVN. Файлы в этой папке меняются очень часто, создаются новые файлы и удаляются старые.

Как я могу легко зафиксировать все изменения в репозитории на сервере удаления svn? Обычно мне сначала нужно выдать svn delete [all deleted files and directories recursivly], затем svn add [all added files and directories recursivly], а затем svn ci для коммита. Можно ли это как-то автоматизировать?

Я думал о создании bash-скрипта, который анализирует svn status, но должно быть лучшее решение?!

Важно одно: свойства svn-ignore НЕ должны игнорироваться.

Ответы [ 2 ]

4 голосов
/ 14 января 2012

По крайней мере для анализа задачи удаления svn status является решением, но это может быть сделано очень быстро:

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

Добавление также можно выполнить аналогичным образом:

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

или еще проще:

svn add . --force

Кстати: обе указанные команды svn add учитывают ваши свойства svn:ignore и не добавляют игнорируемые файлы.

1 голос
/ 21 января 2012

Спасибо DerVO за ответ, я написал следующий скрипт, который сначала удаляет все файлы, а затем добавляет все новые. В целях сохранения команда delete запрашивает каждый файл (поскольку svn delete физически удаляет файл)

#!/bin/bash

HERE=$(cd $(dirname ${BASH_SOURCE[0]}) > /dev/null && pwd)
PROG="${0##*/}"

cd $HERE
svn status | grep ^\! | sed 's/^\!\s*//' | tr '\n' '\0' | xargs -0 -n 1 -pr svn remove
svn status | grep ^\? | sed 's/^\?\s*//' | tr '\n' '\0' | xargs -0 -n 1 -pr svn add
svn commit -m "Work of `date`"
svn up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...