All of lore.kernel.org
 help / color / mirror / Atom feed
* Git add -p “Your edited hunk does not apply. Edit again”
@ 2015-04-14  1:56 Tanky Woo
  2015-04-14  9:43 ` Matthieu Moy
  0 siblings, 1 reply; 17+ messages in thread
From: Tanky Woo @ 2015-04-14  1:56 UTC (permalink / raw)
  To: git

I asked this question in stackoverflow a few days ago, but get no answer.

link: http://stackoverflow.com/questions/29518944/git-add-p-your-edited-hunk-does-not-apply-
edit-again

---

An example, the original file:

test:
       make clean
       nosetests

clean:
       rm -rf htmlcov
       rm -rf build dist
       coverage erase
The file after changed:

HTMLCOV="htmlcov/"

test:
       make clean
       nosetests

clean:
       coverage erase
       rm -rf htmlcov
       rm -rf build dist

covhtml:
       make clean
       nosetests
       coverage html
       cd ${HTMLCOV} && python -m SimpleHTTPServer
This is the diff:

diff --git a/mf b/mf
index b9ca06e..6316e17 100644
--- a/mf
+++ b/mf
@@ -1,8 +1,16 @@
+HTMLCOV="htmlcov/"            # Hunk 1
+
 test:
        make clean
        nosetests

 clean:
+       coverage erase         # Hunk 2
        rm -rf htmlcov
        rm -rf build dist
-       coverage erase         # Hunk 3
+
+covhtml:
+       make clean
+       nosetests
+       coverage html
+       cd ${HTMLCOV} && python -m SimpleHTTPServer
I use git add -p, want only to add:

+       coverage erase
        rm -rf htmlcov
        rm -rf build dist
-       coverage erase
So I first use s to split hunks, and n to ignore first add,
then use y to add second hunk, the third hunk 
is:

-       coverage erase
+
+covhtml:
+       make clean
+       nosetests
+       coverage html
+       cd ${HTMLCOV} && python -m SimpleHTTPServer
So I use e to manually edit the hunk, I delete all the + lines, it seems:

# Manual hunk edit mode -- see bottom for a quick guide
@@ -6,3 +9,8 @@
        rm -rf htmlcov
        rm -rf build dist
-       coverage erase
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
#
# ....
But when I saved, it says:

@@ -6,3 +9,8 @@
        rm -rf htmlcov
        rm -rf build dist
-       coverage erase
+
+covhtml:
+       make clean
+       nosetests
+       coverage html
+       cd ${HTMLCOV} && python -m SimpleHTTPServer
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? e
error: patch failed: mf:1
error: mf: patch does not apply
Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]?
And then I change to @@ from-file-range to-file-range @@ part to:

@@ -6,3 +9,2 @@
There is still the same problem.

If I first add only the second Hunk, 
and then I run git add -p xxx again, and edit the hunk, 
there is no problem. Why?

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: Git add -p “Your edited hunk does not apply. Edit again”
  2015-04-14  1:56 Git add -p “Your edited hunk does not apply. Edit again” Tanky Woo
@ 2015-04-14  9:43 ` Matthieu Moy
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
       [not found]   ` <CALv9gbMshdNhB58Otx5h8rmtCAU4qo9eNTqKSMzD_Phy7Sataw@mail.gmail.com>
  0 siblings, 2 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14  9:43 UTC (permalink / raw)
  To: Tanky Woo; +Cc: git

Tanky Woo <wtq1990@gmail.com> writes:

> -       coverage erase
> +
> +covhtml:
> +       make clean
> +       nosetests
> +       coverage html
> +       cd ${HTMLCOV} && python -m SimpleHTTPServer
> So I use e to manually edit the hunk, I delete all the + lines, it seems:

I can reproduce on git.git's master. Actually, you don't even have to
edit the patch, just save and exit, and you get the same error message.
So it's clearly a bug.

I can get the same kind of bug with "stash -p", without even using the
'e' command, by doing "split" and then answer n, y. On a simpler example
with two hunks:

$ git stash -p
diff --git a/bar.txt b/bar.txt
index 35fbd83..1d3fda3 100644
--- a/bar.txt
+++ b/bar.txt
@@ -1,4 +1,6 @@
 aaa
+added line 1
 bbb
+added line 2
 ccc
 ddd
Stash this hunk [y,n,q,a,d,/,s,e,?]? s
Split into 2 hunks.
@@ -1,2 +1,3 @@
 aaa
+added line 1
 bbb
Stash this hunk [y,n,q,a,d,/,j,J,g,e,?]? n
@@ -2,3 +3,4 @@
 bbb
+added line 2
 ccc
 ddd
Stash this hunk [y,n,q,a,d,/,K,g,e,?]? y

Saved working directory and index state WIP on master: 1cad001 abcd
error: patch failed: bar.txt:1
error: bar.txt: patch does not apply
Cannot remove worktree changes

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 0/4] demonstrate add -p and stash -p failures.
  2015-04-14  9:43 ` Matthieu Moy
