Re: 'git rev-list' commit ordering issue

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

 



On Wed, Feb 26, 2025 at 10:58 AM D. Ben Knoble <ben.knoble@xxxxxxxxx> wrote:
>
> On Tue, Feb 25, 2025 at 8:44 PM Clement Moyroud
> <clement.moyroud@xxxxxxxxx> wrote:
> >
> > Hello,
> >
> > I've come across an issue with `git rev-list --no-walk=sorted` commit
> > ordering when
> > two commits have the exact same commit date. In that case, `git rev-list` will
> > leave the two commits in the original order, preventing automated
> > cherry-picking.
> >
> > To reproduce starting from the attached repo archive created with `git
> > bugreport`:
> > git rev-list --reverse HEAD | git rev-list --no-walk=sorted --stdin
> >
> > You'll see that the order of the two middle commits is incorrect and
> > does not match
> > the order returned by `git rev-list HEAD`
> >
> > Since both commits have the same commit date, `git rev-list` should use another
> > criterion to do the sorting - namely, use the parent/child topology.
> >
> > If there are better ways to sort such a list, let me know. This is a much
> > simplified test case. In our real-world application, we start from a subset
> > of commits that we want to cherry-pick from a branch, for the purpose
> > of creating
> > a customer-specific patch build. For the automated cherry-pick to work, we need
> > to have these commits sorted in topological order. I do not see an option to
> > `git rev-list` that only sorts the commits in stdin topologically - the
> > `--no-walk` option only does date-based sorting.
>
> Is `--topo-order` of no help here?

Unfortunately no, because it'll look at the ancestors. I get more
commits (400k+ extra
commits in my real world case) than I have on stdin:
$ git log -1 --pretty=%H 2025.2 | git rev-list --stdin --topo-order --count
417776

--
Clement

>
> >
> > Below is the system info gathered by `git bugreport`.
> >
> > Take care,
> >
> > Clement
> >
> >
> > [System Info]
> > git version:
> > git version 2.48.1
> > cpu: x86_64
> > no commit associated with this build
> > sizeof-long: 8
> > sizeof-size_t: 8
> > shell-path: /bin/sh
> > libcurl: 7.87.0
> > OpenSSL: OpenSSL 1.0.1e-fips 11 Feb 2013
> > zlib: 1.2.3
> > uname: Linux 4.18.0-553.33.1.el8_10.x86_64 #1 SMP Thu Dec 19 14:28:01
> > UTC 2024 x86_64
> > compiler info: gnuc: 6.2
> > libc info: glibc: 2.28
> > $SHELL (typically, interactive shell): /bin/zsh
> >
> >
> > [Enabled Hooks]
>
>
>
> --
> D. Ben Knoble





[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