From: "Jan Krüger" <jk@jk.gs>
To: Johannes Sixt <j.sixt@viscovery.net>
Cc: Git ML <git@vger.kernel.org>, Junio C Hamano <gitster@pobox.com>,
Sverre Rabbelier <srabbelier@gmail.com>
Subject: [PATCH] read-tree: deprecate syntax without tree-ish args
Date: Fri, 10 Sep 2010 15:28:59 +0200 [thread overview]
Message-ID: <20100910152859.778636d4@jk.gs> (raw)
In-Reply-To: <4C8A168F.1030502@viscovery.net>
Currently, read-tree can be run without tree-ish arguments, in which
case it will empty the index. Since this behavior is undocumented and
perhaps a bit too invasive to be the "default" action for read-tree,
deprecate it in favor of a new --empty option that does the same thing.
Signed-off-by: Jan Krüger <jk@jk.gs>
---
On Fri, 10 Sep 2010 13:29:19 +0200, Johannes Sixt wrote:
> See
>
> http://thread.gmane.org/gmane.comp.version-control.git/135280/focus=135407
>
> and the discussion that ensued; perhaps intersting is
>
> http://thread.gmane.org/gmane.comp.version-control.git/135280/focus=135462
>
> (where Junio suggest to make this a warning for now).
Thanks for the pointer. I don't really agree that undocumented
behaviour (that has never even been sighted in the wild, no less) needs
to be protected quite this much, but then again I would be much less
visibly responsible for the consequences than Junio, wouldn't I? :)
This patch effectively combines Sverre's and Junio's suggestions from
the old discussion; it deprecates the current behavior with a warning
message and also introduces --empty as a replacement. [Cc'ing both]
The alternative would be to simply match up the documentation with the
way read-tree currently works. I prefer my approach due to the
reasoning in the commit message.
Documentation/git-read-tree.txt | 6 +++++-
builtin/read-tree.c | 10 +++++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 2e78da4..e88e9c2 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -11,7 +11,7 @@ SYNOPSIS
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
[-u [--exclude-per-directory=<gitignore>] | -i]]
[--index-output=<file>] [--no-sparse-checkout]
- <tree-ish1> [<tree-ish2> [<tree-ish3>]]
+ (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])
DESCRIPTION
@@ -114,6 +114,10 @@ OPTIONS
Disable sparse checkout support even if `core.sparseCheckout`
is true.
+--empty::
+ Instead of reading tree object(s) into the index, just empty
+ it.
+
<tree-ish#>::
The id of the tree object(s) to be read/merged.
diff --git a/builtin/read-tree.c b/builtin/read-tree.c
index 9ad1e66..eb1e3e7 100644
--- a/builtin/read-tree.c
+++ b/builtin/read-tree.c
@@ -16,6 +16,7 @@
#include "resolve-undo.h"
static int nr_trees;
+static int read_empty;
static struct tree *trees[MAX_UNPACK_TREES];
static int list_tree(unsigned char *sha1)
@@ -32,7 +33,7 @@ static int list_tree(unsigned char *sha1)
}
static const char * const read_tree_usage[] = {
- "git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-output=<file>] <tree-ish1> [<tree-ish2> [<tree-ish3>]]",
+ "git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])",
NULL
};
@@ -106,6 +107,8 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
{ OPTION_CALLBACK, 0, "index-output", NULL, "FILE",
"write resulting index to <FILE>",
PARSE_OPT_NONEG, index_output_cb },
+ OPT_SET_INT(0, "empty", &read_empty,
+ "only empty the index", 1),
OPT__VERBOSE(&opts.verbose_update),
OPT_GROUP("Merging"),
OPT_SET_INT('m', NULL, &opts.merge,
@@ -166,6 +169,11 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
die("failed to unpack tree object %s", arg);
stage++;
}
+ if (nr_trees == 0 && !read_empty)
+ warning("read-tree: emptying the index with no arguments is deprecated; use --empty");
+ else if (nr_trees > 0 && read_empty)
+ die("passing trees as arguments contradicts --empty");
+
if (1 < opts.index_only + opts.update)
die("-u and -i at the same time makes no sense");
if ((opts.update||opts.index_only) && !opts.merge)
--
1.7.2.3.392.g02377.dirty
next prev parent reply other threads:[~2010-09-10 13:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-10 10:06 [PATCH] read-tree: abort if no trees are given Jan Krüger
2010-09-10 11:29 ` Johannes Sixt
2010-09-10 13:28 ` Jan Krüger [this message]
2010-09-10 13:53 ` [PATCH] read-tree: deprecate syntax without tree-ish args Sverre Rabbelier
2010-09-10 15:36 ` Junio C Hamano
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=20100910152859.778636d4@jk.gs \
--to=jk@jk.gs \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j.sixt@viscovery.net \
--cc=srabbelier@gmail.com \
/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).