2013-04-14 17 views
19

関連する質問を検索しましたが、私の特定の状況に合ったものは見つかりませんでした。私は、数年前に取り下げられたSVNサーバーの古いリポジトリアーカイブを持っています。それらはサーバー上の元のリポジトリ構造のタールボールです。私がしたいことは、gitリポジトリを将来の作業のための基礎として/プロジェクトを復活させることに変換することです。私はすでに変換プロセスに関するいくつかのチュートリアルを読んできました。私は変換、ブランチマッピングなどの著者を理解することができると思いますが、皆さんはSVNサーバーとリポジトリ用のURLを所有していることを前提としています。この変換を行うには、インストールとセットアップ、SVNサーバーが必要ですか?または、git cloneまたはsvn2git(または別のツール)のいずれかを私が持っているレポ・ダンプで指し示すことができますか?ローカルのsvn repoダンプをgitに変換する

+1

Standardエディションであります無料ですので、計画Bがあります。 – Dialecticus

+0

オリジナルのSVNサーバーをインストールすると、それよりも簡単になるはずです。 –

答えて

21

p、そしてgit-svnパッケージを使用します。

あなたはgit svn clone file:///path/to/svn/repo /path/to/empty/dir

+1

私はすでにこの実験的な昨夜を見つけて、それを動作させました。これは正解です。ありがとうございました+ 1 /受け入れました! SOにようこそ。 :-) –

+0

ありがとう! – Asenar

2
  1. すべてのsvn(?) - > gitのコンバータは、ライブSubversionリポジトリを必要とし、リポジトリの
  2. ツリーのコピーがダンプではない、それは通常のファイルレベルのバックアップです。

あなたが持っている:

  1. をインストールし、コンバータはSVNのためfile:///プロトコルを処理できない場合(任意のSubversionサーバを設定し、それ以外の場合は不要です - ただのtarball(Sを解凍)し、SVNでレポをチェッククライアント)
  2. は、記事を読むのgit-svnの
  3. 使用のgit-svnのごDUMをインポートするために、ローカルのsubversionをインストール
4

は、すべてのSubversionのコミッタのリスト取得し使用することができます。

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

クローンSubversionリポジトリ使用してのgit-svnの

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

コンバートのsvn:を.gitignoreするプロパティを無視:

cd ~/temp 
git svn show-ignore > .gitignore 
git add .gitignore 
git commit -m 'Convert svn:ignore properties to .gitignore.' 

プッシュリポジトリ裸のgitリポジトリへ:

git init --bare ~/new-bare.git 
cd ~/new-bare.git 
git symbolic-ref HEAD refs/heads/trunk 

次に、新しい裸のリポジトリに一時リポジトリを押してください。

cd ~/temp 
git remote add bare ~/new-bare.git 
git config remote.bare.push 'refs/remotes/*:refs/heads/*' 
git push bare 

名前の変更「トランク」ブランチ「マスター」へ:

cd ~/new-bare.git 
git branch -m trunk master 

クリーンアップブランチやタグ

cd ~/new-bare.git 
git for-each-ref --format='%(refname)' refs/heads/tags | 
cut -d/-f 4 | 
while read ref 
do 
    git tag "$ref" "refs/heads/tags/$ref"; 
    git branch -D "tags/$ref"; 
done 

参考:http://john.albin.net/git/convert-subversion-to-git

0
  1. あなたの切断でダンプファイルください:クローン・パスして、オープンのgitのbashと に

    svnadmin dump "repopath or url" > import.bkp 
    
    git svn clone "back" 
    
  2. Go]をこれらのコマンドを実行します:VisualSVNサーバーの

    git svn show-ignore > .gitignore 
    
    git add .gitignore 
    
    git commit -m "with message" 
    
    git check in "git url" 
    
関連する問題