事後にsvn履歴をgitにインポートする方法はありますか?
質問
すでにsvn読み取り専用リポジトリをチェックアウトしています(git svnではなくsvn co)。 gitを使用していくつかの変更とコミットを行った後、githubにプッシュします。
この時点で、gitにはsvnのすべての履歴がありません。この時点でこれを抽出してインポートする方法があるかどうか疑問に思っていました。
さまざまなgit-svnガイドは、クリーンなレポジトリをインポートして履歴を転送する方法を示していますが、既に使用されているものを見つけることはできません。
解決
おそらく、新しいgitリポジトリへのsvnインポートを実行し、2つのリポジトリをマージする(それらを一緒に追加すると、おそらくそれらが無関係であると文句を言う)必要があり、その後リベースします。
他のヒント
Thilo の良い答え、svnリポジトリをgitリポジトリにインポートしたら、 無関係なgitブランチのマージ
#!/bin/bash
set -e
if test -z "$2" -o -n "$3"; then
echo "usage: <*> 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ブランチ
- gitグラフトを使用してsvnマージ履歴を復元する .git / info / graftsにテキストファイルを作成します。各行には、コミットIDの後に親が続きます。ローカルリポジトリは今後、そのコミットが実際に両方の親から派生したかのように動作します。
所属していません StackOverflow