From d3bee161fef7820e83b44b899c531228a5546e87 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Sun, 25 Jan 2009 01:52:05 +0100 Subject: tree.c: allow read_tree_recursive() to traverse gitlink entries When the callback function invoked from read_tree_recursive() returns the value `READ_TREE_RECURSIVE` for a gitlink entry, the traversal will now continue into the tree connected to the gitlinked commit. This functionality can be used to allow inter-repository operations, but since the current users of read_tree_recursive() does not yet support such operations, they have been modified where necessary to make sure that they never return READ_TREE_RECURSIVE for gitlink entries (hence no change in behaviour should be introduces by this patch alone). Signed-off-by: Lars Hjemli Signed-off-by: Junio C Hamano --- archive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'archive.c') diff --git a/archive.c b/archive.c index 9ac455d889..e6de0397cc 100644 --- a/archive.c +++ b/archive.c @@ -132,7 +132,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base, err = write_entry(args, sha1, path.buf, path.len, mode, NULL, 0); if (err) return err; - return READ_TREE_RECURSIVE; + return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0); } buffer = sha1_file_to_archive(path_without_prefix, sha1, mode, -- cgit v1.2.1