ネタ整理

アルコール注入しつつ。
github な dashboard から、_new repository_ をクリックして出てくるのが以降にローカル側でやんなきゃなソレで以下。

Global setup:

 Download and install Git
  git config --global user.name "Yamane Toshiaki"
  git config --global user.email yamanetoshi@gmail.com
        

Next steps:

  mkdir Android-Exercise
  cd Android-Exercise
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:yamanetoshi/Android-Exercise.git
  git push origin master

ここまで控えて思ったんですが、整理しつつネタばらしになってる件w

構わず続行

事前に確認してみて下さい、ってコトで (何
上記は Android なプロジェクトの場合はそのまんまヤッちゃうと微妙。Eclipse から Android なプロジェクトを作成してその中で git init する必要あり。
で、git add してくんですが、gen と bin なディレクトリは .gitignore で対象範疇外にしといた方が良さげ。で、git status で様子を見つつ git add していきます。

$ git add .gitignore
$ git add .classpath
$ git add .project
$ git add AndroidManifest.xml
$ git add assets
$ git add res
$ git add src
$ git add default.properties
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file: .classpath
#       new file: .gitignore
#       new file: .project
#       new file: AndroidManifest.xml
#       new file: default.properties
#       new file: res/drawable-hdpi/icon.png
#       new file: res/drawable-ldpi/icon.png
#       new file: res/drawable-mdpi/icon.png
#       new file: res/layout/main.xml
#       new file: res/values/strings.xml
#       new file: src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
#
$

あ、あと README も touch して add しといた方が良いみたい。

$ touch README
$ git add README
$

で、commit 以降のソレをナニ。

$ git commit -m 'first commit'
Created initial commit 172e974: first commit
 11 files changed, 103 insertions(+), 0 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .gitignore
 create mode 100644 .project
 create mode 100644 AndroidManifest.xml
 create mode 100644 README
 create mode 100644 default.properties
 create mode 100644 res/drawable-hdpi/icon.png
 create mode 100644 res/drawable-ldpi/icon.png
 create mode 100644 res/drawable-mdpi/icon.png
 create mode 100644 res/layout/main.xml
 create mode 100644 res/values/strings.xml
 create mode 100644 src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
$ git remote add origin git@github.com:yamanetoshi/Android-Exercise.git
$ git push origin master
Counting objects: 25, done.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (25/25), 10.91 KiB, done.
Total 25 (delta 0), reused 0 (delta 0)
To git@github.com:yamanetoshi/Android-Exercise.git
 * [new branch]      master -> master
$

これで master ができあがり。develop な branch も作成。

$ git checkout -b develop master
Switched to a new branch "develop"
$ git push origin develop
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:yamanetoshi/Android-Exercise.git
 * [new branch]      develop -> develop
$

これで準備完了。github.com 上でも branch が二つありますな。これで共有リポジトリの初期設定完了。ここで一旦ディレクトリを削除して clone してみます。

$ cd ..
$ rm -rf AndroidExercise

で、適当な場所に、って削除は Eclipse からヤらないと駄目ですな。

リポジトリを clone してみる

readonly なソレから clone

$ git clone git://github.com/yamanetoshi/Android-Exercise.git
Initialized empty Git repository in /home/rms/tmp/Android-Exercise/.git/
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 25 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (25/25), 10.91 KiB, done.
$

一応 Eclipse から見える事を確認したら branch を作ります。てか develop をナニしてませんな。以下な要領でナニ。

$ git checkout -t -b develop origin/develop
M       .classpath
Branch develop set up to track remote branch refs/remotes/origin/develop.
Switched to a new branch "develop"
$

何故か .classpath が更新されてますが、おそらくは Eclipse が悪さしたんだろうな。git diff したのが以下。

$ git diff
diff --git a/.classpath b/.classpath
index 609aa00..6efcbb7 100644
--- a/.classpath
+++ b/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+       <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="gen"/>
-       <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry kind="output" path="bin"/>
 </classpath>
$

むむむむ的。とりあえず今から作る branch で吸収な方向。あ、面白そうなのでこれはここで add して commit してみましょう。

$ git add .classpath
$ git commit -m 'modify .classpath by eclipse'
Created commit 9a5020a: modify .classpath by eclipse
 1 files changed, 1 insertions(+), 1 deletions(-)
$

で、branch 作成。

$ git checkout -b google-map-feature develop
Switched to a new branch "google-map-feature"
$ git branch
  develop
* google-map-feature
  master
$

で、修正を盛り込んで実行してみたんですが manifest 方面に permission を盛り込んでない事を思いだしてるんですが、emulator はまだ実行を開始してない件orz
とりあえず以下な操作をナニ。

$ git add assets
$ git add AndroidManifest.xml
$ git add src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
$

あら?

と思ったら maps.google.com の名前解決に失敗している模様。プロジェクトを refresh してリトライしたら地図が出ました。ので commit。

$ git commit -m 'implement google map'
Created commit f5b8ac6: implement google map
 3 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 assets/index.html
$

パッチをナニしてみます。

$ git format-patch origin
0001-modify-.classpath-by-eclipse.patch
0002-implement-google-map.patch
$

0002-implement-google-map.patch の中身が以下ッス。

From f5b8ac6689087d52b74cc08de056722f066f83ca Mon Sep 17 00:00:00 2001
From: rms <yamanetoshi@gmail.com>
Date: Tue, 4 May 2010 17:29:00 +0900
Subject: [PATCH] implement google map

---
 AndroidManifest.xml                                |    3 +-
 assets/index.html                                  |   22 ++++++++++++++++++++
 .../androidexercise/AndroidExercise.java           |    6 ++++-
 3 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 assets/index.html

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bd3faac..9552ca6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -13,6 +13,5 @@
         </activity>
 
     </application>
-
-
+<uses-permission android:name="android.permission.INTERNET"></uses-permission>
 </manifest> 
\ No newline at end of file
diff --git a/assets/index.html b/assets/index.html
new file mode 100644
index 0000000..5fed74e
--- /dev/null
+++ b/assets/index.html
@@ -0,0 +1,22 @@
+<html>
+<head>
+<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<title>Google Maps JavaScript API v3 Example: Map Language</title>
+<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script>
+<script type="text/javascript">
+  function initialize() {
+    var myLatlng = new google.maps.LatLng(-34.397, 150.644);
+    var myOptions = {
+      zoom: 8,
+      center: myLatlng,
+      mapTypeId: google.maps.MapTypeId.ROADMAP
+    }
+    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
+  }
+</script>
+</head>
+<body style="margin:0px; padding:0px;" onload="initialize()">
+  <div id="map_canvas" style="width:100%; height:100%"></div>
+</body>
+</html>
diff --git a/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java b/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
index bcd5736..d461930 100644
--- a/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
+++ b/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java
@@ -2,12 +2,16 @@ package jp.shuri.yamanetoshi.androidexercise;
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.webkit.WebView;
 
 public class AndroidExercise extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.main);
