Re: Splitting a rev list into 2 sets
- From
Phil Hord <phil.hord@gmail.com>
- Date
- Jun 20, 2013, 13:04 UTC
- Message-ID
- <CABURp0r+rzRqHv9vMX3Nsxn_p2R7zf8AsY=_Cg98xWRWn+7bkg@mail.gmail.com>
- In-Reply-To
- <CAC9WiBi-E+LN4hKGeu0mG7ihJWCaTg-W1Dx_PWmX_vsx-uLOaw@mail.gmail.com>
On Thu, Jun 20, 2013 at 6:14 AM, Francis Moreau <francis.moro@gmail.com> wrote:
Show 22 quoted lines
> I'd like to write a script that would parse commits in one of my repo. > Ideally this script should accept any revision ranges that > git-rev-list would accept. > > This script should consider commits in master differently than the > ones in others branches. > > To get the commit set which can't be reached by master (ie commits > which are specific to branches other than master) I would do: > > # "$@" is the range spec passed to the script > git rev-list "$@" ^master | check_other_commit > > But I don't know if it's possible to use a different git-rev-list > command to get the rest of the commits, ie the ones that are reachable > by the specified range and master. > > One way to do that is to record the first commit set got by the first > rev-list command and check that the ones returned by "git rev-list $@" > are not in the record. > > But I'm wondering if someone can see another solution more elegant ?
I do not know if I would call this elegant, but I think this codification of your "One way to do that" is at least small and mostly readable:
git rev-list "$@" |grep -v -f <(git rev-list "$@" ^master)
Phil