Фиксация набора действий svn файла / каталога за одну регистрацию - PullRequest
1 голос
/ 25 сентября 2011

Я недавно решил реструктурировать свои svn-репозитории. Эта работа включает в себя множество действий с файлами / каталогами (переименование, копирование, перемещение и удаление) в моем хранилище По умолчанию каждое действие должно быть зафиксировано в контексте регистрации. Есть ли способ совершить множество этих действий за одну регистрацию? Я использую TortoiseSVN и Collabnet Subversion 1.6.x.

1 Ответ

3 голосов
/ 25 сентября 2011

TortoiseSVN имеет 2 различных инструмента для работы:

  • Проводник окон SVN и встроенное меню TortoiseSVN.
  • Браузер хранилища TortoiseSVN.

Браузер хранилища - это инструмент пользовательского интерфейса, который работает непосредственно с хранилищем и не знает, когда вы «начинаете и заканчиваете транзакцию». Таким образом, каждая команда сама по себе является коммитом, если коммит необходим. Я не знаю никакой возможности сказать, например.

  • Теперь я объявляю начало сеанса коммита.
  • Затем я что-то изменяю, перемещаю файлы, переименовываю каталоги, ...
  • Затем я заканчиваю сеанс коммита.

Когда вы работаете с меню Windows TortoiseSVN, встроенным в ваш Windows Explorer, вы сначала должны извлечь весь репозиторий. Затем вы можете некоторое время работать локально, использовать вариации SVN для переименования, перемещения и копирования, а через некоторое время зафиксировать все свои изменения сразу.

Версия командной строки позволяет вам обе вещи, но ведет себя одинаково. Из документации для move:

Эта команда перемещает файлы или каталоги в вашей рабочей копии или в хранилище. ... Переместить файл в хранилище (это немедленная фиксация, поэтому для нее требуется сообщение фиксации):

$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c \
                            http://svn.red-bean.com/repos/bar.c

Таким образом, даже когда вы пишете командный файл для выполнения всего этого и вызываете его, каждый svn movesvn copy ...) должен иметь сообщение о коммите, если вы используете вариант, который работает непосредственно в хранилище.

Таким образом, нет возможности реструктурировать ваш репозиторий (только с помощью браузера репозитория) с помощью одного коммита. Вы должны проверить весь репозиторий (по крайней мере, ту часть, которую вы хотите реструктурировать), выполнить свои команды svn something локально и затем зафиксировать их в конце. Недостатком этого является то, что у вас много сетевого трафика, вам нужно какое-то место локально, и это стоит намного больше времени. Но это единственный способ получить один коммит.

Возможно, есть вариант с svnadmin, но это само по себе имеет много недостатков.

...