[PATCH 0/7] stop blind fallback to ".git"
- From
Jeff King <peff@peff.net>
- Date
- Oct 20, 2016, 06:15 UTC
- Message-ID
- <20161020061536.6fqh23xb2nhxodpa@sigill.intra.peff.net>
This is a follow-on to the series in:
http://public-inbox.org/git/20160913032242.coyuhyhn6uklewuk@sigill.intra.peff.net/
That series avoided looking at ".git/config" when we haven't discovered whether we are in a git repo. This takes that further and avoids ever looking at ".git" as a fallback.
Patches 1-6 just teach various low-level code to detect and handle the case when we are not in a configure repository (along with associated cleanups). The final patch actually disallows this case (and the early fixes were found by running the test suite with just the final patch).
I think this is a step in the right direction, both in fixing bugs, but also in making our setup and repository-access code easier to reason about. However, it does carry a risk of regression, if there are more "fixes" that I missed. If we wanted to be really conservative, we could hold back the 7th patch as a separate topic and cook it in "next" for an extra release cycle or something. I'm not all that worried, though.
I built this on top of jc/diff-unique-abbrev-comments, as it refactors that same function (and it didn't seem like a bad topic to be held hostage by).
[1/7]: read info/{attributes,exclude} only when in repository
[2/7]: test-*-cache-tree: setup git dir
[3/7]: find_unique_abbrev: use 4-buffer ring
[4/7]: diff_unique_abbrev: rename to diff_aligned_abbrev
[5/7]: diff_aligned_abbrev: use "struct oid"
[6/7]: diff: handle sha1 abbreviations outside of repository
[7/7]: setup_git_env: avoid blind fall-back to ".git"attr.c | 6 +++++- builtin/merge.c | 11 +++++----- builtin/receive-pack.c | 16 ++++++--------- cache.h | 4 ++-- combine-diff.c | 6 +++--- diff.c | 43 +++++++++++++++++++++++++--------------- diff.h | 6 +++++- dir.c | 12 +++++------ environment.c | 5 ++++- sha1_name.c | 4 +++- t/helper/test-dump-cache-tree.c | 1 + t/helper/test-scrap-cache-tree.c | 1 + 12 files changed, 68 insertions(+), 47 deletions(-)