@ 2015-04-14 11:32   ` Matthieu Moy
  2015-04-14 11:32     ` [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
                       ` (5 more replies)
       [not found]   ` <CALv9gbMshdNhB58Otx5h8rmtCAU4qo9eNTqKSMzD_Phy7Sataw@mail.gmail.com>
  1 sibling, 6 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 11:32 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

Playing a bit with add -p and stash -p, I can confirm the bug reported
by Tanky. This series just adds failing tests, but I couldn't debug it.

I've exhausted my Git time budget for now, so if someone wants to take
over and fix the bugs, feel free to do it!

Matthieu Moy (4):
  add -p: demonstrate failure when running 'edit' after a split
  t3904-stash-patch: fix test description
  t3904-stash-patch: factor PERL prereq at the top of the file
  stash -p: demonstrate failure of split with mixed y/n

 t/t3701-add-interactive.sh | 25 +++++++++++++++++++++++++
 t/t3904-stash-patch.sh     | 46 +++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 64 insertions(+), 7 deletions(-)

-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
@ 2015-04-14 11:32     ` Matthieu Moy
  2015-04-14 20:46       ` Eric Sunshine
  2015-04-14 11:32     ` [PATCH 2/4] t3904-stash-patch: fix test description Matthieu Moy
                       ` (4 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 11:32 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

The test passes if one replaces the 'e' command with a 'y' command in
the 'add -p' session.

Reported-by: Tanky Woo <wtq1990@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3701-add-interactive.sh | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 24ddd8a..b48a75c 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -335,6 +335,31 @@ test_expect_success 'split hunk "add -p (edit)"' '
 	! grep "^+15" actual
 '
 
+test_expect_failure 'split hunk "add -p (no, yes, edit)"' '
+	cat >test <<-\EOF &&
+	5
+	10
+	20
+	21
+	30
+	31
+	40
+	50
+	60
+	EOF
+	git reset &&
+	# test sequence is s(plit), n(o), y(es), e(dit)
+	# q n q q is there to make sure we exit at the end.
+	for a in s n y e   q n q q
+	do
+		echo $a
+	done |
+	EDITOR=: git add -p 2>error &&
+	test_must_be_empty error &&
+	git diff >actual &&
+	! grep "^+31" actual
+'
+
 test_expect_success 'patch mode ignores unmerged entries' '
 	git reset --hard &&
 	test_commit conflict &&
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/4] t3904-stash-patch: fix test description
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
  2015-04-14 11:32     ` [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
@ 2015-04-14 11:32     ` Matthieu Moy
  2015-04-14 11:32     ` [PATCH 3/4] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
                       ` (3 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 11:32 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

The old description is rather clearly a wrong cut-and-paste from
t2016-checkout-patch.sh.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 70655c1..9a59683 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test_description='git checkout --patch'
+test_description='stash -p'
 . ./lib-patch-mode.sh
 
 test_expect_success PERL 'setup' '
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/4] t3904-stash-patch: factor PERL prereq at the top of the file
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
  2015-04-14 11:32     ` [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
  2015-04-14 11:32     ` [PATCH 2/4] t3904-stash-patch: fix test description Matthieu Moy
@ 2015-04-14 11:32     ` Matthieu Moy
  2015-04-14 11:32     ` [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
                       ` (2 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 11:32 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 9a59683..0f8f47f 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -3,7 +3,13 @@
 test_description='stash -p'
 . ./lib-patch-mode.sh
 
-test_expect_success PERL 'setup' '
+if ! test_have_prereq PERL
+then
+	skip_all='skipping stash -p tests, perl not available'
+	test_done
+fi
+
+test_expect_success 'setup' '
 	mkdir dir &&
 	echo parent > dir/foo &&
 	echo dummy > bar &&
@@ -20,7 +26,7 @@ test_expect_success PERL 'setup' '
 
 # note: order of files with unstaged changes: HEAD bar dir/foo
 
-test_expect_success PERL 'saying "n" does nothing' '
+test_expect_success 'saying "n" does nothing' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state dir/foo work index &&
 	(echo n; echo n; echo n) | test_must_fail git stash save -p &&
@@ -29,7 +35,7 @@ test_expect_success PERL 'saying "n" does nothing' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'git stash -p' '
+test_expect_success 'git stash -p' '
 	(echo y; echo n; echo y) | git stash save -p &&
 	verify_state HEAD committed HEADfile_index &&
 	verify_saved_state bar &&
@@ -41,7 +47,7 @@ test_expect_success PERL 'git stash -p' '
 	verify_state dir/foo work head
 '
 
-test_expect_success PERL 'git stash -p --no-keep-index' '
+test_expect_success 'git stash -p --no-keep-index' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state bar bar_work bar_index &&
 	set_state dir/foo work index &&
@@ -56,7 +62,7 @@ test_expect_success PERL 'git stash -p --no-keep-index' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'git stash --no-keep-index -p' '
+test_expect_success 'git stash --no-keep-index -p' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state bar bar_work bar_index &&
 	set_state dir/foo work index &&
@@ -71,7 +77,7 @@ test_expect_success PERL 'git stash --no-keep-index -p' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'none of this moved HEAD' '
+test_expect_success 'none of this moved HEAD' '
 	verify_saved_head
 '
 
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
                       ` (2 preceding siblings ...)
  2015-04-14 11:32     ` [PATCH 3/4] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
@ 2015-04-14 11:32     ` Matthieu Moy
  2015-04-14 20:46       ` Eric Sunshine
  2015-04-14 18:00     ` [PATCH 0/4] demonstrate add -p and stash -p failures Junio C Hamano
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
  5 siblings, 1 reply; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 11:32 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 0f8f47f..6f053ff 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -81,4 +81,30 @@ test_expect_success 'none of this moved HEAD' '
 	verify_saved_head
 '
 
+test_expect_failure 'stash -p with split hunk' '
+	git reset --hard &&
+	cat >test <<-\EOF &&
+	aaa
+	bbb
+	ccc
+	EOF
+	git add test &&
+	git commit -m "initial" &&
+	cat >test <<-\EOF &&
+	aaa
+	added line 1
+	bbb
+	added line 2
+	ccc
+	EOF
+	for a in s n y q
+	do
+		echo $a
+	done |
+	test_might_fail git stash -p 2>error &&
+	! test_must_be_empty error &&
+	grep "added line 1" test &&
+	! grep "added line 2" test
+'
+
 test_done
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: Git add -p “Your edited hunk does not apply. Edit again”
       [not found]   ` <CALv9gbMshdNhB58Otx5h8rmtCAU4qo9eNTqKSMzD_Phy7Sataw@mail.gmail.com>
@ 2015-04-14 14:00     ` Matthieu Moy
  0 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-14 14:00 UTC (permalink / raw)
  To: Tanky Woo; +Cc: git

Tanky Woo <wtq1990@gmail.com> writes:

> Stash this hunk [y,n,q,a,d,/,j,J,g,e,?]? y
> @@ -2,3 +3,4 @@
>  bbb
> +added line 2
>  ccc
>  ddd
> Stash this hunk [y,n,q,a,d,/,K,g,e,?]? y

My version does n, y, not y, y. The problem is the mix of stashed/not
stashed hunks. See my other message for a reproducible test, it does
fail on Git master.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] demonstrate add -p and stash -p failures.
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
                       ` (3 preceding siblings ...)
  2015-04-14 11:32     ` [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
@ 2015-04-14 18:00     ` Junio C Hamano
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
  5 siblings, 0 replies; 17+ messages in thread
From: Junio C Hamano @ 2015-04-14 18:00 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git, Thomas Rast

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> Playing a bit with add -p and stash -p, I can confirm the bug reported
> by Tanky. This series just adds failing tests, but I couldn't debug it.
>
> I've exhausted my Git time budget for now, so if someone wants to take
> over and fix the bugs, feel free to do it!

I do not have time to dig this either for now, but I suspect this
"split a hunk into two overlapping hunks" issue may be related to
the caveat in the very original:


http://thread.gmane.org/gmane.comp.version-control.git/76650/focus=87197


where I seem to have said that the proposed change would make "add
-p" less robust than the original code (even without 'e'dit):

    Junio C Hamano wrote:
    > 
    > I recall that the original "add--interactive" carefully counted
    > numbers in hunks it reassembles (as it can let you split and then
    > you can choose to use both parts, which requires it to merge
    > overlapping hunks back), but if you are going to use --recount
    > anyway, perhaps we can discard that logic?  It may make the patch
    > application less robust, though.  I dunno.


It seems that we accepted that series saying "let's see what
happens" at the end, and I suspect we are seeing its consequences
;-).

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split
  2015-04-14 11:32     ` [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
@ 2015-04-14 20:46       ` Eric Sunshine
  0 siblings, 0 replies; 17+ messages in thread
From: Eric Sunshine @ 2015-04-14 20:46 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: Junio C Hamano, Git List

On Tue, Apr 14, 2015 at 7:32 AM, Matthieu Moy <Matthieu.Moy@imag.fr> wrote:
> The test passes if one replaces the 'e' command with a 'y' command in
> the 'add -p' session.
>
> Reported-by: Tanky Woo <wtq1990@gmail.com>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
> diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
> index 24ddd8a..b48a75c 100755
> --- a/t/t3701-add-interactive.sh
> +++ b/t/t3701-add-interactive.sh
> @@ -335,6 +335,31 @@ test_expect_success 'split hunk "add -p (edit)"' '
>         ! grep "^+15" actual
>  '
>
> +test_expect_failure 'split hunk "add -p (no, yes, edit)"' '
> +       cat >test <<-\EOF &&
> +       5
> +       10
> +       20
> +       21
> +       30
> +       31
> +       40
> +       50
> +       60
> +       EOF
> +       git reset &&
> +       # test sequence is s(plit), n(o), y(es), e(dit)
> +       # q n q q is there to make sure we exit at the end.
> +       for a in s n y e   q n q q
> +       do
> +               echo $a
> +       done |

Simplified:

    printf '%s\n' s n y e q n q q |

> +       EDITOR=: git add -p 2>error &&
> +       test_must_be_empty error &&
> +       git diff >actual &&
> +       ! grep "^+31" actual
> +'
> +
>  test_expect_success 'patch mode ignores unmerged entries' '
>         git reset --hard &&
>         test_commit conflict &&
> --
> 2.4.0.rc1.42.g9642cc6

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n
  2015-04-14 11:32     ` [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
@ 2015-04-14 20:46       ` Eric Sunshine
  0 siblings, 0 replies; 17+ messages in thread
From: Eric Sunshine @ 2015-04-14 20:46 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: Junio C Hamano, Git List

On Tue, Apr 14, 2015 at 7:32 AM, Matthieu Moy <Matthieu.Moy@imag.fr> wrote:
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
> diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
> index 0f8f47f..6f053ff 100755
> --- a/t/t3904-stash-patch.sh
> +++ b/t/t3904-stash-patch.sh
> @@ -81,4 +81,30 @@ test_expect_success 'none of this moved HEAD' '
>         verify_saved_head
>  '
>
> +test_expect_failure 'stash -p with split hunk' '
> +       git reset --hard &&
> +       cat >test <<-\EOF &&
> +       aaa
> +       bbb
> +       ccc
> +       EOF
> +       git add test &&
> +       git commit -m "initial" &&
> +       cat >test <<-\EOF &&
> +       aaa
> +       added line 1
> +       bbb
> +       added line 2
> +       ccc
> +       EOF
> +       for a in s n y q
> +       do
> +               echo $a
> +       done |

Simplified:

    printf '%s\n' s n y q |

> +       test_might_fail git stash -p 2>error &&
> +       ! test_must_be_empty error &&
> +       grep "added line 1" test &&
> +       ! grep "added line 2" test
> +'
> +
>  test_done
> --
> 2.4.0.rc1.42.g9642cc6

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 0/5] demonstrate add -p and stash -p failures
  2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
                       ` (4 preceding siblings ...)
  2015-04-14 18:00     ` [PATCH 0/4] demonstrate add -p and stash -p failures Junio C Hamano
@ 2015-04-16  7:02     ` Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 1/5] t3701-add-interactive: simplify code Matthieu Moy
                         ` (4 more replies)
  5 siblings, 5 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

Change since v2: simplify the code (for consistancy, I also changed
the code I copy/pasted from in a separate patch).

Still out of Git time budget though :-(.

Matthieu Moy (5):
  t3701-add-interactive: simplify code
  add -p: demonstrate failure when running 'edit' after a split
  t3904-stash-patch: fix test description
  t3904-stash-patch: factor PERL prereq at the top of the file
  stash -p: demonstrate failure of split with mixed y/n

 t/t3701-add-interactive.sh | 27 +++++++++++++++++++++++----
 t/t3904-stash-patch.sh     | 43 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 59 insertions(+), 11 deletions(-)

-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 1/5] t3701-add-interactive: simplify code
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
@ 2015-04-16  7:02       ` Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 2/5] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
                         ` (3 subsequent siblings)
  4 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3701-add-interactive.sh | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 24ddd8a..b63b9d4 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -326,10 +326,7 @@ test_expect_success 'split hunk "add -p (edit)"' '
 	# 2. Correct version applies the (not)edited version, and asks
 	#    about the next hunk, against which we say q and program
 	#    exits.
-	for a in s e     q n q q
-	do
-		echo $a
-	done |
+	printf "%s\n" s e     q n q q |
 	EDITOR=: git add -p &&
 	git diff >actual &&
 	! grep "^+15" actual
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 2/5] add -p: demonstrate failure when running 'edit' after a split
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 1/5] t3701-add-interactive: simplify code Matthieu Moy
@ 2015-04-16  7:02       ` Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 3/5] t3904-stash-patch: fix test description Matthieu Moy
                         ` (2 subsequent siblings)
  4 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

The test passes if one replaces the 'e' command with a 'y' command in
the 'add -p' session.

Reported-by: Tanky Woo <wtq1990@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3701-add-interactive.sh | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index b63b9d4..deae948 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -332,6 +332,28 @@ test_expect_success 'split hunk "add -p (edit)"' '
 	! grep "^+15" actual
 '
 
+test_expect_failure 'split hunk "add -p (no, yes, edit)"' '
+	cat >test <<-\EOF &&
+	5
+	10
+	20
+	21
+	30
+	31
+	40
+	50
+	60
+	EOF
+	git reset &&
+	# test sequence is s(plit), n(o), y(es), e(dit)
+	# q n q q is there to make sure we exit at the end.
+	printf "%s\n" s n y e   q n q q |
+	EDITOR=: git add -p 2>error &&
+	test_must_be_empty error &&
+	git diff >actual &&
+	! grep "^+31" actual
+'
+
 test_expect_success 'patch mode ignores unmerged entries' '
 	git reset --hard &&
 	test_commit conflict &&
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 3/5] t3904-stash-patch: fix test description
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 1/5] t3701-add-interactive: simplify code Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 2/5] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
@ 2015-04-16  7:02       ` Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 4/5] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 5/5] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
  4 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

