Re: How to get the branch HEAD points to using a plumbing command?
From: Junio C Hamano <hidden>
Date: 2021-01-05 22:56:12
Utku [off-list ref] writes:
My question is, is there a "better" (more idiomatic, less "expensive", etc.) way of doing it using only one plumbing command? This solution is OK but it is more work than just matching one line with a regular expression. The reason I want to do this using only plumbing commands is because I think that plumbing command interface would be more stable than the format (organization, structure) of files under the `.git/` directory across Git versions. Please correct me if I'm wrong in this idea as well.
The "HEAD" pointer can be a symbolic link, not a text file with "ref: refs/heads/..." in it, and any approach that works directly with "cat .git/HEAD" would be incorrect, unless it does a stat on .git/HEAD first to see if it is a symlink. And such implementation details can change over time. So you are right to seek a solution that hides such details from you, i.e. a Git command, to do so. It does not have to be plumbing, though. The orthodox answer would be to use "git symbolic-ref". When you want to learn which underlying ref a symbolic ref is pointing at, that is the tool designed to answer that question.