mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
tree-walk: learn get_tree_entry_follow_symlinks
Add a new function, get_tree_entry_follow_symlinks, to tree-walk.[ch]. The function is not yet used. It will be used to implement git cat-file --batch --follow-symlinks. The function locates an object by path, following symlinks in the repository. If the symlinks lead outside the repository, the function reports this to the caller. Signed-off-by: David Turner <dturner@twopensource.com> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
8440f74997
commit
275721c267
18
tree-walk.h
18
tree-walk.h
@@ -40,6 +40,24 @@ struct traverse_info;
|
||||
typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *);
|
||||
int traverse_trees(int n, struct tree_desc *t, struct traverse_info *info);
|
||||
|
||||
enum follow_symlinks_result {
|
||||
FOUND = 0, /* This includes out-of-tree links */
|
||||
MISSING_OBJECT = -1, /* The initial symlink is missing */
|
||||
DANGLING_SYMLINK = -2, /*
|
||||
* The initial symlink is there, but
|
||||
* (transitively) points to a missing
|
||||
* in-tree file
|
||||
*/
|
||||
SYMLINK_LOOP = -3,
|
||||
NOT_DIR = -4, /*
|
||||
* Somewhere along the symlink chain, a path is
|
||||
* requested which contains a file as a
|
||||
* non-final element.
|
||||
*/
|
||||
};
|
||||
|
||||
enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_sha1, const char *name, unsigned char *result, struct strbuf *result_path, unsigned *mode);
|
||||
|
||||
struct traverse_info {
|
||||
struct traverse_info *prev;
|
||||
struct name_entry name;
|
||||
|
||||
Reference in New Issue
Block a user