summaryrefslogtreecommitdiffabout
path: root/git.h
authorLars Hjemli <hjemli@gmail.com>2007-02-04 21:55:19 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-02-04 21:55:19 (UTC)
commit8fb2f056961e577a039ae185d89ab8e2d2840b9e (patch) (unidiff)
treea009aca3c52dd134faa48181daede79bd930f9a4 /git.h
parentce1c7336e5b3e3ebe8f8c9029c405aedec98c208 (diff)
downloadcgit-8fb2f056961e577a039ae185d89ab8e2d2840b9e.zip
cgit-8fb2f056961e577a039ae185d89ab8e2d2840b9e.tar.gz
cgit-8fb2f056961e577a039ae185d89ab8e2d2840b9e.tar.bz2
Add support for lightweight tags
There is nothing bad about a tag that has no tag-object, but the old code didn't handle such tags correctly. Fix it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'git.h') (more/less context) (ignore whitespace changes)
-rw-r--r--git.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/git.h b/git.h
index 991eaa5..eca48d5 100644
--- a/git.h
+++ b/git.h
@@ -257,48 +257,52 @@ struct object_refs {
257struct object_array { 257struct object_array {
258 unsigned int nr; 258 unsigned int nr;
259 unsigned int alloc; 259 unsigned int alloc;
260 struct object_array_entry { 260 struct object_array_entry {
261 struct object *item; 261 struct object *item;
262 const char *name; 262 const char *name;
263 } *objects; 263 } *objects;
264}; 264};
265 265
266#define TYPE_BITS 3 266#define TYPE_BITS 3
267#define FLAG_BITS 27 267#define FLAG_BITS 27
268 268
269/* 269/*
270 * The object type is stored in 3 bits. 270 * The object type is stored in 3 bits.
271 */ 271 */
272struct object { 272struct object {
273 unsigned parsed : 1; 273 unsigned parsed : 1;
274 unsigned used : 1; 274 unsigned used : 1;
275 unsigned type : TYPE_BITS; 275 unsigned type : TYPE_BITS;
276 unsigned flags : FLAG_BITS; 276 unsigned flags : FLAG_BITS;
277 unsigned char sha1[20]; 277 unsigned char sha1[20];
278}; 278};
279 279
280 280
281/** Returns the object, having parsed it to find out what it is. **/
282struct object *parse_object(const unsigned char *sha1);
283
284
281/* 285/*
282 * from git:tree.h 286 * from git:tree.h
283 */ 287 */
284 288
285struct tree { 289struct tree {
286 struct object object; 290 struct object object;
287 void *buffer; 291 void *buffer;
288 unsigned long size; 292 unsigned long size;
289}; 293};
290 294
291 295
292struct tree *lookup_tree(const unsigned char *sha1); 296struct tree *lookup_tree(const unsigned char *sha1);
293int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size); 297int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size);
294int parse_tree(struct tree *tree); 298int parse_tree(struct tree *tree);
295struct tree *parse_tree_indirect(const unsigned char *sha1); 299struct tree *parse_tree_indirect(const unsigned char *sha1);
296 300
297typedef int (*read_tree_fn_t)(const unsigned char *, const char *, int, const char *, unsigned int, int); 301typedef int (*read_tree_fn_t)(const unsigned char *, const char *, int, const char *, unsigned int, int);
298 302
299extern int read_tree_recursive(struct tree *tree, 303extern int read_tree_recursive(struct tree *tree,
300 const char *base, int baselen, 304 const char *base, int baselen,
301 int stage, const char **match, 305 int stage, const char **match,
302 read_tree_fn_t fn); 306 read_tree_fn_t fn);
303 307
304extern int read_tree(struct tree *tree, int stage, const char **paths); 308extern int read_tree(struct tree *tree, int stage, const char **paths);