From: cornelius.weig@tngtech.com
To: git@vger.kernel.org
Cc: peff@peff.net, novalis@novalis.org, pclouds@gmail.com,
Cornelius Weig <cornelius.weig@tngtech.com>
Subject: [PATCH] tag: add tag.createReflog option
Date: Wed, 25 Jan 2017 01:19:06 +0100 [thread overview]
Message-ID: <20170125001906.13916-1-cornelius.weig@tngtech.com> (raw)
From: Cornelius Weig <cornelius.weig@tngtech.com>
Git does not create a history for tags, in contrast to common
expectation to simply version everything. This can be changed by using
the `--create-reflog` flag when creating the tag. However, a config
option to enable this behavior by default is missing.
This commit adds the configuration variable `tag.createReflog` which
enables reflogs for new tags by default.
Signed-off-by: Cornelius Weig <cornelius.weig@tngtech.com>
---
Documentation/config.txt | 5 +++++
Documentation/git-tag.txt | 8 +++++---
builtin/tag.c | 6 +++++-
t/t7004-tag.sh | 14 ++++++++++++++
4 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index af2ae4c..9e5f6f6 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2945,6 +2945,11 @@ submodule.alternateErrorStrategy
as computed via `submodule.alternateLocation`. Possible values are
`ignore`, `info`, `die`. Default is `die`.
+tag.createReflog::
+ A boolean to specify whether newly created tags should have a reflog.
+ If `--[no-]create-reflog` is specified on the command line, it takes
+ precedence. Defaults to `false`.
+
tag.forceSignAnnotated::
A boolean to specify whether annotated tags created should be GPG signed.
If `--annotate` is specified on the command line, it takes
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 5055a96..f2ed370 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -13,7 +13,7 @@ SYNOPSIS
<tagname> [<commit> | <object>]
'git tag' -d <tagname>...
'git tag' [-n[<num>]] -l [--contains <commit>] [--points-at <object>]
- [--column[=<options>] | --no-column] [--create-reflog] [--sort=<key>]
+ [--column[=<options>] | --no-column] [--[no-]create-reflog] [--sort=<key>]
[--format=<format>] [--[no-]merged [<commit>]] [<pattern>...]
'git tag' -v <tagname>...
@@ -149,8 +149,10 @@ This option is only applicable when listing tags without annotation lines.
all, 'whitespace' removes just leading/trailing whitespace lines and
'strip' removes both whitespace and commentary.
---create-reflog::
- Create a reflog for the tag.
+--[no-]create-reflog::
+ Force to create a reflog for the tag, or no reflog if `--no-create-reflog`
+ is used. Unless the `tag.createReflog` config variable is set to true, no
+ reflog is created by default. See linkgit:git-config[1].
<tagname>::
The name of the tag to create, delete, or describe.
diff --git a/builtin/tag.c b/builtin/tag.c
index 73df728..1f13e4d 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -30,6 +30,7 @@ static const char * const git_tag_usage[] = {
static unsigned int colopts;
static int force_sign_annotate;
+static int create_reflog;
static int list_tags(struct ref_filter *filter, struct ref_sorting *sorting, const char *format)
{
@@ -165,6 +166,10 @@ static int git_tag_config(const char *var, const char *value, void *cb)
force_sign_annotate = git_config_bool(var, value);
return 0;
}
+ if (!strcmp(var, "tag.createreflog")) {
+ create_reflog = git_config_bool(var, value);
+ return 0;
+ }
if (starts_with(var, "column."))
return git_column_config(var, value, "tag", &colopts);
@@ -325,7 +330,6 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
const char *object_ref, *tag;
struct create_tag_options opt;
char *cleanup_arg = NULL;
- int create_reflog = 0;
int annotate = 0, force = 0;
int cmdmode = 0, create_tag_object = 0;
const char *msgfile = NULL, *keyid = NULL;
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index 1cfa8a2..67b39ec 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -90,6 +90,20 @@ test_expect_success '--create-reflog does not create reflog on failure' '
test_must_fail git reflog exists refs/tags/mytag
'
+test_expect_success 'option tag.createreflog creates reflog by default' '
+ test_when_finished "git tag -d tag_with_reflog" &&
+ git config tag.createReflog true &&
+ git tag tag_with_reflog &&
+ git reflog exists refs/tags/tag_with_reflog
+'
+
+test_expect_success 'option tag.createreflog overridden by command line' '
+ test_when_finished "git tag -d tag_without_reflog" &&
+ git config tag.createReflog true &&
+ git tag --no-create-reflog tag_without_reflog &&
+ test_must_fail git reflog exists refs/tags/tag_without_reflog
+'
+
test_expect_success 'listing all tags if one exists should succeed' '
git tag -l &&
git tag
--
2.10.2
next reply other threads:[~2017-01-25 0:19 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-25 0:19 cornelius.weig [this message]
2017-01-25 5:06 ` [PATCH] tag: add tag.createReflog option Pranit Bauva
2017-01-25 18:00 ` Jeff King
2017-01-25 18:10 ` Junio C Hamano
2017-01-25 21:21 ` Cornelius Weig
2017-01-25 21:33 ` Jeff King
2017-01-25 21:43 ` Junio C Hamano
2017-01-25 22:56 ` Junio C Hamano
2017-01-25 23:40 ` Cornelius Weig
2017-01-26 1:16 ` [PATCH] refs: add option core.logAllRefUpdates = always cornelius.weig
2017-01-26 1:16 ` cornelius.weig
2017-01-26 3:35 ` Jeff King
2017-01-26 14:06 ` Cornelius Weig
2017-01-26 14:46 ` Jeff King
2017-01-26 22:31 ` [PATCH v2 1/3] config: add markup to core.logAllRefUpdates doc cornelius.weig
2017-01-26 22:31 ` [PATCH v2 2/3] refs: add option core.logAllRefUpdates = always cornelius.weig
2017-01-26 23:39 ` Junio C Hamano
2017-01-26 22:31 ` [PATCH v2 3/3] update-ref: add test cases for bare repository cornelius.weig
2017-01-26 23:41 ` Junio C Hamano
2017-01-26 23:24 ` [PATCH v2 1/3] config: add markup to core.logAllRefUpdates doc Junio C Hamano
2017-01-27 10:09 ` [PATCH v3 " cornelius.weig
2017-01-27 10:09 ` [PATCH v3 2/3] refs: add option core.logAllRefUpdates = always cornelius.weig
2017-01-30 21:58 ` Junio C Hamano
2017-01-30 22:57 ` Junio C Hamano
2017-01-31 13:16 ` Cornelius Weig
2017-01-31 17:11 ` Junio C Hamano
2017-01-30 23:37 ` Jeff King
2017-01-31 14:00 ` Cornelius Weig
2017-01-31 18:21 ` Jeff King
2017-01-31 17:08 ` Junio C Hamano
2017-01-31 20:28 ` Cornelius Weig
2017-01-31 22:02 ` Junio C Hamano
2017-01-27 10:09 ` [PATCH v3 3/3] update-ref: add test cases for bare repository cornelius.weig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170125001906.13916-1-cornelius.weig@tngtech.com \
--to=cornelius.weig@tngtech.com \
--cc=git@vger.kernel.org \
--cc=novalis@novalis.org \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).