git-cliff icon indicating copy to clipboard operation
git-cliff copied to clipboard

Relevant tags are missing when using --include-path

Open cjorge-graphops opened this issue 1 year ago • 4 comments

Describe the bug

When using --include-path, the first release tag goes missing. Also, if there is a tag that points to a commit that is filtered out by --include-path, then that tag no longer shows on the change log and the commits that do show, show as unreleased instead.

To reproduce

I'm running the following script to reproduce the issues:

#!/bin/bash

rm -Rf reproduce-repo
mkdir reproduce-repo
cd reproduce-repo
git init
mkdir included-path
touch included-path/{a,b,c}
git add included-path/a
git commit -m "feat: add a"
git tag release-v0.1.0
git add included-path/b
git commit -m "feat: add b"
git tag release-v0.2.0
git add included-path/c
git commit -m "feat: add c"
git tag release-v0.3.0
git-cliff -i
sed -i 's/tag_pattern = .*/tag_pattern = "release*"/g' cliff.toml
echo "######## WITHOUT INCLUDE PATH #############"
git-cliff -c cliff.toml
echo "######## WITH INCLUDE PATH, FIST TAG MISSING #############"
git-cliff -c cliff.toml --include-path "included-path/**"
mkdir other-path
touch other-path/d
git add other-path/d
git commit -m "feat: add d"
touch included-path/e
git add included-path/e
git commit -m "feat: add e"
touch other-path/f
git add other-path/f
git commit -m "feat: add f"
git tag release-v0.4.0
echo "######## WITH INCLUDE PATH, SHOWS AS UNRELEASED #############"
git-cliff -c cliff.toml --include-path "included-path/**"

Expected behavior

I expected that when using --include-path, all the first three releases would show on the change log and instead the first one is missing. I get this, which misses release-v0.1.0 tag:

Changelog

All notable changes to this project will be documented in this file.

[release-v0.3.0] - 2023-06-30

Features

  • Add c

[release-v0.2.0] - 2023-06-30

Features

  • Add b

Regarding release-v0.4.0, I would expect it to show on change log but the relevant commit shows as unreleased:

Changelog

All notable changes to this project will be documented in this file.

[unreleased]

Features

  • Add e

[release-v0.3.0] - 2023-06-30

Features

  • Add c

[release-v0.2.0] - 2023-06-30

Features

  • Add b

Software information

  • Operating system: Gentoo Linux, kernel 6.3.9
  • Rust version: rustc 1.69.0 (84c898d65 2023-04-16) (gentoo)
  • Project version: 1.2.0

cjorge-graphops avatar Jun 30 '23 23:06 cjorge-graphops

Thanks for opening your first issue at git-cliff! Be sure to follow the issue template! ⛰️

welcome[bot] avatar Jun 30 '23 23:06 welcome[bot]

I am seeing the same issue as @cjorge-graphops

calinah avatar Jul 03 '23 01:07 calinah

I had the same issue that the first (inital) commit would not show up when using --include-path. I could track the issue to https://github.com/orhun/git-cliff/blob/9dbf47bac596be7bacc335e8afa3cdc383dc8ebb/git-cliff-core/src/repo.rs#L79, where the parent commit is looked up. As the initial commit does not have a parent, the then-path is not followed and the commit is not included.

As diff_tree_to_tree allows to have one of the tree to be None, this could be given as old_tree.

lusor avatar Aug 01 '24 13:08 lusor