+       WebView webView = new WebView(this);
+       webView.getSettings().setJavaScriptEnabled(true);
+       webView.loadUrl("file:///android_asset/index.html");
+       setContentView(webView);
     }
 }
\ No newline at end of file
-- 
1.5.6.5

わしはこの patch なテキストをそのままメイルに添付して送付してました。

面白い

この状態だと branch を行き来しても上記の patch 達が見えるんですね。とりあえず push 可能な形で clone して patch を apply してみます。
まず clone ですが以下。

$ git clone git@github.com:yamanetoshi/Android-Exercise.git
Initialized empty Git repository in /home/rms/eclipse_workspace/Android-Exercise/.git/
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 25 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (25/25), 10.91 KiB, done.
$

で、順に am してみます。

$ cd Android-Exercise/
$ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch
Applying modify .classpath by eclipse
$ git log
commit 33419fcfb1c0b09904fee772e2ced811cd258fdd
Author: rms <yamanetoshi@gmail.com>
Date:   Tue May 4 16:51:47 2010 +0900

    modify .classpath by eclipse

commit 172e974076a3df81360e47015c504bc1dbab5e0e
Author: rms <yamanetoshi@gmail.com>
Date:   Tue May 4 16:36:35 2010 +0900

    first commit
$

commit として盛り込まれておりますな。もう一つ。

$ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch
Applying implement google map
.dotest/patch:64: space before tab in indent.
        WebView webView = new WebView(this);
.dotest/patch:65: space before tab in indent.
        webView.getSettings().setJavaScriptEnabled(true);
.dotest/patch:66: space before tab in indent.
        webView.loadUrl("file:///android_asset/index.html");
.dotest/patch:67: space before tab in indent.
        setContentView(webView);
warning: 4 lines add whitespace errors.
$

大丈夫かな。で、動作確認しようとして既存のソレから project 作成ってヤッたら

overlaps the location of another project:'Android-Exercise'

って叱られる。どっかの削除をしくった可能性大orz
仕方が無いので workspace 以外の場所にディレクトリを移動。したら Eclipse でプロジェクト作成できました。このあたりも微妙っちゃ微妙。とりあえず正常動作が確認できたので、これを共用リポジトリに push して一連の流れとしては終了ッスか。

と思ったら

master なブランチしか clone してなくてとほほな件。orz
もっかいヤリ直します。

$ rm -rf Android-Exercise
$ git clone git@github.com:yamanetoshi/Android-Exercise.git
Initialized empty Git repository in /home/rms/eclipse_workspace/Android-Exercise/.git/
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 25 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (25/25), 10.91 KiB, done.
$ cd Android-Exercise
$ git checkout -t -b develop origin/develop
Branch develop set up to track remote branch refs/remotes/origin/develop.
Switched to a new branch "develop"
$ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch
Applying modify .classpath by eclipse
$ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch
Applying implement google map
.dotest/patch:64: space before tab in indent.
        WebView webView = new WebView(this);
.dotest/patch:65: space before tab in indent.
        webView.getSettings().setJavaScriptEnabled(true);
.dotest/patch:66: space before tab in indent.
        webView.loadUrl("file:///android_asset/index.html");
.dotest/patch:67: space before tab in indent.
        setContentView(webView);
warning: 4 lines add whitespace errors.
$

無理矢理気味ですが、上記盛り込みを Eclipse 上で確認。あ、develop に直接してるな。もうええ加減にしてくれ的orz

再度リトライ

手順を一部略。再度プロジェクトを削除した後にディレクトリも削除して云々。

  • clone
  • checkout -t -b

で、ブランチ作成。

$ git checkout -b yamanetoshi-feature develop
Switched to a new branch "yamanetoshi-feature"
$

で、patch 適用。

$ git branch
  develop
  master
* yamanetoshi-feature
$ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch
Applying modify .classpath by eclipse
$ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch
Applying implement google map
.dotest/patch:64: space before tab in indent.
        WebView webView = new WebView(this);
.dotest/patch:65: space before tab in indent.
        webView.getSettings().setJavaScriptEnabled(true);
.dotest/patch:66: space before tab in indent.
        webView.loadUrl("file:///android_asset/index.html");
.dotest/patch:67: space before tab in indent.
        setContentView(webView);
warning: 4 lines add whitespace errors.
$

ここで Eclipse にプロジェクトを読み込んで試験してみます。地図は表示できたみたいなので、ここで merge して push すれば良いのか。

$ git branch
  develop
  master
* yamanetoshi-feature
$ git checkout develop
Switched to branch "develop"
$ git merge yamanetoshi-feature
Updating 172e974..de7c941
Fast forward
 .classpath                                         |    2 +-
 AndroidManifest.xml                                |    3 +-
 assets/index.html                                  |   22 ++++++++++++++++++++
 .../androidexercise/AndroidExercise.java           |    6 ++++-
 4 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 assets/index.html
$ git push origin develop
Counting objects: 23, done.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (14/14), 1.65 KiB, done.
Total 14 (delta 5), reused 0 (delta 0)
To git@github.com:yamanetoshi/Android-Exercise.git
   172e974..de7c941  develop -> develop
$

これで github.com を確認してみるか。

やれやれ

どうも Eclipse 使うと branch して云々なソレがヤりにくい。やはり方向性としては clojureemacs で、なソレが良いのかなぁ (わら
とりあえずエントリ投入して一連の流れを精査してみます。