사실 이후에 SVN 이력을 GIT로 가져 오는 방법이 있습니까?
문제
이미 SVN 읽기 전용 Repo Checked (SVN CO 및 GIT SVN이 아님)가 있습니다. 나는 GIT를 사용하여 약간의 변경을했고 Commits는 Github로 밀려납니다.
이 시점에서 Git은 SVN의 모든 역사를 가지고 있지 않습니다. 이 시점에서 이것을 추출하고 수입 할 수있는 방법이 있는지 궁금합니다.
다양한 GIT-SVN 가이드는 깨끗한 리포를 가져오고 기록을 전송하는 방법을 보여 주지만 이미 사용중인 것을 찾을 수있는 것은 아닙니다.
해결책
SVN 가져 오기를 신선한 git 저장소로 가져와야하고 두 리포지토리를 병합해야합니다 (함께 추가하면 아마도 관련이없는 것에 대해 불평 할 것입니다). 레바 제 수입 기록에 대한 변화.
다른 팁
완료합니다 thilo'에스 좋은 대답, SVN Repo를 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에서 텍스트 파일을 만들어 각 줄에는 커밋 ID와 부모가 포함됩니다. 따라서 귀하의 지역 저장소는 마치 그 커밋이 실제로 두 부모의 후손 인 것처럼 행동 할 것입니다.
제휴하지 않습니다 StackOverflow