The old description is rather clearly a wrong cut-and-paste from
t2016-checkout-patch.sh.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 70655c1..9a59683 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test_description='git checkout --patch'
+test_description='stash -p'
 . ./lib-patch-mode.sh
 
 test_expect_success PERL 'setup' '
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 4/5] t3904-stash-patch: factor PERL prereq at the top of the file
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
                         ` (2 preceding siblings ...)
  2015-04-16  7:02       ` [PATCH v2 3/5] t3904-stash-patch: fix test description Matthieu Moy
@ 2015-04-16  7:02       ` Matthieu Moy
  2015-04-16  7:02       ` [PATCH v2 5/5] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
  4 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 9a59683..0f8f47f 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -3,7 +3,13 @@
 test_description='stash -p'
 . ./lib-patch-mode.sh
 
-test_expect_success PERL 'setup' '
+if ! test_have_prereq PERL
+then
+	skip_all='skipping stash -p tests, perl not available'
+	test_done
+fi
+
+test_expect_success 'setup' '
 	mkdir dir &&
 	echo parent > dir/foo &&
 	echo dummy > bar &&
@@ -20,7 +26,7 @@ test_expect_success PERL 'setup' '
 
 # note: order of files with unstaged changes: HEAD bar dir/foo
 
-test_expect_success PERL 'saying "n" does nothing' '
+test_expect_success 'saying "n" does nothing' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state dir/foo work index &&
 	(echo n; echo n; echo n) | test_must_fail git stash save -p &&
