[PATCH] Teach rev-parse the ... syntax.

Subsystems: the rest

DORMANTno replies

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] Teach rev-parse the ... syntax.

From: Santi Béjar <hidden>
Date: 2016-06-15 22:42:32

Signed-off-by: Santi Béjar <redacted>
---

 I think this time the mail patch is OK, I've tested it.

 builtin-rev-parse.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c
index 5f5ade4..8d2beb2 100644
--- a/builtin-rev-parse.c
+++ b/builtin-rev-parse.c
@@ -331,14 +331,29 @@ int cmd_rev_parse(int argc, const char *
 			unsigned char end[20];
 			const char *next = dotdot + 2;
 			const char *this = arg;
+			int symmetric = *next == '.';
+
 			*dotdot = 0;
+			next += symmetric;
+
 			if (!*next)
 				next = "HEAD";
 			if (dotdot == arg)
 				this = "HEAD";
 			if (!get_sha1(this, sha1) && !get_sha1(next, end)) {
 				show_rev(NORMAL, end, next);
-				show_rev(REVERSED, sha1, this);
+				show_rev(symmetric?NORMAL:REVERSED, sha1, this);
+				if (symmetric) {
+				  struct commit *a, *b;
+				  a = lookup_commit_reference(sha1);
+				  b = lookup_commit_reference(end);
+				  struct commit_list *exclude = get_merge_bases(a, b,1);
+				  while (exclude) {
+				    show_rev(REVERSED,
+					     exclude->item->object.sha1,NULL);
+				    exclude = exclude->next;
+				  }
+				}
 				continue;
 			}
 			*dotdot = '.';
-- 
1.4.1.ge6c0-dirty

Re: [PATCH] Teach rev-parse the ... syntax.

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:32

Hi,

On Tue, 4 Jul 2006, Santi Béjar wrote:
+				  struct commit_list *exclude = get_merge_bases(a, b,1);
You never free_commit_list() exclude.

Side thought: we do not really support multiple ranges, do we? E.g.

	git-rev-list HEAD~10..HEAD~8 HEAD^..

would not yield the intended result, right? (And same goes for ... ranges) 
Maybe we should at least warn about that.

Ciao,
Dscho

Re: [PATCH] Teach rev-parse the ... syntax.

From: Santi <hidden>
Date: 2016-06-15 22:42:32

2006/7/4, Johannes Schindelin [off-list ref]:
Hi,

On Tue, 4 Jul 2006, Santi Béjar wrote:
quoted
+                               struct commit_list *exclude = get_merge_bases(a, b,1);
You never free_commit_list() exclude.
Ups! But thanks to Junio it is already there :)

Santi
-- 
Looking for signature...
Looking for signature...done
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help