#include "strbuf.h"
#include "hash.h"
#include "advice.h"
+#include "gettext.h"
#include SHA1_HEADER
#ifndef git_SHA_CTX
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;
};
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;
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);
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 */
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);
/* 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 */
const char *config_exclusive_filename = NULL;
-struct config_item
-{
+struct config_item {
struct config_item *next;
char *name;
char *value;
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;
}
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);
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
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