Merge branch 'jk/attr-macro-fix'
Asking "git check-attr" about a macro (e.g. "binary") on a specific path did not work correctly, even though "git check-attr -a" listed such a macro correctly. This has been corrected. * jk/attr-macro-fix: attr: do not mark queried macros as unsetmaint
						commit
						02bf766cc5
					
				
							
								
								
									
										16
									
								
								attr.c
								
								
								
								
							
							
						
						
									
										16
									
								
								attr.c
								
								
								
								
							|  | @ -1092,7 +1092,7 @@ static void collect_some_attrs(const struct index_state *istate, | ||||||
| 			       const char *path, | 			       const char *path, | ||||||
| 			       struct attr_check *check) | 			       struct attr_check *check) | ||||||
| { | { | ||||||
| 	int i, pathlen, rem, dirlen; | 	int pathlen, rem, dirlen; | ||||||
| 	const char *cp, *last_slash = NULL; | 	const char *cp, *last_slash = NULL; | ||||||
| 	int basename_offset; | 	int basename_offset; | ||||||
|  |  | ||||||
|  | @ -1113,20 +1113,6 @@ static void collect_some_attrs(const struct index_state *istate, | ||||||
| 	all_attrs_init(&g_attr_hashmap, check); | 	all_attrs_init(&g_attr_hashmap, check); | ||||||
| 	determine_macros(check->all_attrs, check->stack); | 	determine_macros(check->all_attrs, check->stack); | ||||||
|  |  | ||||||
| 	if (check->nr) { |  | ||||||
| 		rem = 0; |  | ||||||
| 		for (i = 0; i < check->nr; i++) { |  | ||||||
| 			int n = check->items[i].attr->attr_nr; |  | ||||||
| 			struct all_attrs_item *item = &check->all_attrs[n]; |  | ||||||
| 			if (item->macro) { |  | ||||||
| 				item->value = ATTR__UNSET; |  | ||||||
| 				rem++; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		if (rem == check->nr) |  | ||||||
| 			return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	rem = check->all_attrs_nr; | 	rem = check->all_attrs_nr; | ||||||
| 	fill(path, pathlen, basename_offset, check->stack, check->all_attrs, rem); | 	fill(path, pathlen, basename_offset, check->stack, check->all_attrs, rem); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -322,4 +322,24 @@ test_expect_success 'bare repository: test info/attributes' ' | ||||||
| 	) | 	) | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'binary macro expanded by -a' ' | ||||||
|  | 	echo "file binary" >.gitattributes && | ||||||
|  | 	cat >expect <<-\EOF && | ||||||
|  | 	file: binary: set | ||||||
|  | 	file: diff: unset | ||||||
|  | 	file: merge: unset | ||||||
|  | 	file: text: unset | ||||||
|  | 	EOF | ||||||
|  | 	git check-attr -a file >actual && | ||||||
|  | 	test_cmp expect actual | ||||||
|  | ' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | test_expect_success 'query binary macro directly' ' | ||||||
|  | 	echo "file binary" >.gitattributes && | ||||||
|  | 	echo file: binary: set >expect && | ||||||
|  | 	git check-attr binary file >actual && | ||||||
|  | 	test_cmp expect actual | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_done | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano