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