2011-08-12 16 views
1

にGITレポ内のすべての個々の親ディレクトリを変換します。自分のディレクトリにそれぞれ、私はその中のプロジェクトのトンと大規模なSVNのレポを持っている独自のレポ

MyMassiveSVNRepo

  • プロジェクト1
  • プロジェクト2
  • プロジェクト3
  • プロジェクト4

のように...

私はGITにそれを変換しますレポが、今はただの巨大なGITレポです。私は自分のGITリポジトリに各親ディレクトリを作ることができる(または誰かが作成できる)スクリプトがありますか? (そして、できれば、まだ歴史を維持する)

スクリプトが実行されたときに、私は私の大規模なGITレポで各プロジェクトに対して1つのレポを持っているし、代わりに、私は多くの小さなGitのレポを持っていますか?レポは、すべてのヘルプは高く評価され...

150回を複製してから、私は、各プロジェクトから必要のないすべてのファイルを削除する(15回のギグ)あまりにも大きいです。

答えて

1
#!/bin/bash 
set -o nounset -o errexit -v 
for project in [email protected]; do 
    mkdir -p ${project}_tmp 
    cd ${project}_tmp 
    git svn init http://svn.example.com/repository/${project}/trunk/ \ 
     --no-metadata 
    git config svn.authorsfile ../svn_users.txt 
    git svn fetch 
    find */ -type d -empty | xargs -I{} touch "{}/.gitkeep" 
    find */ -type f -name .gitkeep | xargs git add 
    git commit -a 
    cd .. 
    git clone ${project}_tmp ${project} 
    rm -fr ${project}_tmp 
done 

使用法:

./convert.sh project1 project2 project3 
+0

OK感謝。私はそれにgit svnがあることがわかります。私はすでに完全なGITレポに変換しています。それをクローン化しました - 私は(すべてのトランクやブランチはリポジトリのルートにありません)ので、基本的にはマスターリポジトリをたくさんの小さなリポジトリに切り替える必要があります。私はgit-subtreeというスクリプトを見つけました - https ://github.com/apenwarr/git-subtree私は仕事をすることができると思っていた...任意のアイデア? – Zuriel

関連する問題