From: Jeff King <peff@peff.net>
To: Michael Haggerty <mhagger@alum.mit.edu>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: ref-format checking regression
Date: Fri, 27 Apr 2012 07:50:01 -0400 [thread overview]
Message-ID: <20120427115000.GA8126@sigill.intra.peff.net> (raw)
I upgraded git on a machine recently, and it created problems for a repo
with a bogus character in a ref name. Older versions of git never
complained about it. Newer ones, containing your dce4bab ("add_ref():
verify that the refname is formatted correctly") do. That's fine; it's
bogus and git _should_ complain about it.
However, recovering from the situation is unnecessarily hard, as basic
things like fsck stop working, you can't access the ref via rev-parse,
etc. You can reproduce with something like this (in some repo with
actual commits):
$ evil=$(printf 'foo\177bar')
$ git rev-parse HEAD >".git/refs/tags/$evil"
$ git fsck
fatal: Reference has invalid format: 'refs/tags/foo^?bar'
[does not even warn about the real reason for the error]
$ git rev-parse --verify "$evil"
fatal: Needed a single revision
[does not let you find broken refs]
$ git for-each-ref
fatal: Reference has invalid format: 'refs/tags/foo^?bar'
$ git tag -l
fatal: Reference has invalid format: 'refs/tags/foo^?bar'
[no way to rename or delete the bogus tag]
$ git tag fixed "$evil"
fatal: Failed to resolve 'foo^?bar' as a valid ref.
I seem to recall discussing this format-tightening and trying to be sure
that users were left with a way forward for fixing their repos. But I
can't find the discussion, and I don't recall any conclusion we came to.
So maybe we decided not to worry about it. But I thought I'd mention it
as a data point.
-Peff
next reply other threads:[~2012-04-27 11:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-27 11:50 Jeff King [this message]
2012-04-27 12:57 ` ref-format checking regression Ævar Arnfjörð Bjarmason
2012-04-27 15:06 ` Junio C Hamano
2012-04-27 15:25 ` Junio C Hamano
2012-04-28 9:24 ` Jeff King
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=20120427115000.GA8126@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).