Подтвердить что ты не робот

Преобразование локального дампа репозитория svn в git

Я искал связанные вопросы, но я не мог найти ничего, что соответствовало моей конкретной ситуации: у меня есть старые архивы хранилищ с сервера SVN, которые были сняты много лет назад. Это архивы исходной структуры репозитория на сервере. То, что я хочу сделать, это преобразовать их в хранилища git в качестве основы для будущей работы/восстановления проектов. Я уже прочитал несколько руководств по процессу конверсии, и я думаю, что могу определить преобразование авторов, отображение ветвей и т.д., Но все они предполагают, что у вас есть SVN-сервер и URL-адрес репозитория. Нужно ли устанавливать и настраивать сервер SVN для этого преобразования, или есть ли способ указать, что у меня есть git clone или svn2git (или другой инструмент) на дампе репо?

4b9b3361

Ответ 1

установить subversion локально, чтобы импортировать дамп, затем с пакетом git -svn.

Вы можете использовать git svn clone file:///path/to/svn/repo /path/to/empty/dir

Ответ 2

Получить список всех коммиттеров Subversion:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

Клонировать репозиторий Subversion с помощью git -svn:

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

Преобразование svn: игнорировать свойства .gitignore:

cd ~/temp
git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'

Переместить репозиторий в голый репозиторий git:

git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk

Затем переместите репозиторий temp в новый открытый репозиторий.

cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

Переименуйте ветвь "trunk" на "master" :

cd ~/new-bare.git
git branch -m trunk master

Очистка ветвей и тегов:

cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
  git tag "$ref" "refs/heads/tags/$ref";
  git branch -D "tags/$ref";
done

Ссылка: http://john.albin.net/git/convert-subversion-to-git

Ответ 3

  • Для всех преобразователей (?) svn → git требуется постоянный репозиторий Subversion,
  • Дерево-копия репозитория не является дампом, это обычная резервная копия на уровне файлов.

У вас есть:

  • Установите и настройте любой сервер Subversion (если ваш конвертер не может обрабатывать протокол file:/// для SVN, в противном случае он не нужен - просто распакуйте tarball и проверьте репо с клиентом svn)
  • Подробнее о git -svn
  • Используйте git -svn