fsck: optionally ignore specific fsck issues completely
An fsck issue in a legacy repository might be so common that one would like not to bother the user with mentioning it at all. With this change, that is possible by setting the respective message type to "ignore". This change "abuses" the missingEmail=warn test to verify that "ignore" is also accepted and works correctly. And while at it, it makes sure that multiple options work, too (they are passed to unpack-objects or index-pack as a comma-separated list via the --strict=... command-line option). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Johannes Schindelin
					Johannes Schindelin
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							f50c440730
						
					
				
				
					commit
					efaba7cc77
				
			
							
								
								
									
										5
									
								
								fsck.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								fsck.c
									
									
									
									
									
								
							| @ -131,6 +131,8 @@ static int parse_msg_type(const char *str) | |||||||
| 		return FSCK_ERROR; | 		return FSCK_ERROR; | ||||||
| 	else if (!strcmp(str, "warn")) | 	else if (!strcmp(str, "warn")) | ||||||
| 		return FSCK_WARN; | 		return FSCK_WARN; | ||||||
|  | 	else if (!strcmp(str, "ignore")) | ||||||
|  | 		return FSCK_IGNORE; | ||||||
| 	else | 	else | ||||||
| 		die("Unknown fsck message type: '%s'", str); | 		die("Unknown fsck message type: '%s'", str); | ||||||
| } | } | ||||||
| @ -222,6 +224,9 @@ static int report(struct fsck_options *options, struct object *object, | |||||||
| 	struct strbuf sb = STRBUF_INIT; | 	struct strbuf sb = STRBUF_INIT; | ||||||
| 	int msg_type = fsck_msg_type(id, options), result; | 	int msg_type = fsck_msg_type(id, options), result; | ||||||
|  |  | ||||||
|  | 	if (msg_type == FSCK_IGNORE) | ||||||
|  | 		return 0; | ||||||
|  |  | ||||||
| 	if (msg_type == FSCK_FATAL) | 	if (msg_type == FSCK_FATAL) | ||||||
| 		msg_type = FSCK_ERROR; | 		msg_type = FSCK_ERROR; | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								fsck.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								fsck.h
									
									
									
									
									
								
							| @ -3,6 +3,7 @@ | |||||||
|  |  | ||||||
| #define FSCK_ERROR 1 | #define FSCK_ERROR 1 | ||||||
| #define FSCK_WARN 2 | #define FSCK_WARN 2 | ||||||
|  | #define FSCK_IGNORE 3 | ||||||
|  |  | ||||||
| struct fsck_options; | struct fsck_options; | ||||||
|  |  | ||||||
|  | |||||||
| @ -133,7 +133,14 @@ test_expect_success 'push with receive.fsck.missingEmail=warn' ' | |||||||
| 	git --git-dir=dst/.git config \ | 	git --git-dir=dst/.git config \ | ||||||
| 		receive.fsck.missingEmail warn && | 		receive.fsck.missingEmail warn && | ||||||
| 	git push --porcelain dst bogus >act 2>&1 && | 	git push --porcelain dst bogus >act 2>&1 && | ||||||
| 	grep "missingEmail" act | 	grep "missingEmail" act && | ||||||
|  | 	git --git-dir=dst/.git branch -D bogus && | ||||||
|  | 	git --git-dir=dst/.git config --add \ | ||||||
|  | 		receive.fsck.missingEmail ignore && | ||||||
|  | 	git --git-dir=dst/.git config --add \ | ||||||
|  | 		receive.fsck.badDate warn && | ||||||
|  | 	git push --porcelain dst bogus >act 2>&1 && | ||||||
|  | 	test_must_fail grep "missingEmail" act | ||||||
| ' | ' | ||||||
|  |  | ||||||
| test_expect_success \ | test_expect_success \ | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user