Thread (10 messages) flat view 10 messages, 4 authors, 2016-06-15
DORMANTno replies

[PATCH] don't use default revision if a rev was specified

From: Dave Olszewski <hidden>
Date: 2016-06-15 22:48:25
Subsystem: the rest · Maintainer: Linus Torvalds

If a revision is specified, it happens not to have any commits, don't
use the default revision.  By doing so, surprising and undesired
behavior can happen, such as showing the reflog for HEAD when a branch
was specified.

Signed-off-by: Dave Olszewski <redacted>
---
quoted
I was testing a patch along the lines of
what Vladimir proposed, which was simply to not set the default rev if a
valid user-specified argument was found, whether or not it contains
commits.
Sounds more like it.  How did the tests go?  Does it result in empty
output (which is what I would expect from an empty reflog, now that I
stopped and thought about it for a second)?
It seems to work ok(tm)

 revision.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/revision.c b/revision.c
index 29721ec..490b484 100644
--- a/revision.c
+++ b/revision.c
@@ -1334,7 +1334,7 @@ static void append_prune_data(const char ***prune_data, const char **av)
  */
 int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def)
 {
-	int i, flags, left, seen_dashdash, read_from_stdin;
+	int i, flags, left, seen_dashdash, read_from_stdin, got_rev_arg = 0;
 	const char **prune_data = NULL;
 
 	/* First, search for "--" */
@@ -1460,6 +1460,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
 			append_prune_data(&prune_data, argv + i);
 			break;
 		}
+		else
+			got_rev_arg = 1;
 	}
 
 	if (prune_data)
@@ -1469,7 +1471,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
 		revs->def = def;
 	if (revs->show_merge)
 		prepare_show_merge(revs);
-	if (revs->def && !revs->pending.nr) {
+	if (revs->def && !revs->pending.nr && !got_rev_arg) {
 		unsigned char sha1[20];
 		struct object *object;
 		unsigned mode;
-- 
1.7.0.2.202.g4e870.dirty
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help