Forget v2 and v3, v1 is the good one. Sorry. 2009/12/10 Zoltán Füzesi <zfuzesi@xxxxxxxxx>: > It makes possible to undo accidental tag deletion and overwriting. > > Signed-off-by: Zoltán Füzesi <zfuzesi@xxxxxxxxx> > --- > 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 > > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html