On Fri, Mar 7, 2014 at 9:48 PM, Nguyễn Thái Ngọc Duy 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
> ---
> 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 majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html