Есть ли способ импортировать историю svn в git постфактум?

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

  •  08-07-2019
  •  | 
  •  

Вопрос

У меня уже проверено репозиторий svn только для чтения (svn co, а не git svn).Я внес некоторые изменения и зафиксировал их с помощью git, который затем был перенесен на github.

На данный момент у git нет всей истории из svn.Мне было интересно, есть ли способ извлечь и импортировать это на данный момент.

Различные руководства по git-svn показывают, как импортировать чистое репозиторий и перенести историю, но я не могу найти того, которое уже используется.

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

Решение

Вам, вероятно, придется выполнить импорт SVN в свежий репозиторий git, объединить два репозитория (просто сложите их вместе, возможно, они пожалуются, что они не связаны), а затем rebase внесенные вами изменения в импортированную историю.

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

Для завершения Thilo's хороший ответ, после того как вы импортировали репозиторий svn в репозиторий git, вы можете добавить этот репозиторий git в свой с помощью скрипта, описанного в слияние в несвязанных ветвях git

#!/bin/bash

set -e

if test -z "$2" -o -n "$3"; then
    echo "usage: $0 REPO BRANCHNAME" >&2
    exit 1
fi

repo=$1
branch=$2

git fetch "$repo" "$branch"

head=$(git rev-parse HEAD)
fetched=$(git rev-parse FETCH_HEAD)
headref=$(git rev-parse --symbolic-full-name HEAD)

git checkout $fetched .

tree=$(git write-tree)

newhead=$(echo "merged in branch '$branch' from $repo" | git commit-tree $tree -p $head -p $fetched)
git-update-ref $headref $newhead $head
git reset --hard $headref

Другие методы включают в себя:

  • попробуйте "простой" способ git pull REPO BRANCH
  • использование git-графтов для восстановления истории слияния svn создав текстовый файл по адресу .git/info/grafts, где каждая строка содержит идентификатор коммита, за которым следуют его родители.Отныне ваш локальный репозиторий будет действовать так, как если бы этот коммит действительно происходил от обоих родителей.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top