This is a follow-on to the series in:
http://public-inbox.org/git/[email protected]/
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(-)