diff options
| author | Junio C Hamano <gitster@pobox.com> | 2008-05-28 15:12:30 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2008-05-29 17:35:21 -0700 | 
| commit | 2e2b887d1c2c2385825160e587d711ecb5935ef5 (patch) | |
| tree | 6beed288d6482e1e3857549370c03feeaf7a1215 /unpack-trees.c | |
| parent | 6286a08db3d1e718f4be6959d0f380215026800b (diff) | |
| download | git-2e2b887d1c2c2385825160e587d711ecb5935ef5.tar.gz | |
unpack_trees(): allow callers to differentiate worktree errors from merge errors
Instead of uniformly returning -1 on any error, this teaches
unpack_trees() to return -2 when the merge itself is Ok but worktree
refuses to get updated.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'unpack-trees.c')
| -rw-r--r-- | unpack-trees.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 0de5a31c0b..cba0aca062 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -358,8 +358,13 @@ static int unpack_failed(struct unpack_trees_options *o, const char *message)  	return -1;  } +/* + * N-way merge "len" trees.  Returns 0 on success, -1 on failure to manipulate the + * resulting index, -2 on failure to reflect the changes to the work tree. + */  int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options *o)  { +	int ret;  	static struct cache_entry *dfc;  	if (len > MAX_UNPACK_TREES) @@ -404,11 +409,10 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options  		return unpack_failed(o, "Merge requires file-level merging");  	o->src_index = NULL; -	if (check_updates(o)) -		return -1; +	ret = check_updates(o) ? (-2) : 0;  	if (o->dst_index)  		*o->dst_index = o->result; -	return 0; +	return ret;  }  /* Here come the merge functions */  | 
