 9460fd48b5
			
		
	
	9460fd48b5
	
	
	
		
			
			In builtin.h, there exists the distinctly lib-ish function prune_packed_objects(). This function can currently only be called by built-in commands but, unlike all of the other functions in the header, it does not make sense to impose this restriction as the functionality can be logically reused in libgit. Extract this function into prune-packed.c so that related definitions can exist clearly in their own header file. While we're at it, clean up #includes that are unused. This patch is best viewed with --color-moved. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			44 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "object-store.h"
 | |
| #include "packfile.h"
 | |
| #include "progress.h"
 | |
| #include "prune-packed.h"
 | |
| 
 | |
| static struct progress *progress;
 | |
| 
 | |
| static int prune_subdir(unsigned int nr, const char *path, void *data)
 | |
| {
 | |
| 	int *opts = data;
 | |
| 	display_progress(progress, nr + 1);
 | |
| 	if (!(*opts & PRUNE_PACKED_DRY_RUN))
 | |
| 		rmdir(path);
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static int prune_object(const struct object_id *oid, const char *path,
 | |
| 			 void *data)
 | |
| {
 | |
| 	int *opts = data;
 | |
| 
 | |
| 	if (!has_object_pack(oid))
 | |
| 		return 0;
 | |
| 
 | |
| 	if (*opts & PRUNE_PACKED_DRY_RUN)
 | |
| 		printf("rm -f %s\n", path);
 | |
| 	else
 | |
| 		unlink_or_warn(path);
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| void prune_packed_objects(int opts)
 | |
| {
 | |
| 	if (opts & PRUNE_PACKED_VERBOSE)
 | |
| 		progress = start_delayed_progress(_("Removing duplicate objects"), 256);
 | |
| 
 | |
| 	for_each_loose_file_in_objdir(get_object_directory(),
 | |
| 				      prune_object, NULL, prune_subdir, &opts);
 | |
| 
 | |
| 	/* Ensure we show 100% before finishing progress */
 | |
| 	display_progress(progress, 256);
 | |
| 	stop_progress(&progress);
 | |
| }
 |