git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH v3] tag: display original sha1 of deleted/overwritten tag

From
ZFZoltán Füzesi <zfuzesi@eaglet.hu>
Date
Dec 10, 2009, 14:09 UTC
Message-ID
<9ab80d150912100609m29bf4862yc7b1abd680c96c54@mail.gmail.com>
In-Reply-To
<1260453537-6156-1-git-send-email-zfuzesi@eaglet.hu>
Forget v2 and v3, v1 is the good one. Sorry.
2009/12/10 Zoltán Füzesi <zfuzesi@eaglet.hu>:
Show 57 quoted lines
> It makes possible to undo accidental tag deletion and overwriting.
>
> Signed-off-by: Zoltán Füzesi <zfuzesi@eaglet.hu>
> ---
> This patch was created in response to this feature request:
> http://article.gmane.org/gmane.comp.version-control.git/135016
> I named it "RFC" because of the overwriting part.
>
> v3: works when tag object is created (I should slow down...)
>
>  builtin-tag.c |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/builtin-tag.c b/builtin-tag.c
> index c479018..1404a0e 100644
> --- a/builtin-tag.c
> +++ b/builtin-tag.c
> @@ -140,7 +140,7 @@ static int delete_tag(const char *name, const char *ref,
>  {
>        if (delete_ref(ref, sha1, 0))
>                return 1;
> -       printf("Deleted tag '%s'\n", name);
> +       printf("Deleted tag '%s' %s\n", name, sha1_to_hex(sha1));
>        return 0;
>  }
>
> @@ -363,7 +363,7 @@ static int parse_msg_arg(const struct option *opt, const char *arg, int unset)
>  int cmd_tag(int argc, const char **argv, const char *prefix)
>  {
>        struct strbuf buf = STRBUF_INIT;
> -       unsigned char object[20], prev[20];
> +       unsigned char object[20], prev[20], tag_object[20];
>        char ref[PATH_MAX];
>        const char *object_ref, *tag;
>        struct ref_lock *lock;
> @@ -472,13 +472,15 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
>
>        if (annotate)
>                create_tag(object, tag, &buf, msg.given || msgfile,
> -                          sign, prev, object);
> +                          sign, prev, tag_object);
>
>        lock = lock_any_ref_for_update(ref, prev, 0);
>        if (!lock)
>                die("%s: cannot lock the ref", ref);
> -       if (write_ref_sha1(lock, object, NULL) < 0)
> +       if (write_ref_sha1(lock, annotate ? tag_object : object, NULL) < 0)
>                die("%s: cannot update the ref", ref);
> +       else if (force && hashcmp(object, prev))
> +               printf("Overwritten tag '%s' (%s)\n", ref, sha1_to_hex(prev));
>
>        strbuf_release(&buf);
>        return 0;
> --
> 1.6.6.rc2
>
>
Previous: Zoltán Füzesi
Message 4 of 4 in “tag: display original sha1 of deleted/overwritten tag”
  1. tag: display original sha1 of deleted/overwritten tagZoltán Füzesi, Dec 10, 2009
  2. tag: display original sha1 of deleted/overwritten tagZoltán Füzesi, Dec 10, 2009
  3. tag: display original sha1 of deleted/overwritten tagZoltán Füzesi, Dec 10, 2009
  4. Zoltán FüzesiDec 10, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.