1#ifndef REFS_H 2#define REFS_H 3 4struct ref_lock { 5char*ref_file; 6char*lock_file; 7unsigned char old_sha1[20]; 8int lock_fd; 9}; 10 11/* 12 * Calls the specified function for each ref file until it returns nonzero, 13 * and returns the value 14 */ 15externinthead_ref(int(*fn)(const char*path,const unsigned char*sha1)); 16externintfor_each_ref(int(*fn)(const char*path,const unsigned char*sha1)); 17externintfor_each_tag_ref(int(*fn)(const char*path,const unsigned char*sha1)); 18externintfor_each_branch_ref(int(*fn)(const char*path,const unsigned char*sha1)); 19externintfor_each_remote_ref(int(*fn)(const char*path,const unsigned char*sha1)); 20 21/** Reads the refs file specified into sha1 **/ 22externintget_ref_sha1(const char*ref,unsigned char*sha1); 23 24/** Locks a "refs/" ref returning the lock on success and NULL on failure. **/ 25externstruct ref_lock*lock_ref_sha1(const char*ref,const unsigned char*old_sha1,int mustexist); 26 27/** Locks any ref (for 'HEAD' type refs). */ 28externstruct ref_lock*lock_any_ref_for_update(const char*ref,const unsigned char*old_sha1,int mustexist); 29 30/** Release any lock taken but not written. **/ 31externvoidunlock_ref(struct ref_lock *lock); 32 33/** Writes sha1 into the ref specified by the lock. **/ 34externintwrite_ref_sha1(struct ref_lock *lock,const unsigned char*sha1,const char*msg); 35 36/** Returns 0 if target has the right format for a ref. **/ 37externintcheck_ref_format(const char*target); 38 39#endif/* REFS_H */