sparse-index: loose integration with cache_tree_verify()
The cache_tree_verify() method is run when GIT_TEST_CHECK_CACHE_TREE is enabled, which it is by default in the test suite. The logic must be adjusted for the presence of these directory entries. For now, leave the test as a simple check for whether the directory entry is sparse. Do not go any further until needed. This allows us to re-enable GIT_TEST_CHECK_CACHE_TREE in t1092-sparse-checkout-compatibility.sh. Further, p2000-sparse-operations.sh uses the test suite and hence this is enabled for all tests. We need to integrate with it before we run our performance tests with a sparse-index. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									2de37c536d
								
							
						
					
					
						commit
						9ad2d5ea71
					
				
							
								
								
									
										19
									
								
								cache-tree.c
								
								
								
								
							
							
						
						
									
										19
									
								
								cache-tree.c
								
								
								
								
							|  | @ -808,6 +808,19 @@ int cache_tree_matches_traversal(struct cache_tree *root, | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static void verify_one_sparse(struct repository *r, | ||||||
|  | 			      struct index_state *istate, | ||||||
|  | 			      struct cache_tree *it, | ||||||
|  | 			      struct strbuf *path, | ||||||
|  | 			      int pos) | ||||||
|  | { | ||||||
|  | 	struct cache_entry *ce = istate->cache[pos]; | ||||||
|  |  | ||||||
|  | 	if (!S_ISSPARSEDIR(ce->ce_mode)) | ||||||
|  | 		BUG("directory '%s' is present in index, but not sparse", | ||||||
|  | 		    path->buf); | ||||||
|  | } | ||||||
|  |  | ||||||
| static void verify_one(struct repository *r, | static void verify_one(struct repository *r, | ||||||
| 		       struct index_state *istate, | 		       struct index_state *istate, | ||||||
| 		       struct cache_tree *it, | 		       struct cache_tree *it, | ||||||
|  | @ -830,6 +843,12 @@ static void verify_one(struct repository *r, | ||||||
|  |  | ||||||
| 	if (path->len) { | 	if (path->len) { | ||||||
| 		pos = index_name_pos(istate, path->buf, path->len); | 		pos = index_name_pos(istate, path->buf, path->len); | ||||||
|  |  | ||||||
|  | 		if (pos >= 0) { | ||||||
|  | 			verify_one_sparse(r, istate, it, path, pos); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		pos = -pos - 1; | 		pos = -pos - 1; | ||||||
| 	} else { | 	} else { | ||||||
| 		pos = 0; | 		pos = 0; | ||||||
|  |  | ||||||
|  | @ -2,9 +2,6 @@ | ||||||
|  |  | ||||||
| test_description='compare full workdir to sparse workdir' | test_description='compare full workdir to sparse workdir' | ||||||
|  |  | ||||||
| # The verify_cache_tree() check is not sparse-aware (yet). |  | ||||||
| # So, disable the check until that integration is complete. |  | ||||||
| GIT_TEST_CHECK_CACHE_TREE=0 |  | ||||||
| GIT_TEST_SPLIT_INDEX=0 | GIT_TEST_SPLIT_INDEX=0 | ||||||
| GIT_TEST_SPARSE_INDEX= | GIT_TEST_SPARSE_INDEX= | ||||||
|  |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Derrick Stolee
						Derrick Stolee