git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[WIP PATCH 00/26] Git setup cleanup series

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Feb 16, 2010, 16:04 UTC
Message-ID
<1266336317-607-1-git-send-email-pclouds@gmail.com>

This is the result of my "Remove .git auto detection from setup_git_env()" patch [1]. Basically I make git behave differently (and correctly) when GIT_HARDENED_SETUP=1 to smooth out the migration from the current messy setup to a less messy setup. Eventually GIT_HARDENED_SETUP should be enabled by default and the obsolete code removed, but we're far away from that.

Summary of changes:
 - startup_info struct is added to help move up setup_git_directory_gently()
   to run_builtin(), which reduces lots of headache.
 - GIT_HARDENED_SETUP=1 will make git die() whenever setup_git_env() is called
   from anywhere but setup_git_dir*. It also creates lots of segfault because
   get_git_dir() and friends now can return NULL.
 - gitattr, gitexcludes will not access repository if there is no repository
 - enter_repo() will use setup_git_dir* to do the setup
 - because non-builtin commands do not have startup_info, they will behave
   just like before. I'll need to look at them.

Tests are lacking. But you can just try "GIT_HARDENED_SETUP=1 make test" after 04/26, then again at the end of the series to see the difference. It'd be great if people see new failing tests. I'm not sure I have caught them all.

[1] http://mid.gmane.org/1265370468-6147-1-git-send-email-pclouds@gmail.com
Nguyễn Thái Ngọc Duy (26):
  rev-parse --git-dir: print relative gitdir correctly
  setup_git_directory*: Explicitly set git dir
  Save setup_git_dir* info globally for later use
  Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors
  enter_repo(): use setup_git_directory_gently internally
  Tweak init/clone to work properly with GIT_HARDENED_SETUP=1
  Support running setup_git_dir_gently() from the beginning for builtin commands
  config: move up gitdir setup to run_builtin()
  hash-object: move gitdir setup to run_builtin()
  shortlog: move up gitdir setup to run_builtin()
  Do not look for .git/info/exclude when gitdir is not set up
  grep: move up gitdir setup to run_builtin()
  USE_PAGER should not be used without RUN_SETUP*
  Do not try to read $GIT_DIR/info/attributes if there is no repository
  archive: move up gitdir setup to run_builtin()
  mailinfo: move up gitdir setup to run_builtin()
  check-ref-format: setup gitdir gently
  verify-pack: set up gitdir gently
  apply: move up gitdir setup to run_builtin()
  bundle: move up gitdir setup to run_builtin()
  diff: move up gitdir setup to run_builtin()
  help: move up gitdir setup to run_builtin()
  ls-remote: move up gitdir setup to run_builtin()
  var: move up gitdir setup to run_builtin()
  merge-file: move up gitdir setup to run_builtin()
  Turn on GIT_HARDENED_SETUP for the whole test suite
 attr.c                  |    5 ++-
 builtin-apply.c         |   13 +++----
 builtin-archive.c       |    2 +-
 builtin-bundle.c        |    6 +--
 builtin-config.c        |   12 +++---
 builtin-diff.c          |    6 +--
 builtin-grep.c          |    9 ++---
 builtin-hash-object.c   |    9 +++--
 builtin-help.c          |    2 -
 builtin-init-db.c       |    4 ++
 builtin-ls-remote.c     |    3 --
 builtin-mailinfo.c      |    3 --
 builtin-merge-file.c    |    4 +--
 builtin-rev-parse.c     |    8 ++++
 builtin-shortlog.c      |    4 +--
 builtin-var.c           |    2 -
 cache.h                 |    8 ++++
 config.c                |   17 ++++++---
 dir.c                   |    8 +++--
 environment.c           |   43 +++++++++++++++++-----
 git.c                   |   88 +++++++++++++++++++++++++++++++----------------
 path.c                  |    8 ++---
 setup.c                 |   48 ++++++++++++++++++++------
 t/t0024-crlf-archive.sh |    1 +
 t/t1302-repo-version.sh |    2 +-
 t/test-lib.sh           |    3 ++
 26 files changed, 204 insertions(+), 114 deletions(-)
Next: Nguyễn Thái Ngọc Duy
Message 1 of 27 in “Git setup cleanup series”
  1. 00/26 Git setup cleanup seriesNguyễn Thái Ngọc Duy, Feb 16, 2010
  2. 01/26 rev-parse --git-dir: print relative gitdir correctlyNguyễn Thái Ngọc Duy, Feb 16, 2010
  3. 02/26 setup_git_directory*: Explicitly set git dirNguyễn Thái Ngọc Duy, Feb 16, 2010
  4. 03/26 Save setup_git_dir* info globally for later useNguyễn Thái Ngọc Duy, Feb 16, 2010
  5. 04/26 Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errorsNguyễn Thái Ngọc Duy, Feb 16, 2010
  6. 05/26 enter_repo(): use setup_git_directory_gently internallyNguyễn Thái Ngọc Duy, Feb 16, 2010
  7. 06/26 Tweak init/clone to work properly with GIT_HARDENED_SETUP=1Nguyễn Thái Ngọc Duy, Feb 16, 2010
  8. 07/26 Support running setup_git_dir_gently() from the beginning for builtin commandsNguyễn Thái Ngọc Duy, Feb 16, 2010
  9. 08/26 config: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  10. 09/26 hash-object: move gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  11. 10/26 shortlog: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  12. 11/26 Do not look for .git/info/exclude when gitdir is not set upNguyễn Thái Ngọc Duy, Feb 16, 2010
  13. 12/26 grep: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  14. 13/26 USE_PAGER should not be used without RUN_SETUP*Nguyễn Thái Ngọc Duy, Feb 16, 2010
  15. 14/26 Do not try to read $GIT_DIR/info/attributes if there is no repositoryNguyễn Thái Ngọc Duy, Feb 16, 2010
  16. 15/26 archive: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  17. 16/26 mailinfo: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  18. 17/26 check-ref-format: setup gitdir gentlyNguyễn Thái Ngọc Duy, Feb 16, 2010
  19. 18/26 verify-pack: set up gitdir gentlyNguyễn Thái Ngọc Duy, Feb 16, 2010
  20. 19/26 apply: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  21. 20/26 bundle: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  22. 21/26 diff: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  23. 22/26 help: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  24. 23/26 ls-remote: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  25. 24/26 var: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  26. 25/26 merge-file: move up gitdir setup to run_builtin()Nguyễn Thái Ngọc Duy, Feb 16, 2010
  27. 26/26 Turn on GIT_HARDENED_SETUP for the whole test suiteNguyễn Thái Ngọc Duy, Feb 16, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.