summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 33ecf7e)
raw | patch | inline | side by side (parent: 33ecf7e)
author | Daniel Barkalow <barkalow@iabervon.org> | |
Thu, 7 Feb 2008 16:40:02 +0000 (11:40 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sun, 10 Feb 2008 07:16:51 +0000 (23:16 -0800) |
This option allows the caller to reset everything that isn't unmerged,
leaving the unmerged things to be resolved. If, after a merge of
"working" and "HEAD", this is used with "HEAD" (reset, !update), the
result will be that all of the changes from "local" are in the working
tree but not added to the index (either with the index clean but
unchanged, or with the index unmerged, depending on whether there are
conflicts).
This will be used in checkout -m.
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
leaving the unmerged things to be resolved. If, after a merge of
"working" and "HEAD", this is used with "HEAD" (reset, !update), the
result will be that all of the changes from "local" are in the working
tree but not added to the index (either with the index clean but
unchanged, or with the index unmerged, depending on whether there are
conflicts).
This will be used in checkout -m.
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
unpack-trees.c | patch | blob | history | |
unpack-trees.h | patch | blob | history |
diff --git a/unpack-trees.c b/unpack-trees.c
index 40d41307583daba56e89d56a1dedab3d6eab572c..470fa02e0886462f44fd0e188da6e8c65ab6fac0 100644 (file)
--- a/unpack-trees.c
+++ b/unpack-trees.c
int any_dirs = 0;
char *cache_name;
int ce_stage;
+ int skip_entry = 0;
/* Find the first name in the input. */
any_files = 1;
src[0] = active_cache[o->pos];
remove = o->pos;
+ if (o->skip_unmerged && ce_stage(src[0]))
+ skip_entry = 1;
}
for (i = 0; i < len; i++) {
continue;
}
+ if (skip_entry) {
+ subposns[i] = df_conflict_list;
+ posns[i] = posns[i]->next;
+ continue;
+ }
+
if (!o->merge)
ce_stage = 0;
else if (i + 1 < o->head_idx)
posns[i] = posns[i]->next;
}
if (any_files) {
- if (o->merge) {
+ if (skip_entry) {
+ o->pos++;
+ while (o->pos < active_nr &&
+ !strcmp(active_cache[o->pos]->name,
+ src[0]->name))
+ o->pos++;
+ } else if (o->merge) {
int ret;
#if DBRT_DEBUG > 1
* If we have an entry in the index cache, then we want to
* make sure that it matches head.
*/
- if (index && !same(index, head)) {
+ if (index && !same(index, head))
return o->gently ? -1 : reject_merge(index);
- }
if (head) {
/* #5ALT, #15 */
diff --git a/unpack-trees.h b/unpack-trees.h
index 83d12295325ba234458d140c5cc718ce5176ede9..a2df544d040adc21f7d854ad50c53e61cf74c9ae 100644 (file)
--- a/unpack-trees.h
+++ b/unpack-trees.h
int trivial_merges_only;
int verbose_update;
int aggressive;
+ int skip_unmerged;
int gently;
const char *prefix;
int pos;