巨大なSVNリポジトリの一部をGitリポジトリにする

PCその他
2013-08-30 19:51 (11年前) ytyng
View in English

前提条件

  • 大きなSVNリポジトリがあり、その中のディレクトリの1つのディレクトリがソースコードのディレクトリ。他はドキュメントやmysqldumpなんかが入っている
  • ソースコードのディレクトリのみ svn checkout して更新するという運用をしていた
  • git化したい
  • ただし、ソースコード以外のディレクトリはサイズが大きいので、リポジトリに含めたくない

試したこと

→ドキュメントやmysqldumpなんかが含まれた巨大な myproject リポジトリができる

Using higher level of URL:
W: Ignoring error from SVN, path probably does not exist: (175002): RA layer request failed: REPORT of '/svn/myproject

このようなエラーが出て、clone できない。

実現方法

まずはそのまま clone してくる。

git svn clone -s --prefix svn/ http://my-svn-server/svn/myproject/ myproject
cd myproject
git svn create-ignore
git commit -m 'add gitignore'

一旦ここで、ローカルリポジトリの全コピーを取っておく

cd ..
cp -r myproject myproject_work
cd myproject_work

git filter-branch でソースコードのコミットのみにする!

git filter-branch  --subdirectory-filter source HEAD

不要なディレクトリを消しておく (やらなくても大丈夫だけど)

rm -rf my-documents
rm -rf my-mysqldumps

リポジトリ完成。pushする

git remote add origin my-remote-repo
git push origin master

SVNリポジトリに更新が入った場合 SVNリポジトリが更新された場合は、filter-branch する前のリポジトリで git svn rebase し、 後は同じようにすれば変更をgitリポジトリに取り込める。

cd ..
rm -rf myproject_work
cd myproject
git svn rebase
cd ..
cp -r myproject myproject_work
cd myproject_work
git filter-branch  --subdirectory-filter source HEAD
rm -rf my-documents
rm -rf my-mysqldumps
git remote add origin my-remote-repo
git pull origin master
git push origin master
現在の評価: 3
タイトルとURLをコピー

コメント

アーカイブ

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011