cache_tree_update: give an option to update cache-tree only.
When the extra "dryrun" parameter is true, cache_tree_update() recomputes the invalid entry but does not actually creates new tree object. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
		
							
								
								
									
										18
									
								
								cache-tree.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								cache-tree.c
									
									
									
									
									
								
							@ -226,7 +226,8 @@ static int update_one(struct cache_tree *it,
 | 
			
		||||
		      int entries,
 | 
			
		||||
		      const char *base,
 | 
			
		||||
		      int baselen,
 | 
			
		||||
		      int missing_ok)
 | 
			
		||||
		      int missing_ok,
 | 
			
		||||
		      int dryrun)
 | 
			
		||||
{
 | 
			
		||||
	unsigned long size, offset;
 | 
			
		||||
	char *buffer;
 | 
			
		||||
@ -273,7 +274,8 @@ static int update_one(struct cache_tree *it,
 | 
			
		||||
				    cache + i, entries - i,
 | 
			
		||||
				    path,
 | 
			
		||||
				    baselen + sublen + 1,
 | 
			
		||||
				    missing_ok);
 | 
			
		||||
				    missing_ok,
 | 
			
		||||
				    dryrun);
 | 
			
		||||
		i += subcnt - 1;
 | 
			
		||||
		sub->used = 1;
 | 
			
		||||
	}
 | 
			
		||||
@ -338,6 +340,13 @@ static int update_one(struct cache_tree *it,
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (dryrun) {
 | 
			
		||||
		char hdr[200];
 | 
			
		||||
		int hdrlen;
 | 
			
		||||
		write_sha1_file_prepare(buffer, offset, tree_type, it->sha1,
 | 
			
		||||
					hdr, &hdrlen);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		write_sha1_file(buffer, offset, tree_type, it->sha1);
 | 
			
		||||
	free(buffer);
 | 
			
		||||
	it->entry_count = i;
 | 
			
		||||
@ -352,13 +361,14 @@ static int update_one(struct cache_tree *it,
 | 
			
		||||
int cache_tree_update(struct cache_tree *it,
 | 
			
		||||
		      struct cache_entry **cache,
 | 
			
		||||
		      int entries,
 | 
			
		||||
		      int missing_ok)
 | 
			
		||||
		      int missing_ok,
 | 
			
		||||
		      int dryrun)
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
	i = verify_cache(cache, entries);
 | 
			
		||||
	if (i)
 | 
			
		||||
		return i;
 | 
			
		||||
	i = update_one(it, cache, entries, "", 0, missing_ok);
 | 
			
		||||
	i = update_one(it, cache, entries, "", 0, missing_ok, dryrun);
 | 
			
		||||
	if (i < 0)
 | 
			
		||||
		return i;
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,6 @@ void *cache_tree_write(struct cache_tree *root, unsigned long *size_p);
 | 
			
		||||
struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);
 | 
			
		||||
 | 
			
		||||
int cache_tree_fully_valid(struct cache_tree *);
 | 
			
		||||
int cache_tree_update(struct cache_tree *, struct cache_entry **, int, int);
 | 
			
		||||
int cache_tree_update(struct cache_tree *, struct cache_entry **, int, int, int);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -41,7 +41,7 @@ int main(int argc, char **argv)
 | 
			
		||||
	if (!was_valid) {
 | 
			
		||||
		if (cache_tree_update(active_cache_tree,
 | 
			
		||||
				      active_cache, active_nr,
 | 
			
		||||
				      missing_ok) < 0)
 | 
			
		||||
				      missing_ok, 0) < 0)
 | 
			
		||||
			die("git-write-tree: error building trees");
 | 
			
		||||
		if (0 <= newfd) {
 | 
			
		||||
			if (!write_cache(newfd, active_cache, active_nr))
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user