Hi,
I discovered an interesting problem when using `git checkout` to which I
couldn't find a good solution. We have an automatic system trying to checkout a
branch only when it exists. To do so we check whether `git rev-parse` finds a
commit for given branch name:
git rev-parse "${BRANCH_NAME}" || git rev-parse
"refs/remotes/${UPSTREAM}/${BRANCH_NAME}"
Unfortunately somebody used the branch name "add-gcc10" and `git rev-parse`
which didn't exist on one repository. However `git rev-parse`
also supports to parse the `git-describe` format which resulted in checkout a
commit starting with "cc10".
We saw a similar problem with disambiguation of tag and branch-name. If there
any possibility to enforce that `git checkout` and other commands such `git
rev-parse` handle a revision as a specific type (branch, tag, commit-id). Is
there something like
`git checkout name@{branch}` or `git checkout name@{tag}` similar to other
rev-parse format such as `branch@{upstream}`.
Best Regards
Heiko Böttger