Again, this series is to make repository setup more predictable, i.e. must be done in either setup_git_dir*, enter_repo or init_db. Compared to the first version [1]: - More detail in commit messages, mostly extracted from [2] - Fix "git foo -h" code path (that skips repo setup) in patches 14-16 [1] http://mid.gmane.org/1268313754-28179-1-git-send-email-pclouds@xxxxxxxxx [2] http://mid.gmane.org/fcaeb9bf1003200110w721903e7v7a5823cb312cbc71@xxxxxxxxxxxxxx Nguyễn Thái Ngọc Duy (19): Move enter_repo() to setup.c enter_repo(): initialize other variables as setup_git_directory_gently() does rev-parse --git-dir: print relative gitdir correctly worktree setup: call set_git_dir explicitly Add git_config_early() Use git_config_early() instead of git_config() during repo setup worktree setup: restore original state when things go wrong init/clone: turn on startup->have_repository properly git_config(): do not read .git/config if there is no repository Do not read .git/info/exclude if there is no repository Do not read .git/info/attributes if there is no repository apply: do not check sha1 when repository has not been found config: do not read .git/config if there is no repository run_builtin(): save "-h" detection result for later use builtins: utilize startup_info->help where possible builtins: check for startup_info->help, print and exit early Allow to undo setup_git_directory_gently() gracefully (and fix alias code) alias: keep repository found while collecting aliases as long as possible Guard unallowed access to repository when it's not set up attr.c | 5 +- builtin/apply.c | 2 +- builtin/branch.c | 3 + builtin/check-ref-format.c | 2 +- builtin/checkout-index.c | 3 + builtin/clone.c | 3 +- builtin/commit.c | 6 ++ builtin/config.c | 9 ++- builtin/gc.c | 3 + builtin/grep.c | 2 +- builtin/index-pack.c | 2 +- builtin/init-db.c | 10 ++- builtin/log.c | 7 +- builtin/ls-files.c | 3 + builtin/merge-ours.c | 2 +- builtin/merge.c | 3 + builtin/pack-redundant.c | 2 +- builtin/rev-parse.c | 8 ++ builtin/show-ref.c | 2 +- builtin/update-index.c | 3 + builtin/upload-archive.c | 7 +- cache.h | 7 ++- config.c | 22 ++++- dir.c | 8 +- environment.c | 33 +++++++- git.c | 33 +++++--- path.c | 91 --------------------- setup.c | 191 +++++++++++++++++++++++++++++++++++++++++--- t/t1300-repo-config.sh | 14 +++ t/t1302-repo-version.sh | 2 +- t/t7002-grep.sh | 24 ++++++ 31 files changed, 360 insertions(+), 152 deletions(-) -- 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