2017-11-22 3 views
-1

私はこのhttps://github.com/nirvdrum/svn2gitツールを使用して指定したhttps://docs.gitlab.com/ce/user/project/import/svn.htmlのドキュメントを使用して、SVNリポジトリをgit reposに変換しています。SVN to Git:リポジトリの一部を抽出する

私の基本的な目標は、オリジナルのSVNリポジトリと同じ1つのgit repoを持つことです。このレポは、主に歴史的記録として役立ちます。私はSVNリポジトリのいくつかのサブディレクトリを自分のgit reposに移動したいと思っています。

私は以下のスクリプトでこれをやっている:

#!/bin/sh 

mkdir repo.git 
pushd repo.git 
git config --global gc.auto 0 
svn2git svn+ssh://svnhost/svn/dvl/svn/repo --authors ~/authors.txt 
git gc 
git config --global unset gc.auto 
popd 

pushd repo.git 
git subtree split -P subdir/project/ -b project-subtree 
popd 

mkdir project.git 
pushd project.git 
git init 
git pull ../repo.git project-subtree 
popd 

repo.gitは私が期待するブランチやタグを持っていますが、それらのいずれかをproject.gitありません。ブランチとタグをproject.gitに入れる方法はありますか?そうでない場合、これを行う「正しい」方法は何ですか?

私も

svn2git svn+ssh://svnhost/svn/dvl/svn/repo/subdir/project --authors ~/authors.txt --no-minimize-url 

を試してみました。しかし、それはsvn+ssh://svnhost/svn/dvl/svn/repo/subdir/project/trunkを探して、それは空のレポを生成します。上記のコマンドに--rootistrunkを追加すると、エラーが発生します。

答えて

1

gitのフィルタ分岐

あなたはSVNからのgitのレポを変換した後、あなたはコマンドを使用して、スタンドアローンのgitリポジトリとして1つのサブディレクトリを抽出することができるはずです。

git filter-branch --prune-empty --subdirectory-filter subdir -- --all 

は注意が必要古いマスタ(と同様に他のブランチ)は、一時的にrefs/original/refs/heads/master でアクセスできますので、あなたのリポジトリをローカルに変換することができます。それを回復してください...

すべてOKであることを確認した後、instructionsに続いて削除できます。具体的には、

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d 
関連する問題