Re: using rev-list to tell if a branch is behind or ahead
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- May 20, 2008, 20:24 UTC
- Message-ID
- <20080520202438.GG29038@spearce.org>
- In-Reply-To
- <3703BF54-3619-432F-8B65-09AF17299CAD@gmail.com>
Tim Harper <timcharper@gmail.com> wrote:
Show 6 quoted lines
> 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... */
...
Show 7 quoted lines
> 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 ("..").
Show 18 quoted lines
> 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.