[PATCH 3/4 v2] Prepare testsuite for a "git clone" that packs refs
- From
Johan Herland <johan@herland.net>
- Date
- Jun 15, 2008, 23:16 UTC
- Message-ID
- <200806160116.53446.johan@herland.net>
- In-Reply-To
- <m3bq22poby.fsf@localhost.localdomain>
t5515-fetch-merge-logic removes many, but not all, refs between each test. This is done by removing the corresponding refs/foo/* files in the .git/refs hierarchy. However, once "git clone" starts producing packed refs, these refs will no longer be in the .git/refs hierarchy, but rather listed in .git/packed-refs. This patch teaches t5515-fetch-merge-logic to remove the refs using "git update-ref -d" which properly handles packed refs.
Signed-off-by: Johan Herland <johan@herland.net> ---
On Sunday 15 June 2008, Jakub Narebski wrote:
Show 6 quoted lines
> Jeff King <peff@peff.net> writes: > > Might it not be simpler to just convert it to use plumbing to delete > > the refs? Something like piping for-each-ref into update-ref -d? > > Or use git-for-each-ref with --shell option to generate code for > deleting refs?
Thanks for the tip. The following seems to do the job, and looks much better.
Have fun! :)
...Johan
t/t5515-fetch-merge-logic.sh | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/t/t5515-fetch-merge-logic.sh b/t/t5515-fetch-merge-logic.sh index 3def75e..9de8408 100755 --- a/t/t5515-fetch-merge-logic.sh +++ b/t/t5515-fetch-merge-logic.sh @@ -142,9 +142,12 @@ do set x $cmd; shift git symbolic-ref HEAD refs/heads/$1 ; shift rm -f .git/FETCH_HEAD - rm -f .git/refs/heads/* - rm -f .git/refs/remotes/rem/* - rm -f .git/refs/tags/* + git for-each-ref --format="%(refname)" \ + refs/heads refs/remotes/rem refs/tags | \ + while read refname + do + git update-ref -d "$refname" + done git fetch "$@" >/dev/null cat .git/FETCH_HEAD } >"$actual_f" &&
-- 1.5.6.rc2.128.gf64ae