git-cliff
git-cliff copied to clipboard
Relevant tags are missing when using --include-path
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
Thanks for opening your first issue at git-cliff! Be sure to follow the issue template! ⛰️
I am seeing the same issue as @cjorge-graphops
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.