On Sun, Dec 02, 2018 at 11:30:19AM -0500, Robert P. J. Day wrote:
>
> testing adding by patch for the very first time (i've just never
> needed this), and reading the "progit" book and reading the man page,
> and the impression i'm getting is that running "git add -p" (going
> straight to patch mode) is supposed to be equivalent to running "git
> add -i", then typing "p" to switch to patch mode.
>
> that is most emphatically not what i'm seeing. if i run "git add
> -p", then i get to what i expect -- the patch subsystem:
>
> $ git add -p
> diff --git a/README.asc b/README.asc
> index fa40bad..840e85b 100644
> --- a/README.asc
> +++ b/README.asc
> @@ -1,3 +1,9 @@
> +change 1
> +
> +
> +
> +
> +
> = Pro Git, Second Edition
>
> Welcome to the second edition of the Pro Git book.
> Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?
>
> but if i start with "git add -i", there seems to be no way to get to
> patch mode -- certainly "p" doesn't do it. am i stupidly missing
> something trivial? is the explanation misleading or inncomplete?
Worksforme™:
$ echo "New content" >>README.md
$ echo "New content" >>t/README
$ echo "New content" >>contrib//README
$ git add -i
staged unstaged path
1: unchanged +1/-0 README.md
2: unchanged +1/-0 contrib/README
3: unchanged +1/-0 t/README
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> p
staged unstaged path
1: unchanged +1/-0 README.md
2: unchanged +1/-0 contrib/README
3: unchanged +1/-0 t/README
Patch update>> 1
staged unstaged path
* 1: unchanged +1/-0 README.md
2: unchanged +1/-0 contrib/README
3: unchanged +1/-0 t/README
Patch update>> 2
staged unstaged path
* 1: unchanged +1/-0 README.md
* 2: unchanged +1/-0 contrib/README
3: unchanged +1/-0 t/README
Patch update>>
Here I hit enter. Did you?
diff --git a/README.md b/README.md
index f920a42fad..63dee5cfc3 100644
--- a/README.md
+++ b/README.md
@@ -62,3 +62,4 @@ and the name as (depending on your mood):
[Documentation/giteveryday.txt]: Documentation/giteveryday.txt
[Documentation/gitcvs-migration.txt]:
Documentation/gitcvs-migration.txt
[Documentation/SubmittingPatches]: Documentation/SubmittingPatches
+New content
Stage this hunk [y,n,q,a,d,e,?]? y
diff --git a/contrib/README b/contrib/README
index 05f291c1f1..2b152dfcff 100644
--- a/contrib/README
+++ b/contrib/README
@@ -41,3 +41,4 @@ submit a patch to create a subdirectory of contrib/
and put your
stuff there.
-jc
+New content
Stage this hunk [y,n,q,a,d,e,?]? n
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> q
Bye.
$ git diff --cached
diff --git a/README.md b/README.md
index f920a42fad..63dee5cfc3 100644
--- a/README.md
+++ b/README.md
@@ -62,3 +62,4 @@ and the name as (depending on your mood):
[Documentation/giteveryday.txt]: Documentation/giteveryday.txt
[Documentation/gitcvs-migration.txt]: Documentation/gitcvs-migration.txt
[Documentation/SubmittingPatches]: Documentation/SubmittingPatches
+New content
$
Arguably the documentation could make it clear that the user can
choose multiple files at once, e.g.:
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index c9623854bf..061f9cbb0d 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -317,9 +317,9 @@ add untracked::
patch::
- This lets you choose one path out of a 'status' like selection.
- After choosing the path, it presents the diff between the index
- and the working tree file and asks you if you want to stage
+ This lets you choose one or more paths out of a 'status' like selection.
+ After choosing the path(s), it presents the diff between the index
+ and the working tree file(s) and asks you if you want to stage
the change of each hunk. You can select one of the following
options and type return:
And perhaps we could have a dedicated menu entry for "I'm done with
selecting paths"? Dunno; I'm a 'git add -p' user myself.