On Fri, Mar 7, 2014 at 9:48 PM, Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> wrote: > In linked checkouts, borrowed parts like config is taken from > $GIT_COMMON_DIR. $GIT_DIR/config is never used. Report them as > garbage. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- > diff --git a/path.c b/path.c > index ddb5962..5a7dc45 100644 > --- a/path.c > +++ b/path.c > @@ -4,6 +4,7 @@ > #include "cache.h" > #include "strbuf.h" > #include "string-list.h" > +#include "dir.h" > > static int get_st_mode_bits(const char *path, int *mode) > { > @@ -91,9 +92,9 @@ static void replace_dir(struct strbuf *buf, int len, const char *newdir) > } Do you want to add a comment here explaining what the "!" prefix on some entries means, or is it sufficiently self-evident to anyone looking at the consumers of this array? > static const char *common_list[] = { > - "/branches", "/hooks", "/info", "/logs", "/lost-found", "/modules", > + "/branches", "/hooks", "/info", "!/logs", "/lost-found", "/modules", > "/objects", "/refs", "/remotes", "/repos", "/rr-cache", "/svn", > - "config", "gc.pid", "packed-refs", "shallow", > + "config", "!gc.pid", "packed-refs", "shallow", > NULL > }; > > @@ -107,6 +108,8 @@ static void update_common_dir(struct strbuf *buf, int git_dir_len) > for (p = common_list; *p; p++) { > const char *path = *p; > int is_dir = 0; > + if (*path == '!') > + path++; > if (*path == '/') { > path++; > is_dir = 1; > @@ -122,6 +125,28 @@ static void update_common_dir(struct strbuf *buf, int git_dir_len) > } > } > > +void report_linked_checkout_garbage(void) > +{ > + struct strbuf sb = STRBUF_INIT; > + const char **p; > + int len; > + > + if (!git_common_dir_env) > + return; > + strbuf_addf(&sb, "%s/", get_git_dir()); > + len = sb.len; > + for (p = common_list; *p; p++) { > + const char *path = *p; > + if (*path == '!') > + continue; > + strbuf_setlen(&sb, len); > + strbuf_addstr(&sb, path); > + if (file_exists(sb.buf)) > + report_garbage("unused in linked checkout", sb.buf); > + } > + strbuf_release(&sb); > +} > + > static void adjust_git_path(struct strbuf *buf, int git_dir_len) > { > const char *base = buf->buf + git_dir_len; > -- > 1.9.0.40.gaa8c3ea -- 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