Re: [PATCH v4 2/3] sha1_name: get_sha1_with_context learns to follow symlinks
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:04:43
dturner@twopensource.com writes:
quoted hunk
From: David Turner <redacted> 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 at present consider symlinks, and it would be a significant amount of additional code to allow it to do so. Signed-off-by: David Turner <redacted> --- cache.h | 20 +++++++++++++------- sha1_name.c | 20 +++++++++++++++----- 2 files changed, 28 insertions(+), 12 deletions(-)diff --git a/cache.h b/cache.h index 3d3244b..65505d1 100644 --- a/cache.h +++ b/cache.h@@ -922,15 +922,21 @@ struct object_context { unsigned char tree[20]; char path[PATH_MAX]; unsigned mode; + /* + * symlink_path is only used by get_tree_entry_follow_symlinks, + * and only for symlinks that point outside the repository. + */ + struct strbuf symlink_path; };...@@ -1469,5 +1477,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("BUG: incompatible flags for get_sha1_with_context"); return get_sha1_with_context_1(str, flags, NULL, sha1, orc); }
Looks good; thanks.