Re: using rev-list to tell if a branch is behind or ahead

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On May 20, 2008, at 2:24 PM, Shawn O. Pearce wrote:
Tim Harper <timcharper@xxxxxxxxx> wrote:
I'm implementing a ruby interface to git and am wanting to be able to
ask if a branch is ahead or behind.

I looked in the builtin-checkout.c file and see this code:

/* Run "rev-list --left-right ours...theirs" internally... */
...
It looks like it's calling rev-parse.  But, when I call it with the
same arguments (using branches or commit sha1's), it only will list
commits that are in right and not in left.  I need it to show both
ways: commits that are in the right and not in left, and commits that
are in the left but not in right.

Do I need to call rev-parse twice to achieve this?

No.  You need to use the triple dot operator ("...") not the
double dot operator ("..").


Ugh... figured it was something simple. Funny thing is, when I was looking at the c code:
strcpy(symmetric, sha1_to_hex(ours->object.sha1));
strcpy(symmetric + 40, "...");
strcpy(symmetric + 43, sha1_to_hex(theirs->object.sha1));

I was like "I wonder why the 3rd line is +43, and not +42".



Here's a sample of what I'm trying currently:
~ $ mkdir test
~ $ cd test/
~/test $ git init
Initialized empty Git repository in .git/
~/test $ git
~/test $ echo content > file.txt
~/test $ git add file.txt && git commit -m "Initial commit"
Created initial commit f5e4160: Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file.txt
~/test master$ git co -b task
Switched to a new branch "task"
~/test task$ echo changes >> file.txt
~/test task$ git add file.txt && git commit -m "Some changes"
Created commit 96492ee: Some changes
1 files changed, 1 insertions(+), 0 deletions(-)
~/test task$ git rev-list --left-right task..master --

You need an extra "." between task and master, this should be:

git rev-list --left-right task...master --

~/test task$ git rev-list --left-right master..task --
96492ee80143f43417b00699ff29330d0027df7f

--
Shawn.

That did it, thanks

Tim

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux