cz check range sometimes failed in GitLab CI
Description
Runcz check --range origin/master..HEAD to check commits in CI occasionally fails.
And it worked after I retried the job.But sometimes it didn't work after retrying multiple times.
I couldn't find out the reason ,
Steps to reproduce
lint: retry: 1 script: - cz version - cz check --rev-range origin/master..HEAD
Current behavior
cz check --rev-range origin/master..HEAD failed. Outputs attached below:
fatal: ambiguous argument 'master..HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Desired behavior
cz check --rev-range can run successfully in gitlab CI.
Screenshots

Environment
commitizen version: 2.34.0 python version: 3.7.5 operating system: Linux
Is it possible that the git repo doesn't setup remote 🤔
I run command git remote -v in the CI , and it shows that the remote has been setup.

Hmmm... As I'm not able to reproduce it, I don't have any clue on how we could fix it. But we can keep it open till you or someone encounter this issue again with more detail
Actually,this issue has come up again.
And when I merged the branch into master,it said that there is no commit found range origin/master..HEAD.
Do you mean after merging back to the master branch? If that's the case, your HEAD will on on master so the result seem to be expected.
Do you mean after merging back to the master branch? If that's the case, your
HEADwill on onmasterso the result seem to be expected.
yes. Or can it skip check when there's no commit rather than make the job failed?
@SsuperL Please try cz --no-raise 3 check --rev-range master... it's output the message with a zero return code
https://commitizen-tools.github.io/commitizen/bump/#easy-way
cz --no-raise 3 check --rev-range master..
I'll try it.Thank you!
@SsuperL did you try to git fetch before your command ? its seems GitLab CI dont fetch every branch
@SsuperL did you try to
git fetchbefore your command ? its seems GitLab CI dont fetch every branch No, but it only appeared on some machines. And the commandgit branch -rshows branchorigin/masterexists.

do you have remote origin and branch master?
do you have remote
originand branchmaster?
yes.
What would be the output of git log origin/master..? Can it generate output as expected?
What would be the output of
git log origin/master..? Can it generate output as expected?
Oh,it didn't show anything of git log origin/master. Maybe there's no git fetch on some CI machines. I try git fetch origin and it works. Thanks for your help!
@SsuperL One of the stuff I can think of is shallow clone. Maybe you could take a look at this direction as well :)
@SsuperL One of the stuff I can think of is shallow clone. Maybe you could take a look at this direction as well :)
Okay, I'll check it out.
Hi, I am having the same issue outside of CI. When I git push with the pre-push pre-commit hook, I get the following:
fatal: ambiguous argument 'origin/HEAD..HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Whereas if I skip the verification everything works fine.
Unfortunately the repo is private and I can't share the url, but the configs are:
default_install_hook_types:
- pre-commit
- pre-push
default_language_version:
python: python3.9
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: v2.42.1
hooks:
- id: commitizen-branch
stages: [ push ]
And the hook (which should not matter) is:
#!/usr/bin/env bash
# File generated by pre-commit: https://pre-commit.com
# ID: 138fd403232d2ddd5efb44317e38bf03
# start templated
INSTALL_PYTHON=/Users/lucabaggi/.local/share/pipx/venvs/pre-commit/bin/python
ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=pre-push)
# end templated
HERE="$(cd "$(dirname "$0")" && pwd)"
ARGS+=(--hook-dir "$HERE" -- "$@")
if [ -x "$INSTALL_PYTHON" ]; then
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}"
elif command -v pre-commit > /dev/null; then
exec pre-commit "${ARGS[@]}"
else
echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2
exit 1
fi
Hi, I am having the same issue outside of CI. When I
git pushwith thepre-pushpre-commit hook, I get the following:fatal: ambiguous argument 'origin/HEAD..HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'Whereas if I skip the verification everything works fine.
Unfortunately the repo is private and I can't share the url, but the configs are:
default_install_hook_types: - pre-commit - pre-push default_language_version: python: python3.9 repos: - repo: https://github.com/commitizen-tools/commitizen rev: v2.42.1 hooks: - id: commitizen-branch stages: [ push ]And the hook (which should not matter) is:
#!/usr/bin/env bash # File generated by pre-commit: https://pre-commit.com # ID: 138fd403232d2ddd5efb44317e38bf03 # start templated INSTALL_PYTHON=/Users/lucabaggi/.local/share/pipx/venvs/pre-commit/bin/python ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=pre-push) # end templated HERE="$(cd "$(dirname "$0")" && pwd)" ARGS+=(--hook-dir "$HERE" -- "$@") if [ -x "$INSTALL_PYTHON" ]; then exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" elif command -v pre-commit > /dev/null; then exec pre-commit "${ARGS[@]}" else echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2 exit 1 fi
Have you tried git fetch ? That works for me.
Have you tried git fetch ? That works for me.
Does not for me... Perhaps it can mess up if I have git push --force previously?
Hello, if I run cz check --rev-range origin/main..HEAD it works. I noticed that the pre-commit hook has --rev-range origin/HEAD..HEAD which is an invalid ref. Perhaps when the repo has multiple branches the reference becomes invalid? Will try to make a reprex soon.
The following fixed it for me:
git remote set-head origin -a
Eventually found a semi-good explanation at: https://learnku.com/articles/71493
(My issue is actually when I'm trying to run git push with the pre-push hook enabled, which then gives a similar error on ambiguity.)