|
|
|
ref-format checking regression | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
|
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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Newbies FAQ] [Linux Kernel Development] [Free Online Dating] [Gcc Help] [IETF Annouce] [DCCP] [Netdev] [Networking] [Security] [V4L] [Bugtraq] [Free Online Dating] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Linux SCSI] [Fedora Users] [Linux Resources]