Code

Merge branch 'jn/test-sanitize-git-env'
authorJunio C Hamano <gitster@pobox.com>
Wed, 23 Mar 2011 04:38:12 +0000 (21:38 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 Mar 2011 04:38:12 +0000 (21:38 -0700)
* jn/test-sanitize-git-env:
  tests: scrub environment of GIT_* variables
  config: drop support for GIT_CONFIG_NOGLOBAL
  gitattributes: drop support for GIT_ATTR_NOGLOBAL
  tests: suppress system gitattributes
  tests: stop worrying about obsolete environment variables

1  2 
cache.h
config.c
t/test-lib.sh

diff --combined cache.h
index be6ce7237d4c2d8a6d708629985c3c058c236563,a8ef37a6903ee9768fc12df345fd47af5107723f..872bc9be11d8236673a96ea7ba9c9b77b72034b0
+++ b/cache.h
@@@ -5,7 -5,6 +5,7 @@@
  #include "strbuf.h"
  #include "hash.h"
  #include "advice.h"
 +#include "gettext.h"
  
  #include SHA1_HEADER
  #ifndef git_SHA_CTX
@@@ -504,13 -503,13 +504,13 @@@ extern int ie_modified(const struct ind
  struct pathspec {
        const char **raw; /* get_pathspec() result, not freed by free_pathspec() */
        int nr;
 -      int has_wildcard:1;
 -      int recursive:1;
 +      unsigned int has_wildcard:1;
 +      unsigned int recursive:1;
        int max_depth;
        struct pathspec_item {
                const char *match;
                int len;
 -              int has_wildcard:1;
 +              unsigned int has_wildcard:1;
        } *items;
  };
  
@@@ -586,7 -585,7 +586,7 @@@ extern enum safe_crlf safe_crlf
  enum auto_crlf {
        AUTO_CRLF_FALSE = 0,
        AUTO_CRLF_TRUE = 1,
 -      AUTO_CRLF_INPUT = -1,
 +      AUTO_CRLF_INPUT = -1
  };
  
  extern enum auto_crlf auto_crlf;
@@@ -732,9 -731,9 +732,9 @@@ static inline int is_absolute_path(cons
        return path[0] == '/' || has_dos_drive_prefix(path);
  }
  int is_directory(const char *);
 -const char *make_absolute_path(const char *path);
 -const char *make_nonrelative_path(const char *path);
 -const char *make_relative_path(const char *abs, const char *base);
 +const char *real_path(const char *path);
 +const char *absolute_path(const char *path);
 +const char *relative_path(const char *abs, const char *base);
  int normalize_path_copy(char *dst, const char *src);
  int longest_ancestor_length(const char *path, const char *prefix_list);
  char *strip_path_suffix(const char *path, const char *suffix);
@@@ -914,8 -913,7 +914,8 @@@ extern struct packed_git 
        time_t mtime;
        int pack_fd;
        unsigned pack_local:1,
 -               pack_keep:1;
 +               pack_keep:1,
 +               do_not_close:1;
        unsigned char sha1[20];
        /* something like ".git/objects/pack/xxxxx.pack" */
        char pack_name[FLEX_ARRAY]; /* more */
@@@ -1022,7 -1020,6 +1022,6 @@@ extern const char *git_etc_gitconfig(vo
  extern int check_repository_format_version(const char *var, const char *value, void *cb);
  extern int git_env_bool(const char *, int);
  extern int git_config_system(void);
- extern int git_config_global(void);
  extern int config_error_nonbool(const char *);
  extern const char *get_log_output_encoding(void);
  extern const char *get_commit_output_encoding(void);
@@@ -1084,14 -1081,9 +1083,14 @@@ extern void alloc_report(void)
  /* trace.c */
  __attribute__((format (printf, 1, 2)))
  extern void trace_printf(const char *format, ...);
 +extern void trace_vprintf(const char *key, const char *format, va_list ap);
  __attribute__((format (printf, 2, 3)))
  extern void trace_argv_printf(const char **argv, const char *format, ...);
  extern void trace_repo_setup(const char *prefix);
 +extern int trace_want(const char *key);
 +extern void trace_strbuf(const char *key, const struct strbuf *buf);
 +
 +void packet_trace_identity(const char *prog);
  
  /* convert.c */
  /* returns 1 if *dst was used */
diff --combined config.c
index fa740a6a60a49512b613f70add97d445f622afd2,217a77ddaf43c8eca6d7d4aea06a5ac091880f76..e28197a3f64cb8672f8aeef26cc0402c7c22548d
+++ b/config.c
@@@ -20,7 -20,8 +20,7 @@@ static int zlib_compression_seen
  
  const char *config_exclusive_filename = NULL;
  
 -struct config_item
 -{
 +struct config_item {
        struct config_item *next;
        char *name;
        char *value;
@@@ -825,11 -826,6 +825,6 @@@ int git_config_system(void
        return !git_env_bool("GIT_CONFIG_NOSYSTEM", 0);
  }
  
- int git_config_global(void)
- {
-       return !git_env_bool("GIT_CONFIG_NOGLOBAL", 0);
- }
  int git_config_from_parameters(config_fn_t fn, void *data)
  {
        static int loaded_environment;
@@@ -861,7 -857,7 +856,7 @@@ int git_config_early(config_fn_t fn, vo
        }
  
        home = getenv("HOME");
-       if (git_config_global() && home) {
+       if (home) {
                char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
                if (!access(user_config, R_OK)) {
                        ret += git_config_from_file(fn, user_config, data);
diff --combined t/test-lib.sh
index f4c1e04e4f26ca38b57fc6c47b05cf92111107b6,8aac727fb22eedc7ae57c0db94f1b3405df0de57..7cc9a52cbf78358e545f27cd5b7f69ac2030ecbf
@@@ -43,36 -43,16 +43,16 @@@ TERM=dum
  export LANG LC_ALL PAGER TERM TZ
  EDITOR=:
  unset VISUAL
- unset GIT_EDITOR
- unset AUTHOR_DATE
- unset AUTHOR_EMAIL
- unset AUTHOR_NAME
- unset COMMIT_AUTHOR_EMAIL
- unset COMMIT_AUTHOR_NAME
  unset EMAIL
- unset GIT_ALTERNATE_OBJECT_DIRECTORIES
- unset GIT_AUTHOR_DATE
+ unset $(perl -e '
+       my @env = keys %ENV;
+       my @vars = grep(/^GIT_/ && !/^GIT_(TRACE|DEBUG|USE_LOOKUP)/, @env);
+       print join("\n", @vars);
+ ')
  GIT_AUTHOR_EMAIL=author@example.com
  GIT_AUTHOR_NAME='A U Thor'
- unset GIT_COMMITTER_DATE
  GIT_COMMITTER_EMAIL=committer@example.com
  GIT_COMMITTER_NAME='C O Mitter'
- unset GIT_DIFF_OPTS
- unset GIT_DIR
- unset GIT_WORK_TREE
- unset GIT_EXTERNAL_DIFF
- unset GIT_INDEX_FILE
- unset GIT_OBJECT_DIRECTORY
- unset GIT_CEILING_DIRECTORIES
- unset SHA1_FILE_DIRECTORIES
- unset SHA1_FILE_DIRECTORY
- unset GIT_NOTES_REF
- unset GIT_NOTES_DISPLAY_REF
- unset GIT_NOTES_REWRITE_REF
- unset GIT_NOTES_REWRITE_MODE
- unset GIT_REFLOG_ACTION
- unset GIT_CHERRY_PICK_HELP
- unset GIT_QUIET
  GIT_MERGE_VERBOSITY=5
  export GIT_MERGE_VERBOSITY
  export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
@@@ -954,8 -934,8 +934,8 @@@ f
  GIT_TEMPLATE_DIR="$GIT_BUILD_DIR"/templates/blt
  unset GIT_CONFIG
  GIT_CONFIG_NOSYSTEM=1
- GIT_CONFIG_NOGLOBAL=1
- export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
+ GIT_ATTR_NOSYSTEM=1
+ export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_ATTR_NOSYSTEM
  
  . "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
  
  test -z "$NO_PERL" && test_set_prereq PERL
  test -z "$NO_PYTHON" && test_set_prereq PYTHON
  
 +# Can we rely on git's output in the C locale?
 +if test -n "$GETTEXT_POISON"
 +then
 +      GIT_GETTEXT_POISON=YesPlease
 +      export GIT_GETTEXT_POISON
 +else
 +      test_set_prereq C_LOCALE_OUTPUT
 +fi
 +
  # test whether the filesystem supports symbolic links
  ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
  rm -f y