threads / patch / 8806

patchTest that git add removes stages 1,2,3.

Subject: [PATCH] Test that git add removes stages 1,2,3.

## tl;dr

4 messages between Jul 2, 2007 and Jul 2, 2007. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Johannes Sixt· Jul 2, 2007, 11:18 UTC · lore
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
---
git add seems to have a bug, where it doesn't remove stages 1,2,3
if a stage 0 entry is already in the index.

Here is a test (on top of maint) for the kind soul who wants to fix this border case. Feel free to merge this patch into your patch that provides the fix.

-- Hannes
 t/t3700-add.sh |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
Show changes to t/t3700-add.sh +12 −0
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index ad8cc7d..d7dd6ca 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -110,4 +110,16 @@ test_expect_success 'check correct prefix detection' '
 	git add 1/2/a 1/3/b 1/2/c
 '
 
+test_expect_success 'git add removes unmerged entries' '
+	git rm --cached -f file &&
+	for s in 0 1 2 3
+	do
+		echo "100644 0123456789012345678901234567890123456789 $s	file"
+	done | git update-index --index-info &&
+	echo new > file &&
+	git add file &&
+	git ls-files --stage | grep "^100644 .* 0	file$" &&
+	! git ls-files --stage | grep "^100644 .* [^0]	file$"
+'
+
 test_done
-- 
1.5.2.2.555.g24e57
Johannes Sixt· Jul 2, 2007, 11:23 UTC · re: Johannes Sixt · lore

[PATCH/amend] Test that git add removes stages 1,2,3.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
---
HMPF!
The test in the original post failed for the wrong reason. :-/
-- Hannes
 t/t3700-add.sh |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
Show changes to t/t3700-add.sh +12 −0
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index ad8cc7d..06fc2bf 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -110,4 +110,16 @@ test_expect_success 'check correct prefix detection' '
 	git add 1/2/a 1/3/b 1/2/c
 '
 
+test_expect_success 'git add removes unmerged entries' '
+	git rm --cached -f file || : ignore failure &&
+	for s in 0 1 2 3
+	do
+		echo "100644 0123456789012345678901234567890123456789 $s	file"
+	done | git update-index --index-info &&
+	echo new > file &&
+	git add file &&
+	git ls-files --stage | grep "^100644 .* 0	file$" &&
+	! git ls-files --stage | grep "^100644 .* [^0]	file$"
+'
+
 test_done
-- 
1.5.2.2.555.g24e57
Johannes Schindelin· Jul 2, 2007, 11:34 UTC · re: Johannes Sixt · lore

Re: [PATCH] Test that git add removes stages 1,2,3.

Hi,
On Mon, 2 Jul 2007, Johannes Sixt wrote:
> git add seems to have a bug, where it doesn't remove stages 1,2,3
> if a stage 0 entry is already in the index.

But how does that happen? I do not know any way to use porcelain to achieve that bogus state.

AFAIK stages 1,2,3 are only populated when there are conflicts, in which case there is no stage 0. Literally the only way I see to have both is to _make_ update-index put them in there.

Pilot error?

Ciao, Dscho

Johannes Sixt· Jul 2, 2007, 11:47 UTC · re: Johannes Schindelin · lore

Re: [PATCH] Test that git add removes stages 1,2,3.

Johannes Schindelin wrote:
Show 7 quoted lines
> On Mon, 2 Jul 2007, Johannes Sixt wrote:
> 
> > git add seems to have a bug, where it doesn't remove stages 1,2,3
> > if a stage 0 entry is already in the index.
> 
> But how does that happen? I do not know any way to use porcelain to
> achieve that bogus state.
I'm aware of that; so I said "border case" in the original post.
> Pilot error?

Oh, yes :) It noticed this when I was tweaking the test for git add with symlinks=false that I posted.

-- Hannes

← back to recent threads