Искусственное увеличение номера редакции в репозитории SVN (FSFS)

StackOverflow https://stackoverflow.com/questions/1298799

  •  18-09-2019
  •  | 
  •  

Вопрос

Моя компания выполняет миграцию репозитория SVN, и я хотел бы избежать дублирования номеров ревизий между двумя репозиториями (которые оба активны в данный момент).

Мое требование состоит в том, чтобы принудительно привести ревизию нового репозитория к определенному номеру ревизии (скажем:100.000).

Анализируя репозиторий FSFS, я наткнулся на файл "db / current", который, похоже, является подходящим местом для изменения номера репозитория.

Есть ли у кого-нибудь какой-либо опыт в этой процедуре?Я бы хотел избежать странных вещей, происходящих в будущем!

PS:Я понимаю, что могу создать фиктивные коммиты "100.000" в репозиторий.Пожалуйста, поделитесь своим опытом с такой процедурой и возможными проблемами производительности репозитория во время и после обновления

PS3:Я понимаю, что было бы хорошей идеей попросить всех зафиксировать рабочие копии перед процедурой.Для нас это не проблема (сейчас в новом репозитории очень ограниченное количество пользователей).Тем не менее, если у вас есть опыт работы с этим или подобными требованиями, пожалуйста, поделитесь!:)

PS3:Я понимаю, что это не стандартная процедура SVN, и многие могут возразить против самого требования.Давайте просто предположим, что мое требование обоснованно!:)

Это было полезно?

Решение

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=940194 :

Q:Есть ли способ искусственно увеличить ревизию репозитория номер в subversion?

A:Единственный способ сделать это - зафиксировать несколько фиктивных изменений.

Другие советы

Во-первых, не утруждайте себя попытками заморозить это.Если вы хотите объединить 2, вы можете использовать dump / load, чтобы поместить новый поверх старого, и номера ревизий будут обработаны за вас.Так что, если вам не нужно знать, какой номер редакции имеет конкретная версия (возможно, для внешних файлов или тегов), вам вообще не нужно беспокоиться об этом.

Если вы можете работать с этим инструментом, это всегда лучше, чем потом обнаружить, что svnsync или svnadmin pack, например, не будут работать с вашим измененным репозиторием.

Хорошо, поэтому, если вы все еще хотите это сделать, обновите номер последней редакции в revprop 0 и файл db / current, и все должно быть в порядке.

Однако я не думаю, что вы найдете кого-нибудь, кто имеет непосредственный опыт работы с этим подходом!

Один из простых способов внести фиктивные изменения...

Повторяйте столько раз, сколько потребуется:

svnmucc propset dummy_prop 0 -m "increases revision" https://svn/repo/ --username me --password x7G_5-u1,W

Примечание:

  • Значение "0" не обязательно должно отличаться от одного коммита до следующего .Вы можете просто повторить ту же команду.
  • Изменяет репозиторий напрямую, без оформления заказа или рабочей копии.
  • Изменяет корневую папку (на которую ссылается завершающий / после "...svn/repo").Таким образом, это может быть выполнено даже в свежем и пустом репозитории.
  • Изменяет только свойство папки.Они существуют только для SVN.Поэтому, если вы выполняете проверку или обновление, приложения, не использующие svn (например, ваша операционная система), не заметят никаких изменений в самой папке.Файлы изменяются только во вложенной папке .svn, где хранятся эти свойства.
  • svnmucc является частью официальных инструментов Subversion, по крайней мере, в версии 1.8, возможно, ранее, смотрите также: http://svnbook.red-bean.com/en/1.8/svn.ref.svnmucc.re.html
  • Конечно, пароль - это всего лишь пример, не волнуйтесь, что я раскрыл какие-либо реальные учетные данные.:-)

Я надеюсь, что это избавит других от нескольких этапов исследования.

С Subversion 1.7 вы можете использовать svndump фильтр инструмент для отфильтровывания нежелательных коммитов из файла дампа, созданного svnadmin dump:

http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering

С этой страницы:

[svndumpfilter] действует как фильтр на основе пути для потоков дампа репозитория

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top