Re: Specifying revisions in the future
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Feb 5, 2012, 02:44 UTC
- Message-ID
- <m3ipjmknhc.fsf@localhost.localdomain>
- In-Reply-To
- <jgjkk0$qrg$1@dough.gmane.org>
jpaugh@gmx.us writes:
> Hello.
Show 8 quoted lines
> I want to do a certain arbitrary operation for each revision between > where I am now and the tip of the branch. > > v1.0-a master > \ \ > o---o---o---o---o---o---o > | > I am here
That is the problem X.
> Is it possible to specify revisions in the future? The gitrevisions man > page implies otherwise. Alternatively, is there a way to find out the > number of commits between two revs---assuming one is an ancestor of the > other?
That is your idea of a solution, Y.
You have XY problem. You need to do X, and you think you can use Y to do X, so you ask about how to do Y.
If you want to list all revsions between v1.0-a and master, use
git rev-list v1.0a..master
or
git rev-list --ancestry-path v1.0a..master
depending on definition of _between_ (see "History simplification" in git-log(1) manpage for description of `--ancestry-path` option).
Show 21 quoted lines
>
> I've been using the following to do what I want:
>
> ref=master; \
> for i in {5..1}; do \
> echo; \
> git log --stat $ref~$i^\!; \
> read -p 'Full diff? '; \
> echo; \
> if [[ $REPLY == 'y' ]]; then \
> git diff $ref~$i^\!; \
> fi; \
> done;
>
> which lists the log and diffstat for last 5 commits between master and
> where I am (e.g. an older tag/branch) with an optional full diff. I know
> implementing revision specifiers to the future is nontrivial. (I
> realized that when I considered non-linear histories.) In this case,
> I've distilled it to the point that all I need is the number of commits
> between two revs. Can this be had without manually inspecting git log?
> Or, is there a better way to get detailed diffs like this?-- Jakub Narebski