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

Reply via email to