Add check program "git-check-racy"
This will help counting the racily clean paths, but it should be useless for daily use. Do not even enable it in the makefile. Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									520cd3eca5
								
							
						
					
					
						commit
						42f774063d
					
				
							
								
								
									
										6
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										6
									
								
								Makefile
								
								
								
								
							|  | @ -194,7 +194,11 @@ PROGRAMS = \ | ||||||
| 	git-update-server-info$X \ | 	git-update-server-info$X \ | ||||||
| 	git-upload-pack$X git-verify-pack$X \ | 	git-upload-pack$X git-verify-pack$X \ | ||||||
| 	git-pack-redundant$X git-var$X \ | 	git-pack-redundant$X git-var$X \ | ||||||
| 	git-describe$X git-merge-tree$X git-blame$X git-imap-send$X | 	git-describe$X git-merge-tree$X git-blame$X git-imap-send$X \ | ||||||
|  | 	$(EXTRA_PROGRAMS) | ||||||
|  |  | ||||||
|  | # Empty... | ||||||
|  | EXTRA_PROGRAMS = | ||||||
|  |  | ||||||
| BUILT_INS = \ | BUILT_INS = \ | ||||||
| 	git-format-patch$X git-show$X git-whatchanged$X \ | 	git-format-patch$X git-show$X git-whatchanged$X \ | ||||||
|  |  | ||||||
|  | @ -0,0 +1,28 @@ | ||||||
|  | #include "cache.h" | ||||||
|  |  | ||||||
|  | int main(int ac, char **av) | ||||||
|  | { | ||||||
|  | 	int i; | ||||||
|  | 	int dirty, clean, racy; | ||||||
|  |  | ||||||
|  | 	dirty = clean = racy = 0; | ||||||
|  | 	read_cache(); | ||||||
|  | 	for (i = 0; i < active_nr; i++) { | ||||||
|  | 		struct cache_entry *ce = active_cache[i]; | ||||||
|  | 		struct stat st; | ||||||
|  |  | ||||||
|  | 		if (lstat(ce->name, &st)) { | ||||||
|  | 			error("lstat(%s): %s", ce->name, strerror(errno)); | ||||||
|  | 			continue; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if (ce_match_stat(ce, &st, 0)) | ||||||
|  | 			dirty++; | ||||||
|  | 		else if (ce_match_stat(ce, &st, 2)) | ||||||
|  | 			racy++; | ||||||
|  | 		else | ||||||
|  | 			clean++; | ||||||
|  | 	} | ||||||
|  | 	printf("dirty %d, clean %d, racy %d\n", dirty, clean, racy); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								read-cache.c
								
								
								
								
							
							
						
						
									
										12
									
								
								read-cache.c
								
								
								
								
							|  | @ -169,9 +169,11 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st) | ||||||
| 	return changed; | 	return changed; | ||||||
| } | } | ||||||
|  |  | ||||||
| int ce_match_stat(struct cache_entry *ce, struct stat *st, int ignore_valid) | int ce_match_stat(struct cache_entry *ce, struct stat *st, int options) | ||||||
| { | { | ||||||
| 	unsigned int changed; | 	unsigned int changed; | ||||||
|  | 	int ignore_valid = options & 01; | ||||||
|  | 	int assume_racy_is_modified = options & 02; | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| 	 * If it's marked as always valid in the index, it's | 	 * If it's marked as always valid in the index, it's | ||||||
|  | @ -200,8 +202,12 @@ int ce_match_stat(struct cache_entry *ce, struct stat *st, int ignore_valid) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!changed && | 	if (!changed && | ||||||
| 	    index_file_timestamp && | 	    index_file_timestamp && | ||||||
| 	    index_file_timestamp <= ntohl(ce->ce_mtime.sec)) | 	    index_file_timestamp <= ntohl(ce->ce_mtime.sec)) { | ||||||
| 		changed |= ce_modified_check_fs(ce, st); | 		if (assume_racy_is_modified) | ||||||
|  | 			changed |= DATA_CHANGED; | ||||||
|  | 		else | ||||||
|  | 			changed |= ce_modified_check_fs(ce, st); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return changed; | 	return changed; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano