7

私はすでにsvn読み取り専用レポをチェックアウトしています(git svnではなくsvn co)。git を使用していくつかの変更とコミットを行い、それを github にプッシュしました。

この時点で、git は svn からのすべての履歴を持っていません。この時点でこれを抽出してインポートする方法があるかどうか疑問に思っていました。

さまざまな git-svn ガイドで、クリーンなリポジトリをインポートして履歴を転送する方法が示されていますが、既に使用されているものは見つかりませんでした。

4

2 に答える 2

8

Thilo良い答えを完成させるには、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

その他の方法には次のものがあります。

于 2009-03-10T08:05:22.127 に答える
6

おそらく、新しい git リポジトリに svn インポートを実行し、2 つのリポジトリをマージして (それらを一緒に追加するだけです。おそらくそれらが無関係であると文句を言うでしょう) 、インポートした履歴に対して行った変更をリベースする必要があります。

于 2009-03-10T07:15:48.190 に答える