git add -p の e のてすつ

面倒なので件のリポジトリをローカルに clone して無理やり名無し branch を作って、そこから -b を付けて checkout して format-patch で最新との diff を取る形で patch 取得。自分で書いてて何言ってるか意味不明 (?) ですが、add して commit する直前の状態に無理やりしちゃいました。
問題になっている (?) のは以下の部分。

@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+            mWakelock.acquire(10000);
     }
 }

これを異なる commit にしたい、というものです。

  • ある commit では Toast.makeText な行はコメントアウトされる
  • ある commit では mWAkelock.acquire の引数が追加される

リトライしてみます。以下な手順で

  • git add -p
  • 最初に s (split) します
  • j で一番最後の hunk に移動
  • e でエディタ起動

以下な形です。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+            mWakelock.acquire(10000);
     }
 }

先程はどうしたのだったかを忘れた。たぶんこうしたんだろうな。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire(10000);
     }
 }

git log によれば、なんですがヤッてみます。エラーは出ず、終了。diff は以下。

$ git diff --cached
diff --git a/src/jp/shuri/screenonshake/ShakeWatchService.java b/src/jp/shuri/screenonshake/ShakeWatchService.java
index 2ead704..2ca1331 100644
--- a/src/jp/shuri/screenonshake/ShakeWatchService.java
+++ b/src/jp/shuri/screenonshake/ShakeWatchService.java
@@ -159,7 +159,6 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire(10000);
     }
 }
$

当り前と言えば当り前ですが、こうしたくないんですよね。git reset HEAD してリトライしてみます。こうすりゃ良いのかな。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire(10000);
     }
 }

これは駄目なんですよね。あるいはこれはどうか。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
            mWakelock.acquire();
     }
 }

これも駄目。こうなると他に手は無さげ。あ、こうしてみたらできた。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire();
     }
 }

git diff --cached の出力が以下。

diff --git a/src/jp/shuri/screenonshake/ShakeWatchService.java b/src/jp/shuri/screenonshake/ShakeWatchService.java
index 2ead704..9e10d55 100644
--- a/src/jp/shuri/screenonshake/ShakeWatchService.java
+++ b/src/jp/shuri/screenonshake/ShakeWatchService.java
@@ -159,7 +159,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
             mWakelock.acquire();
     }
 }

わははは。勝った (何

結論 (?)

git add -p で以下な hunk をさらに分割したい場合

@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+            mWakelock.acquire(10000);
     }
 }

こうするか

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire();
     }
 }

またはこうすれば良い。

# Manual hunk edit mode -- see bottom for a quick guide
@@ -159,7 +169,7 @@ public class ShakeWatchService extends Service {
     }
 
     private void executeShakeAction() {
-            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
+            Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire(10000);
     }
 }

片方が修正されないけれど削除されて追加、という形になってます。微妙な誤魔化しに見えて仕方が無いですが、OK てことで。
ちなみに上の形だと diff が以下になります。

$ git diff --cached
diff --git a/src/jp/shuri/screenonshake/ShakeWatchService.java b/src/jp/shuri/screenonshake/ShakeWatchService.java
index 2ead704..c928c78 100644
--- a/src/jp/shuri/screenonshake/ShakeWatchService.java
+++ b/src/jp/shuri/screenonshake/ShakeWatchService.java
@@ -160,6 +160,6 @@ public class ShakeWatchService extends Service {
 
     private void executeShakeAction() {
             Toast.makeText(this, "shaked", Toast.LENGTH_SHORT).show();
-            mWakelock.acquire();
+            mWakelock.acquire(10000);
     }
 }
$

ちょっと (結構) 嬉しい。手元のリポジトリの歴史を修正したくなってきてるのですが、どうしよう。