From 3fe8dce6fc5b1d0bffba8fdb4e075fcd16cf5619 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Karl=20Hasselstr=C3=B6m?= Date: Tue, 3 Jun 2008 01:34:53 +0200 Subject: [PATCH] Make old sha1 optional with git update-ref -d MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Giving the old sha1 is already optional when changing a ref, and it's quite handy when running update-ref manually. So make it optional for deleting a ref too. Signed-off-by: Karl Hasselström Signed-off-by: Junio C Hamano --- Documentation/git-update-ref.txt | 2 +- builtin-update-ref.c | 6 +++--- t/t1400-update-ref.sh | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Documentation/git-update-ref.txt b/Documentation/git-update-ref.txt index 4dc475992..80b94c36d 100644 --- a/Documentation/git-update-ref.txt +++ b/Documentation/git-update-ref.txt @@ -7,7 +7,7 @@ git-update-ref - Update the object name stored in a ref safely SYNOPSIS -------- -'git-update-ref' [-m ] (-d | [--no-deref] []) +'git-update-ref' [-m ] (-d [] | [--no-deref] []) DESCRIPTION ----------- diff --git a/builtin-update-ref.c b/builtin-update-ref.c index 1e714a3c9..d90d11d2e 100644 --- a/builtin-update-ref.c +++ b/builtin-update-ref.c @@ -4,7 +4,7 @@ #include "parse-options.h" static const char * const git_update_ref_usage[] = { - "git-update-ref [options] -d ", + "git-update-ref [options] -d []", "git-update-ref [options] []", NULL }; @@ -28,7 +28,7 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix) die("Refusing to perform update with empty message."); if (delete) { - if (argc != 2) + if (argc < 1 || argc > 2) usage_with_options(git_update_ref_usage, options); refname = argv[0]; oldval = argv[1]; @@ -48,7 +48,7 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix) die("%s: not a valid old SHA1", oldval); if (delete) - return delete_ref(refname, oldsha1); + return delete_ref(refname, oldval ? oldsha1 : NULL); else return update_ref(msg, refname, sha1, oldval ? oldsha1 : NULL, no_deref ? REF_NODEREF : 0, DIE_ON_ERR); diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh index b8b7ab410..f387d46f1 100755 --- a/t/t1400-update-ref.sh +++ b/t/t1400-update-ref.sh @@ -42,6 +42,14 @@ test_expect_success "delete $m" ' ' rm -f .git/$m +test_expect_success "delete $m without oldvalue verification" " + git update-ref $m $A && + test $A = \$(cat .git/$m) && + git update-ref -d $m && + ! test -f .git/$m +" +rm -f .git/$m + test_expect_success \ "fail to create $n" \ "touch .git/$n_dir -- 2.30.2