中央リポジトリがSubverionの場合にもGitの恩恵を受けたいっていうときはgit-svnがいい
ローカルでの管理はGitで行い、最終的にsvn側にそれを反映するみたいなイメージになる
インストール方法
MacOS X
sudo port install git-core +svn
CentOS
sudo yum -y install git-svn
Ubuntu
sudo aptitude install git-svn
簡単な使い方説明
チェックアウト
# -sをつけるとデフォルトレイアウト(trunk,branches,tagsでsvnリポジトリ設定してあると-sつければオッケー) git svn clone -s http://repos repos
masterブランチがsvn側のtrunkとひもづいていることを確認
git svn info
開発
トピックブランチを切って作業してmasterにmergeしてsvnに反映する方法がいいみたい
# ブランチを切ってチェックアウト git checkout -b new_branch # ブランチ確認 git branches # 修正とか git add . git commit -m "hoge" # masterブランチをチェックアウト git checkout master # トピックブランチをマージ(no-commitつけるとmasterブランチでコミットされずにローカルの変更だけになる) git merge --no-ff --no-commit new_branch git add . git commit -m "hoge" # git stでnot stageなファイルがある状態でdcommitする # Cannot dcommit with a dirty index. Commit your changes first, or stash them with `git stash'. # svnへのコミットするにはgitのリポジトリがクリーンな状態じゃないとできないので一旦退避 git stash # branchesとかtagも含めて更新を取り込むよ git svn fetch # svn updateをやるのと同じこと更新を取り込む git svn rebase # svnの方にコミットするよ git svn dcommit # stashしたのをもとに戻す git stash pop # stashが複数あるときはちょっとちがう git stash list # stash@{0} # stash@{1} # stash@{2} # 1を取り出す git stash pop stash@{1} # stash listからは削除しないで取り出す git stash apply stash@{1}