mirror of
https://github.com/git/git.git
synced 2024-12-18 22:33:34 +08:00
6bd20358a9
The "bind" commit can express an aggregation of multiple projects into a single commit. In such an organization, there would be one project, root of whose tree object is at the same level of the root of the aggregated projects, and other projects have their toplevel in separate subdirectories. Let's call that root level project the "primary project", and call other ones just "subprojects". You would first read-tree the primary project, and then graft the subprojects under their appropriate location using read-tree --prefix=<subdir>/ repeatedly. To write out a tree object from such an index for a subproject, write-tree --prefix=<subdir>/ is used. Signed-off-by: Junio C Hamano <junkio@cox.net>
34 lines
921 B
C
34 lines
921 B
C
#ifndef CACHE_TREE_H
|
|
#define CACHE_TREE_H
|
|
|
|
struct cache_tree;
|
|
struct cache_tree_sub {
|
|
struct cache_tree *cache_tree;
|
|
int namelen;
|
|
int used;
|
|
char name[FLEX_ARRAY];
|
|
};
|
|
|
|
struct cache_tree {
|
|
int entry_count; /* negative means "invalid" */
|
|
unsigned char sha1[20];
|
|
int subtree_nr;
|
|
int subtree_alloc;
|
|
struct cache_tree_sub **down;
|
|
};
|
|
|
|
struct cache_tree *cache_tree(void);
|
|
void cache_tree_free(struct cache_tree **);
|
|
void cache_tree_invalidate_path(struct cache_tree *, const char *);
|
|
struct cache_tree_sub *cache_tree_sub(struct cache_tree *, const char *);
|
|
|
|
void *cache_tree_write(struct cache_tree *root, unsigned long *size_p);
|
|
struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);
|
|
|
|
int cache_tree_fully_valid(struct cache_tree *);
|
|
int cache_tree_update(struct cache_tree *, struct cache_entry **, int, int, int);
|
|
|
|
struct cache_tree *cache_tree_find(struct cache_tree *, const char *);
|
|
|
|
#endif
|