This came out of a previous thread[1], where I wanted to be able to run something like git log --oneline --ancestry-path=ab/submodule-cleanup main..seen and see the commits in main..seen which contained ab/submodule-cleanup in their ancestry path. Let me start by defining the terminology "X is in a commit's ancestry path". By that, I just mean that either the commit is X, the commit is an ancestor of X, or the commit is a descendant of X. With that definition... The command git log --ancestry-path A..B means find the commits in A..B which contain A in their ancestry path. I sometimes still want to use A..B to get the basic range, but would like to use a commit other than A for specifying which ancestry path is of interest. So, for example, I might want to use git log --ancestry-path=C A..B to mean find the commits in A..B which contain C in their ancestry path, or use git log --ancestry-path=C --ancestry-path=D A..B to mean find the commits in A..B which contain either C or D in their ancestry path. This series implements this request, by allowing --ancestry-path to take an optional argument. With it, I can find the answer to my question in the thread at [1] within the git.git repository (replacing branch names with actual hashes since the branches have since moved on): $ git log --oneline --ancestry-path=5b893f7d81 8168d5e9c2..ac0248bfba | wc -l 36 This returns the answer I want, whereas dropping the '=5b893f7d81' from the command line gives me 192 unwanted commits (228 total), and various other command line flags (--first-parent, --boundary, etc.) also fail to give me the set of commits I am looking for. [1] https://lore.kernel.org/git/CABPp-BF+8aqysioP_e27Q9kJ02rE2SuSqXu+XphzKWnk5a_Q+A@xxxxxxxxxxxxxx/ Elijah Newren (2): rev-list-options.txt: fix simple typo revision: allow --ancestry-path to take an argument Documentation/rev-list-options.txt | 47 +++++++++++++---- object.h | 2 +- revision.c | 83 ++++++++++++++++++++---------- revision.h | 3 ++ t/t6019-rev-list-ancestry-path.sh | 47 ++++++++++++++++- 5 files changed, 140 insertions(+), 42 deletions(-) base-commit: 6a475b71f8c4ce708d69fdc9317aefbde3769e25 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1303%2Fnewren%2Fancestry-path-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1303/newren/ancestry-path-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1303 -- gitgitgadget