@@ -29,7 +35,7 @@ test_expect_success PERL 'saying "n" does nothing' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'git stash -p' '
+test_expect_success 'git stash -p' '
 	(echo y; echo n; echo y) | git stash save -p &&
 	verify_state HEAD committed HEADfile_index &&
 	verify_saved_state bar &&
@@ -41,7 +47,7 @@ test_expect_success PERL 'git stash -p' '
 	verify_state dir/foo work head
 '
 
-test_expect_success PERL 'git stash -p --no-keep-index' '
+test_expect_success 'git stash -p --no-keep-index' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state bar bar_work bar_index &&
 	set_state dir/foo work index &&
@@ -56,7 +62,7 @@ test_expect_success PERL 'git stash -p --no-keep-index' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'git stash --no-keep-index -p' '
+test_expect_success 'git stash --no-keep-index -p' '
 	set_state HEAD HEADfile_work HEADfile_index &&
 	set_state bar bar_work bar_index &&
 	set_state dir/foo work index &&
@@ -71,7 +77,7 @@ test_expect_success PERL 'git stash --no-keep-index -p' '
 	verify_state dir/foo work index
 '
 
-test_expect_success PERL 'none of this moved HEAD' '
+test_expect_success 'none of this moved HEAD' '
 	verify_saved_head
 '
 
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 5/5] stash -p: demonstrate failure of split with mixed y/n
  2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
                         ` (3 preceding siblings ...)
  2015-04-16  7:02       ` [PATCH v2 4/5] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
