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

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

Мое требование - заставить ревизию нового репозитория установить конкретный номер ревизии (скажем: 100000).

Анализируя репозиторий FSFS, я наткнулся на файл «db / current», который звучит как правильное место для изменения номера репозитория.

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

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

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

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


person Pokot0    schedule 19.08.2009    source источник


Ответы (4)


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

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

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

person pauldoo    schedule 30.10.2009

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

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

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

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

person gbjbaanb    schedule 19.08.2009
comment
Спасибо! Мне не хватало revprop 0! Кстати: я не собираюсь объединять два репозитория. Мы перемещаем проект за проектом в новый репозиторий, и мы будем держать старый устаревшим, поскольку история после завершения всех проектов. Еще раз спасибо! - person Pokot0; 19.08.2009

Один простой способ сделать фиктивные исправления ...

Сколько раз нужно повторять:

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
  • Конечно, пароль - это всего лишь пример, не беспокойтесь, что я раскрыл какие-либо настоящие учетные данные. :-)

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

person klaus thorn    schedule 05.09.2013

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

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

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

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

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

person Matthew Skelton    schedule 29.08.2013
comment
Похоже, это вообще не отвечает на исходный вопрос. - person Alexander Amelkin; 02.03.2015
comment
Как же так? Насколько я понимаю, он отвечает на ОСНОВНУЮ проблему. - person Matthew Skelton; 04.03.2015