This function will be used when implementing traversal into submodules. Signed-off-by: Lars Hjemli <hjemli@xxxxxxxxx> --- On Sun, Jan 18, 2009 at 16:32, Johannes Schindelin <Johannes.Schindelin@xxxxxx> wrote: > > On Sun, 18 Jan 2009, Lars Hjemli wrote: >> +int add_alt_odb(const char *path) >> +{ >> + return link_alt_odb_entry(path, strlen(path), NULL, 0); > > This function can return the error message "object directory %s does not > exist; check .git/objects/info/alternates." Maybe you want to change > that, even if the user you are introducing might not hit that code path. Something like this, maybe? cache.h | 1 + sha1_file.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cache.h b/cache.h index 8e1af26..0dbe2a6 100644 --- a/cache.h +++ b/cache.h @@ -724,6 +724,7 @@ extern struct alternate_object_database { char base[FLEX_ARRAY]; /* more */ } *alt_odb_list; extern void prepare_alt_odb(void); +extern int add_alt_odb(const char *path, int quiet); extern void add_to_alternates_file(const char *reference); typedef int alt_odb_fn(struct alternate_object_database *, void *); extern void foreach_alt_odb(alt_odb_fn, void*); diff --git a/sha1_file.c b/sha1_file.c index f08493f..4b7e691 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -252,7 +252,8 @@ static void read_info_alternates(const char * alternates, int depth); * SHA1, an extra slash for the first level indirection, and the * terminating NUL. */ -static int link_alt_odb_entry(const char * entry, int len, const char * relative_base, int depth) +static int link_alt_odb_entry(const char * entry, int len, + const char * relative_base, int depth, int quiet) { const char *objdir = get_object_directory(); struct alternate_object_database *ent; @@ -285,9 +286,10 @@ static int link_alt_odb_entry(const char * entry, int len, const char * relative /* Detect cases where alternate disappeared */ if (!is_directory(ent->base)) { - error("object directory %s does not exist; " - "check .git/objects/info/alternates.", - ent->base); + if (!quiet) + error("object directory %s does not exist; " + "check .git/objects/info/alternates.", + ent->base); free(ent); return -1; } @@ -347,7 +349,7 @@ static void link_alt_odb_entries(const char *alt, const char *ep, int sep, relative_base, last); } else { link_alt_odb_entry(last, cp - last, - relative_base, depth); + relative_base, depth, 0); } } while (cp < ep && *cp == sep) @@ -356,6 +358,11 @@ static void link_alt_odb_entries(const char *alt, const char *ep, int sep, } } +int add_alt_odb(const char *path, int quiet) +{ + return link_alt_odb_entry(path, strlen(path), NULL, 0, quiet); +} + static void read_info_alternates(const char * relative_base, int depth) { char *map; -- 1.6.1.150.g5e733b -- 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