SubversionからGitへのプロジェクトの移行メモ。
ここではGitサーバ(リモートリポジトリ)にユーザgituserが存在してsshで接続できていることが前提。
svnのblogprogsをgitへ移行
Gitサーバでgituserでログインして以下を行いリポジトリをつくる。
1 2 3 4 5 6 |
gituser@gitserver:~$ cd gituser@gitserver:~$ mkdir blogprogs.git gituser@gitserver:~$ cd blogprogs.git/ gituser@gitserver:~/blogprogs.git$ git init --bare Initialized empty Git repository in /home/gituser/blogprogs.git/ gituser@inpsrv:~/blogprogs.git$ |
ローカルでgit-svnでsvnから履歴含めて持ってきてgitに変換する。ここではcygwinを使っている。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ cd `mktemp -d` $ git svn clone svn://svnserver/blogprogs Initialized empty Git repository in /tmp/tmp.aOZ0Dh68vk/blogprogs/.git/ W: Ignoring error from SVN, path probably does not exist: (160013): ファイルシステムに項目がありません: File not found: revision 100, path '/blogprogs' W: Do not be alarmed at the above message git-svn is just searching aggressively for old history. This may take a while on large repositories Checked through r2400 .................ここは履歴が多いと時間がかかる...................... $ git svn show-ignore > .gitignore $ git add .gitignore $ git commit -m 'add gitignore' $ git remote add origin gituser@gitserver:blogprogs $ git push origin master |
ローカルでちゃんとできたか確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ cd `mktemp -d` $ git clone gituser@gitserver:blogprogs Cloning into 'blogprogs'... remote: Counting objects: 149, done. remote: Compressing objects: 100% (94/94), done. remote: Total 149 (delta 41), reused 149 (delta 41) Receiving objects: 100% (149/149), 46.48 KiB | 0 bytes/s, done. Resolving deltas: 100% (41/41), done. $ cd blogprogs/ ............. $ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean $ |
svnのプロジェクトが不必要なので削除したいけど怖いのでobsoletesへ移動。
1 |
$ svn mv svn://svnserver/blogprogs svn://svnserver/Obsoletes/ |