This file contains the narrow prefix. With get_narrow_prefix() being non-empty behavior of git may be totally different. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- Makefile | 2 ++ cache.h | 3 +++ environment.c | 2 ++ narrow-tree.c | 31 +++++++++++++++++++++++++++++++ narrow-tree.h | 1 + 5 files changed, 39 insertions(+), 0 deletions(-) create mode 100644 narrow-tree.c create mode 100644 narrow-tree.h diff --git a/Makefile b/Makefile index 1f11618..54c435e 100644 --- a/Makefile +++ b/Makefile @@ -525,6 +525,7 @@ LIB_H += sigchain.h LIB_H += strbuf.h LIB_H += string-list.h LIB_H += submodule.h +LIB_H += narrow-tree.h LIB_H += tag.h LIB_H += transport.h LIB_H += tree.h @@ -629,6 +630,7 @@ LIB_OBJS += sigchain.o LIB_OBJS += strbuf.o LIB_OBJS += string-list.o LIB_OBJS += submodule.o +LIB_OBJS += narrow-tree.o LIB_OBJS += symlinks.o LIB_OBJS += tag.o LIB_OBJS += trace.o diff --git a/cache.h b/cache.h index 37ef9d8..ff401ec 100644 --- a/cache.h +++ b/cache.h @@ -1101,4 +1101,7 @@ int split_cmdline(char *cmdline, const char ***argv); /* builtin/merge.c */ int checkout_fast_forward(const unsigned char *from, const unsigned char *to); +/* narrow-tree.c */ +extern const char *get_narrow_prefix(); + #endif /* CACHE_H */ diff --git a/environment.c b/environment.c index 83d38d3..41fcbd4 100644 --- a/environment.c +++ b/environment.c @@ -8,6 +8,7 @@ * are. */ #include "cache.h" +#include "narrow-tree.h" char git_default_email[MAX_GITNAME]; char git_default_name[MAX_GITNAME]; @@ -105,6 +106,7 @@ static void setup_git_env(void) git_graft_file = git_pathdup("info/grafts"); if (getenv(NO_REPLACE_OBJECTS_ENVIRONMENT)) read_replace_refs = 0; + check_narrow_prefix(); } int is_bare_repository(void) diff --git a/narrow-tree.c b/narrow-tree.c new file mode 100644 index 0000000..46e913d --- /dev/null +++ b/narrow-tree.c @@ -0,0 +1,31 @@ +#include "cache.h" +#include "narrow-tree.h" + +static const char *narrow_prefix; + +int check_narrow_prefix() +{ + int fd; + static char buf[PATH_MAX]; + int ret; + + fd = open(git_path("narrow"), O_RDONLY); + if (fd == -1) + return 0; + + ret = read(fd, buf, PATH_MAX); + if (ret > 0) { + /* $GIT_DIR/narrow is not meant for manual editing, anyway.. */ + while (ret && buf[ret-1] == '\n') + ret--; + buf[ret] = '\0'; + narrow_prefix = buf; + } + close(fd); + return 0; +} + +const char *get_narrow_prefix() +{ + return narrow_prefix; +} diff --git a/narrow-tree.h b/narrow-tree.h new file mode 100644 index 0000000..aa8c94f --- /dev/null +++ b/narrow-tree.h @@ -0,0 +1 @@ +extern int check_narrow_prefix(); -- 1.7.1.rc1.69.g24c2f7 -- 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