2013-09-25 3 views
1

Итак, мы получили уведомление о том, что ряд наших проектов закрыт, которые в настоящее время размещены на sourcerepo.com.Как «сбрасывать» удаленный репозиторий SVN, который отключается

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

я придумал быстрый и грязный решение, которое работает, но ест дисковое пространство, как сумасшедший:

FOR /L %i IN (1, 1, 680) DO svn checkout <url>/[email protected]%i %i 
SVN LOG <url>/Project >> log.txt 

Даже мне не нравится это!

svnadmin dump <url>/Project ошибся, заявив, что для этого необходим локальный путь.

Есть ли более чистый способ сделать это, даже если у меня нет локального или SSH-доступа к самому серверу (мне был предоставлен только доступ к чтению/записи svn через https, и я даже не могу войти на сайт поверх клиентский веб-портал)?

+0

Вам нужно иметь его в SVN на местном уровне или вы могли бы использовать более современные DVCS, такие как git или mercurial? Оба могут импортировать из SVN и могут фактически упростить процесс. –

+0

@TimoGeusch Я хотел бы перевести его на git! В ближайшие пару месяцев мы создадим собственный сервер. Тем не менее, я попробовал импорт git svn на прошлой неделе в другой личный проект, и он не втянул полную историю svn в журналы git, заставив меня подумать, что, вероятно, не сможет вспомнить ни одну из предыдущих ревизий, сделанных над svn и при необходимости вернуться к ним. В принципе, мне нужно получить свалку, где я смогу оглянуться назад на всю историю изменений, внесенных в жизнь проекта, чтобы увидеть, где это было, как это началось и насколько мы достигли прогресса. – depwl9992

+0

Мой текущий план: сделать этот странный 600+ цикл проверки и вручную (или пакетно) повторно нажать на внутренний сервер. – depwl9992

ответ

1

После фактически позволяя мой компьютер работать через мой пакетный скрипт подробно выше, а затем делать немного больше исследований, я убежден, что только мигрирующие все это мерзавцу была хорошая идея, и я нашел это: http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git

В основном, заполненный файл users.txt с пятью вкладчиками, по строке, в формате svn_username = Name <email>.

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

Затем выполняется git clone https://<url>/Project --authors-file=users.txt --no-metadata Project (не использовать -s флаг, а структура нашего проекта не совсем стандартная ...).

Это просто работало. Начался с r1 и прошел весь путь без проблем, за исключением одного «не смог найти этого пользователя в user.txt», который был легко исправлен.

Нет ни тегов, ни веток, о которых можно было бы говорить, поэтому ни одна из этих дополнительных конверсий не была необходима.

1

Использование svnsync:

svnsync help sync 
synchronize (sync): usage: svnsync synchronize DEST_URL [SOURCE_URL] 

Использование мерзавец и сделать клон На оборот 1, затем сделать pull и update.

Установить Mercurial, установить hgsubversion и включить его, сделать клон На оборот 1, затем сделать pull и update.

Как и в случае с git и hg clone, вы можете с ошибкой и оставить вас ни с чем, кроме как тянуть может подобрать то место, где оно остановилось/поразить проблему. Обычно это хороший план клонирования на rev 1, затем pull/update.

Вы даже можете рассмотреть возможность создания и хранения файлов патчей для каждой ревизии, а не для всего репозитория при каждой ревизии.

0
  1. Установите питона и pysvn при условии, что у вас нет, то уже.
  2. Установите инструменты svn admin на свой локальный компьютер , предположив, что у вас еще нет.
  3. Создайте локальное хранилище на своем собственном репозитории и запустите на нем локальный сервер.
  4. используйте скрипт python для вывода каждого оборота в свою очередь с удаленного сервера и записи журнала для этого rev.
  5. фиксировать каждый rev, с его сообщением журнала, на локальный сервер.
  6. Когда вы будете готовы, вы можете использовать инструменты svnadmin для перехода от вашей собственной машины к серверу, к которому у вас есть прямой доступ.
1

Последние две версии Subversion включают в себя: svnrdump tool. Укажите URL-адрес вашего репозитория, и он создаст файл дампа, который вы затем можете использовать для загрузки (svnadmin load) локального репозитория или использовать для преобразования в другой VCS.

Смежные вопросы