From: David Turner <dturner@xxxxxxxxxxx> Wire up get_sha1_with_context to call get_tree_entry_follow_symlinks when GET_SHA1_FOLLOW_SYMLINKS is passed in flags. G_S_FOLLOW_SYMLINKS is incompatible with G_S_ONLY_TO_DIE because the diagnosis that ONLY_TO_DIE triggers does not consider symlinks. Signed-off-by: David Turner <dturner@xxxxxxxxxxx> --- cache.h | 15 ++++++++------- sha1_name.c | 8 ++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cache.h b/cache.h index 3d3244b..16743de 100644 --- a/cache.h +++ b/cache.h @@ -924,13 +924,14 @@ struct object_context { unsigned mode; }; -#define GET_SHA1_QUIETLY 01 -#define GET_SHA1_COMMIT 02 -#define GET_SHA1_COMMITTISH 04 -#define GET_SHA1_TREE 010 -#define GET_SHA1_TREEISH 020 -#define GET_SHA1_BLOB 040 -#define GET_SHA1_ONLY_TO_DIE 04000 +#define GET_SHA1_QUIETLY 01 +#define GET_SHA1_COMMIT 02 +#define GET_SHA1_COMMITTISH 04 +#define GET_SHA1_TREE 010 +#define GET_SHA1_TREEISH 020 +#define GET_SHA1_BLOB 040 +#define GET_SHA1_FOLLOW_SYMLINKS 0100 +#define GET_SHA1_ONLY_TO_DIE 04000 extern int get_sha1(const char *str, unsigned char *sha1); extern int get_sha1_commit(const char *str, unsigned char *sha1); diff --git a/sha1_name.c b/sha1_name.c index 6d10f05..23863f7 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -1434,6 +1434,12 @@ static int get_sha1_with_context_1(const char *name, new_filename = resolve_relative_path(filename); if (new_filename) filename = new_filename; + if (flags & GET_SHA1_FOLLOW_SYMLINKS) { + ret = get_tree_enty_follow_symlinks(tree_sha1, + filename, sha1, oc->path, &oc->mode); + free(new_filename); + return ret; + } ret = get_tree_entry(tree_sha1, filename, sha1, &oc->mode); if (ret && only_to_die) { diagnose_invalid_sha1_path(prefix, filename, @@ -1469,5 +1475,7 @@ void maybe_die_on_misspelt_object_name(const char *name, const char *prefix) int get_sha1_with_context(const char *str, unsigned flags, unsigned char *sha1, struct object_context *orc) { + if (flags & GET_SHA1_FOLLOW_SYMLINKS && flags & GET_SHA1_ONLY_TO_DIE) + die(_("internal error: bad flags for get_sha1_with_context")); return get_sha1_with_context_1(str, flags, NULL, sha1, orc); } -- 2.0.4.315.gad8727a-twtrsrc -- 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