Merge branch 'jc/gitlink' into next

* jc/gitlink:
  write-tree: --prefix=<path>
  read-tree: --prefix=<path>/ option.
This commit is contained in:
Junio C Hamano
2006-05-07 16:17:43 -07:00
7 changed files with 140 additions and 12 deletions

View File

@ -529,3 +529,29 @@ struct cache_tree *cache_tree_read(const char *buffer, unsigned long size)
return NULL; /* not the whole tree */
return read_one(&buffer, &size);
}
struct cache_tree *cache_tree_find(struct cache_tree *it, const char *path)
{
while (*path) {
const char *slash;
struct cache_tree_sub *sub;
slash = strchr(path, '/');
if (!slash)
slash = path + strlen(path);
/* between path and slash is the name of the
* subtree to look for.
*/
sub = find_subtree(it, path, slash - path, 0);
if (!sub)
return NULL;
it = sub->cache_tree;
if (slash)
while (*slash && *slash == '/')
slash++;
if (!slash || !*slash)
return it; /* prefix ended with slashes */
path = slash;
}
return it;
}