@ 2015-04-16  7:02       ` Matthieu Moy
  4 siblings, 0 replies; 17+ messages in thread
From: Matthieu Moy @ 2015-04-16  7:02 UTC (permalink / raw)
  To: gitster; +Cc: git, Eric Sunshine, Tanky Woo, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t3904-stash-patch.sh | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh
index 0f8f47f..38e7300 100755
--- a/t/t3904-stash-patch.sh
+++ b/t/t3904-stash-patch.sh
@@ -81,4 +81,27 @@ test_expect_success 'none of this moved HEAD' '
 	verify_saved_head
 '
 
+test_expect_failure 'stash -p with split hunk' '
+	git reset --hard &&
+	cat >test <<-\EOF &&
+	aaa
+	bbb
+	ccc
+	EOF
+	git add test &&
+	git commit -m "initial" &&
+	cat >test <<-\EOF &&
+	aaa
+	added line 1
+	bbb
+	added line 2
+	ccc
+	EOF
+	printf "%s\n" s n y q |
+	test_might_fail git stash -p 2>error &&
+	! test_must_be_empty error &&
+	grep "added line 1" test &&
+	! grep "added line 2" test
+'
+
 test_done
-- 
2.4.0.rc1.42.g9642cc6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2015-04-16  7:03 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-14  1:56 Git add -p “Your edited hunk does not apply. Edit again” Tanky Woo
2015-04-14  9:43 ` Matthieu Moy
2015-04-14 11:32   ` [PATCH 0/4] demonstrate add -p and stash -p failures Matthieu Moy
2015-04-14 11:32     ` [PATCH 1/4] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
2015-04-14 20:46       ` Eric Sunshine
2015-04-14 11:32     ` [PATCH 2/4] t3904-stash-patch: fix test description Matthieu Moy
2015-04-14 11:32     ` [PATCH 3/4] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
2015-04-14 11:32     ` [PATCH 4/4] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
2015-04-14 20:46       ` Eric Sunshine
2015-04-14 18:00     ` [PATCH 0/4] demonstrate add -p and stash -p failures Junio C Hamano
2015-04-16  7:02     ` [PATCH v2 0/5] " Matthieu Moy
2015-04-16  7:02       ` [PATCH v2 1/5] t3701-add-interactive: simplify code Matthieu Moy
2015-04-16  7:02       ` [PATCH v2 2/5] add -p: demonstrate failure when running 'edit' after a split Matthieu Moy
2015-04-16  7:02       ` [PATCH v2 3/5] t3904-stash-patch: fix test description Matthieu Moy
2015-04-16  7:02       ` [PATCH v2 4/5] t3904-stash-patch: factor PERL prereq at the top of the file Matthieu Moy
2015-04-16  7:02       ` [PATCH v2 5/5] stash -p: demonstrate failure of split with mixed y/n Matthieu Moy
     [not found]   ` <CALv9gbMshdNhB58Otx5h8rmtCAU4qo9eNTqKSMzD_Phy7Sataw@mail.gmail.com>
2015-04-14 14:00     ` Git add -p “Your edited hunk does not apply. Edit again” Matthieu Moy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.