The annotations emitted by chainlint to indicate detected problems are overly terse, so much so that developers new to the project -- those who should most benefit from the linting -- may find them baffling. For instance, although the author of chainlint and seasoned Git developers may understand that "?!AMP?!" is an abbreviation of "ampersand" and indicates a break in the &&-chain, this may not be obvious to newcomers. The "?!LOOP?!" case is particularly serious because that terse single word does nothing to convey that the loop body should end with "|| return 1" (or "|| exit 1" in a subshell) to ensure that a failing command in the body aborts the loop immediately. Moreover, unlike &&-chaining which is ubiquitous in Git tests, the "|| return 1" idiom is relatively infrequent, thus may be harder for a newcomer to discover by consulting nearby code. Address these shortcomings by emitting human-readable messages which both explain the problem and give a strong hint about how to correct it. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			31 lines
		
	
	
		
			407 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			407 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
2 cat <<ARBITRARY >foop &&
 | 
						|
3 naddle
 | 
						|
4 fub <<EOF
 | 
						|
5 	nozzle
 | 
						|
6 	noodle
 | 
						|
7 EOF
 | 
						|
8 formp
 | 
						|
9 ARBITRARY
 | 
						|
10 
 | 
						|
11 (
 | 
						|
12 	cat <<-\INPUT_END &&
 | 
						|
13 	fish are mice
 | 
						|
14 	but geese go slow
 | 
						|
15 	data <<EOF
 | 
						|
16 		perl is lerp
 | 
						|
17 		and nothing else
 | 
						|
18 	EOF
 | 
						|
19 	toink
 | 
						|
20 	INPUT_END
 | 
						|
21 
 | 
						|
22 	cat <<-\EOT ?!LINT: missing '&&'?!
 | 
						|
23 	text goes here
 | 
						|
24 	data <<EOF
 | 
						|
25 		data goes here
 | 
						|
26 	EOF
 | 
						|
27 	more test here
 | 
						|
28 	EOT
 | 
						|
29 
 | 
						|
30 	foobar
 | 
						|
31 )
 |