Git から Subversion リポジトリーをいじれるという話なので、試してみた。
Svn リポジトリーと通信する時は git svn SUBCOMMAND を使い、ローカル・リポジトリーをいじる時は git の素のコマンドを使えるっぽい。
インストール
Ubuntu ならパッケージで一発インストール。
$ sudo apt-get install git-svn
使い方
help
まずはヘルプの表示方法。
$ man git-svn
もしくは
$ git help svn
checkout
git svn clone が svn checkout に相当する。使い方:
$ git svn clone URI
今回、Google Code にホスティングしている自分のプロジェクトを取って来た。
$ git svn clone https://texsymb.googlecode.com/svn/trunk/ texsymb --username masayuki.ataka
--username オプションも、ちゃんと使えるね。
ローカルで作業
ローカルで作業する分には、git のコマンドが使える。
$ git log ... # ログがズラズラと... $ git branch * master # Git のブランチが確認できる $ git checkout -b test Switched to a new branch "test" $ git branch master * test # test ブランチ作ってみた $ gitk # gitk で開発の流れも GUI 化できる
ファイルを編集したら、git add 後に git commit。ここら辺は、Git の普段の操作と変わんない。
$ cd texsymb $ touch README $ git add README # New file を add して $ git commit -m 'Add new file README' # commit Created commit a27bf67: Add new file README 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 README $ git log commit a27bf67ef702ff983f99713f7d4d2812b3d3476e Author: ataka <masayuki.ataka@gmail.com> Date: Tue Jan 27 05:08:01 2009 +0900 Add new file README ...
git svn log を使うと、Subversion 形式のログを読める。
$ git svn log ------------------------------------------------------------------------ r8 | masayuki.ataka | 2007-02-08 19:22:13 +0900 (木, 08 2月 2007) | 2 lines TeX-symb is now minor mode.
ただし、ローカルに git commit した分のログは読めないみたい。
リポジトリーに commit
git-svn dcommit が svn commit に相当する。
$ git svn dcommit
って、まだ試してない ^^; ローカルの git commit 分を一気にリポジトリーにコミットしてくれるらしい。
リポジトリーから update
リポジトリーの変更分を取って来る方法。
$ git svn rebase
こちらも、まだ試してない。
man を斜め読みした感じだと、git-pull (と git-merge) は開発ブランチが分岐してしまうので、よろしくないらしい。Svn リポジトリーに取り込むのが大変みたい。なので、git-rebase が良いのだとか。
ここら辺、Git の merge と rebase が分かってないので、勉強する必要あるなぁ。
Fetch
ちと git, git なお話。
git branch -r すると、git-svn というブランチにリモート・リポジトリーが保存されてるっぽい。
$ git branch -r git-svn
git svn fetch コマンドで、リモートの変更を git-svn ブランチに取り込めるんじゃないかな?
$ git svn fetch
そうすれば、git svn rebase する前に、リモートでの変更分を確認できる (気がする)。後で試そう。
$ git log git-svn $ git svn rebase -l
あとがき
これが使い込なせると、Google Code 上にある svn リポジトリーをいじれるようになるなぁ。すると、色々止まってたプロジェクトも再開できるかもしれない :p
No comments:
Post a Comment