Инструмент для миграции репо только с правом чтения? - PullRequest
1 голос
/ 13 апреля 2010

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

Я пробовал svnsync, но школьный сервер не поддерживает команду воспроизведения (возможно, отключена), поэтому у меня это не сработает.

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

Это, как говорится, прежде чем я пойду и заново изобрету колесо, написав скрипт для этого - существует ли что-то подобное? Я должен понять, что уже есть инструмент для этого или кто-то написал скрипт для этого.

Ответы [ 4 ]

0 голосов
/ 03 марта 2015

Я пробовал svnsync, но школьный сервер не поддерживает воспроизведение команда (вероятно, отключена), так что это не будет работать для меня.

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


Если у вас есть хотя бы доступ только для чтения к хранилищу Subversion через HTTP (S) или svn(+ssh)://, то вы определенно можете получить полную историю изменений, используя svnsync или svnrdump инструменты.

svnrdump подход.

Просто запустите команду и дождитесь ее завершения:

svnrdump URL-TO-ORIGINAL-REPO > repo.dump

В результате вы получите файл repo.dump, содержащий полную историю изменений. Вы можете загрузить файл в пустой репозиторий позже, используя команду svnadmin load.

svnsync подход.

Все шаги должны быть выполнены на вашем (локальном) компьютере:

  1. Создать новый репозиторий: svnadmin create newrepo,

  2. Разрешить изменение ревизионных (неверсированных) свойств нового репозитория:

    echo exit 0 > myrepo\hooks\pre-revprop-change.bat

  3. svnsync init file:///C:\Repositories\newrepo https://URL-TO-ORIGINAL-REPO

  4. svnsync sync file:///C:\Repositories\newrepo https://URL-TO-ORIGINAL-REPO

0 голосов
/ 13 апреля 2010

Вы не указали, сколько ревизий у вас приблизительно в вашем проекте. И проверка на основе сценария для каждой ревизии возможна. Но это нереально, потому что все папки ".svn" созданы для каждой папки. Из-за них вы

  1. Либо другой сценарий должен выполнить рекурсивное удаление этих файлов, прежде чем другой сценарий сможет это проверить.
  2. Или для каждой ревизии выполните экспорт svn, а затем напишите другой сценарий, который будет проверять его.

Как видите, это невозможно. И я не знаю сценария для этого.

Однако вы можете выполнить несколько экспортов из репо, каждый из самых важных коммитов, а затем добавить их в ваш новый репозиторий. Если количество ревизий меньше, это должно быть проще.

0 голосов
/ 11 октября 2013

Доступ на чтение к хранилищу Subversion всегда должен быть достаточным для создания клона этого хранилища с помощью svnsync Краткий пример, как это сделать:

svnadmin create new_repos

Создать скрипт хука new_repos/hooks/pre-revprop-change с чем-то вроде

#!/bin/sh
exit 0
#

Не забудьте сделать его исполняемым

chmod u+x new_repos/hooks/pre-revprop-change

Затем инициализируйте синхронизацию:

svnsync init file:///PATH/TO/new_repos https://old_repos/trunk/subfolder
svnsync sync file:///PATH/TO/new_repos https://old_repos/trunk/subfolder

Проверьте ваш новый репозиторий

svn co file:///Users/bjoern/test/new_repos new_working_copy

И не забудьте удалить хук-скрипт

rm new_repos/hooks/pre-revprop-change

Более подробную информацию о репликации репозитория можно найти в svn book .

0 голосов
/ 13 апреля 2010

Если вы хотите использовать Mercurial & ndash; а) не очень далеко от Subversion, по команде, б) предотвратил бы такую ​​проблему, и в) на самом деле интересно работать с * & ndash; Вы можете использовать расширение convert . Он встроен в Mercurial, вам просто нужно его активировать.

* Я так думаю, в любом случае

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...