git-svn の練習

http://code.google.com/ あたりにテスト用のリポジトリを作成して動作確認してみる事に。
とりあえず checkout は

git svn clone svn+ssh://fugahoge

とあるな。Checkout は以下とあります。

svn checkout https://yamanetoshi-android-project.googlecode.com/svn/trunk/ \
 yamanetoshi-android-project --username yamanetoshi@gmail.com

とりあえず、ハロワ状態の Android プロジェクトから必要なファイルを持ちてきて

$ ls
.git
AndroidManifest.xml
assets
libs
proguard-project.txt
res
src

.gitignore を以下な状態にして

.classpath
.project
bin/
gen/
project.properties

インデクスに登録して commit を作ります。

$ git add .
$ git commit -m 'initial commit'

で、svn リポジトリにも commit を。

$ git svn dcommit

なんかごにょごにょ言われましたが、Google のアカウントとパスワードを入力して、って上手くいってるのかと思ったらそうでもない模様。

ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.

あら、認証エラーらしい。む、http://code.google.com/p/projectname/source に以下な案内がありますね。パスワードはこれなのか。

When prompted, enter your generated googlecode.com password.

リトライ。できた、のかな。trunk 配下に反映されていることを確認。別途ここ以外のソレでも確認の方向にて。

控え

鵜飼さんのエントリも控えておくことに。

続き

別場所に clone してたナニに rebase (update) してみた。

$ git svn rebase
        A       .gitignore
        A       proguard-project.txt
        A       AndroidManifest.xml
        A       src/com/example/svnsample/MainActivity.java
        A       libs/android-support-v4.jar
        A       res/values-sw720dp-land/dimens.xml
        A       res/values/styles.xml
        A       res/values/strings.xml
        A       res/values/dimens.xml
        A       res/values-sw600dp/dimens.xml
        A       res/drawable-hdpi/ic_launcher.png
        A       res/menu/main.xml
        A       res/values-v11/styles.xml
        A       res/values-v14/styles.xml
        A       res/drawable-mdpi/ic_launcher.png
        A       res/drawable-xhdpi/ic_launcher.png
        A       res/layout/activity_main.xml

git log 見てみたら commit が二つあるな。

$ git log
commit 93a268212d12bee8cf9edc02b059928b4eeb6565
Author: yamanetoshi@gmail.com <yamanetoshi@gmail.com@7215229e-9e1a-02ef-698a-ca2a93d5e3bd>
Date:   Tue Jun 18 09:07:10 2013 +0000

    initial commit
    

commit 2e050753385eaf40e76c52fe95667e9759bbc17c
Author: (no author) <(no author)@7215229e-9e1a-02ef-698a-ca2a93d5e3bd>
Date:   Tue Jun 18 08:30:30 2013 +0000

    Initial directory structure.

で、以下な修正をしてみて

$ git diff
diff --git a/res/layout/activity_main.xml b/res/layout/activity_main.xml
index 168c9b8..9db941b 100644
--- a/res/layout/activity_main.xml
+++ b/res/layout/activity_main.xml
@@ -8,7 +8,7 @@
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context=".MainActivity" >
 
-    <TextView
+    <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/hello_world" />

盛り込んでみます。試験は略。

$ git add .
$ git commit -m 'Modify layout'
$ git svn dcommit

無事に盛り込まれている模様。つうかこれ、コンフリクトする場合どうなるのかな。とは言えとりあえずコミッタは自分のみ、らしい (そうでない所もありますが) ので、これデフォでもごもごしてみる方向。
別場所のローカルリポジトリで git svn rebase もしてみています。

$ git svn rebase
        M       res/layout/activity_main.xml
r3 = ab55cf4d2e544ddce174aeef3da0872678217f99 (refs/remotes/git-svn)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/git-svn.

とりあえずコンフリクトさせない形で、であれば

  • branch して盛り込み
  • master branch で rebase
  • master に merge
  • master を dcommit

という運転のしかたで大丈夫なのかどうか。