From: Karl Hasselström Date: Sun, 25 May 2008 16:14:41 GMT Subject: [PATCH 3/3] Make old sha1 optional with git update-ref -d Message-ID: <20080525161440.25087.83011.stgit@yoghurt> In-Reply-To: <20080525161125.25087.18083.stgit@yoghurt> 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 --- Documentation/git-update-ref.txt | 2 +- builtin-update-ref.c | 8 ++++---- t/t1400-update-ref.sh | 8 ++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Documentation/git-update-ref.txt b/Documentation/git-update-ref.txt index 4dc4759..80b94c3 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 0d3eb8e..054e64d 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,11 +28,11 @@ 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]; value = NULL; - oldval = argv[1]; + oldval = argc > 1 ? argv[1] : NULL; } else { if (argc < 2 || argc > 3) usage_with_options(git_update_ref_usage, options); @@ -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 b88e767..da82645 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