git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Rebase semantic and cherry-pick

From
Junio C Hamano <junkio@cox.net>
Date
Mar 30, 2006, 03:40 UTC
Message-ID
<7vmzf84n2h.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.64.0603291852140.27203@g5.osdl.org>
Linus Torvalds <torvalds@osdl.org> writes:
> For consistency reasons, we should probably allow that to be written as 
> just "..branch", the same way we can write "branch.." to mean "everything 
> in HEAD but not in "branch".
Something like this, perhaps.

-- >8 -- revision arguments: ..B means HEAD..B, just like A.. means A..HEAD

For consistency reasons, we should probably allow that to be written as just "..branch", the same way we can write "branch.." to mean "everything in HEAD but not in "branch".

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
diff --git a/rev-parse.c b/rev-parse.c
index f176c56..e956cd5 100644
--- a/rev-parse.c
+++ b/rev-parse.c
@@ -315,16 +315,17 @@ int main(int argc, char **argv)
 		dotdot = strstr(arg, "..");
 		if (dotdot) {
 			unsigned char end[20];
-			char *n = dotdot+2;
+			char *next = dotdot + 2;
+			char *this = arg;
 			*dotdot = 0;
-			if (!get_sha1(arg, sha1)) {
-				if (!*n)
-					n = "HEAD";
-				if (!get_sha1(n, end)) {
-					show_rev(NORMAL, end, n);
-					show_rev(REVERSED, sha1, arg);
-					continue;
-				}
+			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);
+				continue;
 			}
 			*dotdot = '.';
 		}
diff --git a/revision.c b/revision.c
index 745b0d2..2cda7e0 100644
--- a/revision.c
+++ b/revision.c
@@ -642,14 +642,19 @@ int setup_revisions(int argc, const char
 		if (dotdot) {
 			unsigned char from_sha1[20];
 			char *next = dotdot + 2;
+			char *this = arg;
+			static const char HEAD[] = "HEAD";
 			*dotdot = 0;
 			if (!*next)
-				next = "HEAD";
-			if (!get_sha1(arg, from_sha1) && !get_sha1(next, sha1)) {
+				next = HEAD;
+			if (dotdot == arg)
+				this = HEAD;
+			if (!get_sha1(this, from_sha1) &&
+			    !get_sha1(next, sha1)) {
 				struct commit *exclude;
 				struct commit *include;
 
-				exclude = get_commit_reference(revs, arg, from_sha1, flags ^ UNINTERESTING);
+				exclude = get_commit_reference(revs, this, from_sha1, flags ^ UNINTERESTING);
 				include = get_commit_reference(revs, next, sha1, flags);
 				if (!exclude || !include)
 					die("Invalid revision range %s..%s", arg, next);
Previous: Linus TorvaldsNext: Junio C Hamano
Message 11 of 19 in “How to switch kernel customizations from 2.6.15.6 to 2.6.16?”
  1. Matt McCutchenMar 29, 2006
  2. Linus TorvaldsMar 29, 2006
  3. Junio C HamanoMar 29, 2006
  4. Junio C HamanoMar 29, 2006
  5. Linus TorvaldsMar 29, 2006
  6. Linus TorvaldsMar 29, 2006
  7. Junio C HamanoMar 29, 2006
  8. Jakub NarebskiMar 30, 2006
  9. Junio C HamanoMar 30, 2006
  10. Linus TorvaldsMar 30, 2006
  11. Junio C HamanoMar 30, 2006
  12. Junio C HamanoMar 30, 2006
  13. Shawn PearceMar 29, 2006
  14. Junio C HamanoMar 29, 2006
  15. Matt McCutchenMar 30, 2006
  16. Junio C HamanoMar 30, 2006
  17. Matt McCutchenMar 30, 2006
  18. Linus TorvaldsMar 30, 2006
  19. Matt McCutchenMar 30, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.