threads / patch / 5729

patch, 3 partsAdd pack-refs and show-ref test cases.

Subject: [PATCH 1/3] Add pack-refs and show-ref test cases.

## tl;dr

3 messages between Sep 28, 2006 and Mar 24, 2007. Diffs are folded; open one to read it.

replies: 2people: 1as markdown or json

Christian Couder· Sep 28, 2006, 04:58 UTC · lore

Some of these test cases are from Junio. One test case is commented out because it doesn't work right now.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 t/t3210-pack-refs.sh |   70 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)
Show changes to t/t3210-pack-refs.sh +70 −0
diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh
new file mode 100755
index 0000000..2cc03e6
--- /dev/null
+++ b/t/t3210-pack-refs.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Copyright (c) 2005 Amos Waterland
+# Copyright (c) 2006 Christian Couder
+#
+
+test_description='git pack-refs should not change the branch semantic
+
+This test runs git pack-refs and git show-ref and checks that the branch
+semantic is still the same.
+'
+. ./test-lib.sh
+
+test_expect_success \
+    'prepare a trivial repository' \
+    'echo Hello > A &&
+     git-update-index --add A &&
+     git-commit -m "Initial commit." &&
+     HEAD=$(git-rev-parse --verify HEAD)'
+
+SHA1=
+
+test_expect_success \
+    'see if git show-ref works as expected' \
+    'git-branch a &&
+     SHA1=$(< .git/refs/heads/a) &&
+     echo "$SHA1 refs/heads/a" >expect &&
+     git-show-ref a >result &&
+     diff expect result'
+
+test_expect_success \
+    'see if a branch still exists when packed' \
+    'git-branch b &&
+     git-pack-refs &&
+     rm .git/refs/heads/b &&
+     echo "$SHA1 refs/heads/b" >expect &&
+     git-show-ref b >result &&
+     diff expect result'
+
+# test_expect_failure \
+#     'git branch c/d should barf if branch c exists' \
+#     'git-branch c &&
+#      git-pack-refs &&
+#      rm .git/refs/heads/c &&
+#      git-branch c/d'
+
+test_expect_success \
+    'see if a branch still exists after git pack-refs --prune' \
+    'git-branch e &&
+     git-pack-refs --prune &&
+     echo "$SHA1 refs/heads/e" >expect &&
+     git-show-ref e >result &&
+     diff expect result'
+
+test_expect_failure \
+    'see if git pack-refs --prune remove ref files' \
+    'git-branch f &&
+     git-pack-refs --prune &&
+     ls .git/refs/heads/f'
+
+test_expect_success \
+    'git branch g should work when git branch g/h has been deleted' \
+    'git-branch g/h &&
+     git-pack-refs --prune &&
+     git-branch -d g/h &&
+     git-branch g &&
+     git-pack-refs &&
+     git-branch -d g'
+
+test_done
-- 
1.4.2.1.g4f95-dirty
Christian Couder· Mar 24, 2007, 05:30 UTC · re: Christian Couder · lore

[PATCH 2/3] When creating branch c/d check that branch c does not already exists.

With packed refs, there may not be a ".git/refs/heads/c" file when branch c exists. And currently in this case, there is no check to prevent creation of branch c/d.

This should probably be rewritten in C and done after the ref lock has been taken to make sure no race exists though.

This is mainly to make all test cases in "t3210-pack-refs.sh" work.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 git-branch.sh |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
Show changes to git-branch.sh +10 −0
diff --git a/git-branch.sh b/git-branch.sh
index 4826c75..4a1e7d9 100755
--- a/git-branch.sh
+++ b/git-branch.sh
@@ -122,6 +122,16 @@ then
 	done
 fi
 
+branchdir=$(dirname $branchname)
+while test "$branchdir" != "."
+do
+	if git-show-ref --verify --quiet -- "refs/heads/$branchdir"
+	then
+		die "$branchdir already exists."
+	fi
+	branchdir=$(dirname $branchdir)
+done
+
 if git-show-ref --verify --quiet -- "refs/heads/$branchname"
 then
 	if test '' = "$force"
-- 
1.4.2.1.g3bab
Christian Couder· Mar 24, 2007, 05:34 UTC · re: Christian Couder · lore

Re: [PATCH 2/3] When creating branch c/d check that branch c does not already exists.

Oops, sorry this is an old mail that was in my Draft folder and should not have been sent...

Christian.
Le samedi 24 mars 2007 06:30, Christian Couder a écrit :
Show 35 quoted lines
> With packed refs, there may not be a ".git/refs/heads/c" file
> when branch c exists. And currently in this case, there is no check
> to prevent creation of branch c/d.
>
> This should probably be rewritten in C and done after the ref lock
> has been taken to make sure no race exists though.
>
> This is mainly to make all test cases in "t3210-pack-refs.sh" work.
>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
>  git-branch.sh |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/git-branch.sh b/git-branch.sh
> index 4826c75..4a1e7d9 100755
> --- a/git-branch.sh
> +++ b/git-branch.sh
> @@ -122,6 +122,16 @@ then
>  	done
>  fi
>
> +branchdir=$(dirname $branchname)
> +while test "$branchdir" != "."
> +do
> +	if git-show-ref --verify --quiet -- "refs/heads/$branchdir"
> +	then
> +		die "$branchdir already exists."
> +	fi
> +	branchdir=$(dirname $branchdir)
> +done
> +
>  if git-show-ref --verify --quiet -- "refs/heads/$branchname"
>  then
>  	if test '' = "$force"

← back to recent threads