 7d3d226e70
			
		
	
	7d3d226e70
	
	
	
		
			
			Currently stash shells out to reflog in order to delete refs. In an effort to reduce how much we shell out to a subprocess, libify the functionality that stash needs into reflog.c. Add a reflog_delete function that is pretty much the logic in the while loop in builtin/reflog.c cmd_reflog_delete(). This is a function that builtin/reflog.c and builtin/stash.c can both call. Also move functions needed by reflog_delete and export them. Helped-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: John Cai <johncai86@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef REFLOG_H
 | |
| #define REFLOG_H
 | |
| #include "refs.h"
 | |
| 
 | |
| struct cmd_reflog_expire_cb {
 | |
| 	int stalefix;
 | |
| 	int explicit_expiry;
 | |
| 	timestamp_t expire_total;
 | |
| 	timestamp_t expire_unreachable;
 | |
| 	int recno;
 | |
| };
 | |
| 
 | |
| struct expire_reflog_policy_cb {
 | |
| 	enum {
 | |
| 		UE_NORMAL,
 | |
| 		UE_ALWAYS,
 | |
| 		UE_HEAD
 | |
| 	} unreachable_expire_kind;
 | |
| 	struct commit_list *mark_list;
 | |
| 	unsigned long mark_limit;
 | |
| 	struct cmd_reflog_expire_cb cmd;
 | |
| 	struct commit *tip_commit;
 | |
| 	struct commit_list *tips;
 | |
| 	unsigned int dry_run:1;
 | |
| };
 | |
| 
 | |
| int reflog_delete(const char *rev, enum expire_reflog_flags flags,
 | |
| 		  int verbose);
 | |
| void reflog_expiry_cleanup(void *cb_data);
 | |
| void reflog_expiry_prepare(const char *refname, const struct object_id *oid,
 | |
| 			   void *cb_data);
 | |
| int should_expire_reflog_ent(struct object_id *ooid, struct object_id *noid,
 | |
| 			     const char *email, timestamp_t timestamp, int tz,
 | |
| 			     const char *message, void *cb_data);
 | |
| int count_reflog_ent(struct object_id *ooid, struct object_id *noid,
 | |
| 		     const char *email, timestamp_t timestamp, int tz,
 | |
| 		     const char *message, void *cb_data);
 | |
| int should_expire_reflog_ent_verbose(struct object_id *ooid,
 | |
| 				     struct object_id *noid,
 | |
| 				     const char *email,
 | |
| 				     timestamp_t timestamp, int tz,
 | |
| 				     const char *message, void *cb_data);
 | |
| #endif /* REFLOG_H */
 |