git-svnの履歴
git-svn
gitからsvnにコミットしたりアップデートしたりできる。逆はできない。
これを覚えればなんとかなる
$ sudo port install git-core +svn $ git svn clone -s http://server:port/repo/project # svn checkout のようなもの $ git svn dcommit # svn commit のようなもの $ git svn rebase # svn up のようなもの
http://d.hatena.ne.jp/idesaku/20090323/1237825080
git svn rebase は git pull とは全然違うようだ。
rebaseするとsvnと同期してなかった部分のコミットIDが書き換わるのに注意
Gitでpatchを作成して適用する手順のメモ
git-svn dcommit できなかったのでコミットID見たら、違うIDになってた...。というわけでpatchを作成。
http://blog.s21g.com/articles/680
dcommit
ローカルに未コミットの変更があるけどgit-svn-dcommitしたい
- > stashを使う
http://runeleaf.wordpress.com/2009/01/08/git-%E3%83%AD%E3%83...
その他 Subversionからの移行について
svn:externalsのようなこと
svn:externalsの代わりgit submodule。でもイコールではないっぽい。
git submoduleは今のところそこまで面倒と感じたことはない。
移行スクリプト。でもうまくいかなかった…
http://github.com/garbas/garbasgit.svnexternals
(via http://d.hatena.ne.jp/Sixeight/20090210/1234272295 )
空のディレクトリはバージョン管理できない
.gitignoreとか何でもいいから空ファイルを作成すればOK。
部分的なチェックアウトできない
svn checkout はパスを指定すればどの階層でもワーキングコピーを作成できる。
git clone すると今までの履歴含め、全てをコピーしなければならない。
なのでプロジェクト/モジュールごとにリポジトリを作成するのがベストだろう。
あと、ディレクトリ同士のマージができない。これはちょっと何とかしたい。
複数のモジュールを含むSubversionリポジトリをGitへ移行する
http://iteman.jp/blog/2009/02/subversiongit.html
trunk, branches, tags
Subversionはディレクトリ構造として表現
Gitはbranchesとtagsが別のシステムになっている。