From: Jonathan Nieder Date: Tue, 15 Jul 2014 18:04:24 GMT Subject: Re: [PATCH v20 43/48] refs.c: move the check for valid refname to lock_ref_sha1_basic Message-ID: <20140715180424.GJ12427@google.com> In-Reply-To: <53BC07FC.8080601@alum.mit.edu> Michael Haggerty wrote: > So...I like the idea of enforcing refname checks at the lowest level > possible, but I think that the change you propose is too abrupt. I > think it needs either more careful analysis showing that it won't hurt > anybody, or some kind of tooling or non-strict mode that people can use > to fix their repositories. The recovery code has been broken for a while, so I don't see harm in this change. How to take care of the recovery use case is another question. FWIW I also would prefer if "git update-ref -d" or "git branch -D" could be used to delete corrupt refs instead of having to use fsck (since a fsck run can take a while), but that's a question for a later series. In an ideal world, the low-level functions would allow *reading* and *deleting* poorly named refs (even without any special flag) but not creating them. Is that doable? The main complication I can see is iteration: would iteration skip poorly named refs and warn, or would something more complicated be needed? Thanks, Jonathan