From: "Theodore Ts'o" <tytso@mit.edu>
To: Chris Packham <judge.packham@gmail.com>
Cc: GIT <git@vger.kernel.org>
Subject: Re: Testing for existence of a remote branch from a script
Date: Mon, 6 Jan 2025 10:05:49 -0500 [thread overview]
Message-ID: <20250106150549.GE1284777@mit.edu> (raw)
In-Reply-To: <CAFOYHZDQs-mftqLQn5HiFgBWcFN6Z-WDscJt=zVLRyGTo36=HQ@mail.gmail.com>
On Mon, Jan 06, 2025 at 05:40:36PM +1300, Chris Packham wrote:
> I look after some scripts we use at $dayjob for pushing changes though
> our review system.
> ..
> Is there a better way of checking for the existence of a remote branch?
In gce-xfstests[1] I do this via "git ls-remote":
validate_branch_name()
{
if test -z "$GIT_REPO"
then
echo "GIT_REPO is neither found in the config file nor provided with --repo"
exit 1
fi
if [[ "$GIT_REPO" != *".git" ]]; then
GIT_REPO="$GIT_REPO.git"
fi
if ! git ls-remote "$GIT_REPO" > /dev/null; then
echo -e "Repo not found: $GIT_REPO\n"
exit 1
elif ! git ls-remote --heads --exit-code "$GIT_REPO" $1 > /dev/null; then
echo -e "$1 is not a valid branch of $GIT_REPO"
exit 1
fi
}
See run-fstests/util/parse_cli[2] for this function, and a related
function, validate_commit_name if you also want to accept git tags.
(The validate_commit_name function isn't perfect, since I don't want
to fetch the full git repo to validate a SHA hash specifier, but it's
good enough to validate typo'ed tag or branch names.)
[1] https://thunk.org/gce-xfstests
[2] https://github.com/tytso/xfstests-bld/blob/master/run-fstests/util/parse_cli
Cheers,
- Ted
prev parent reply other threads:[~2025-01-06 15:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-06 4:40 Testing for existence of a remote branch from a script Chris Packham
2025-01-06 6:51 ` Torsten Bögershausen
2025-01-06 15:30 ` Junio C Hamano
2025-01-06 16:36 ` Theodore Ts'o
2025-01-06 18:44 ` Junio C Hamano
2025-01-06 20:50 ` Chris Packham
2025-01-06 15:05 ` Theodore Ts'o [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250106150549.GE1284777@mit.edu \
--to=tytso@mit.edu \
--cc=git@vger.kernel.org \
--cc=judge.packham@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.