projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'new' of git://git.kernel.org/pub/scm/gitk/gitk into next
[git.git]
/
builtin-read-tree.c
diff --git
a/builtin-read-tree.c
b/builtin-read-tree.c
index
0c6ba3d
..
cc61c2d
100644
(file)
--- a/
builtin-read-tree.c
+++ b/
builtin-read-tree.c
@@
-817,25
+817,26
@@
static int oneway_merge(struct cache_entry **src)
static int read_cache_unmerged(void)
{
static int read_cache_unmerged(void)
{
- int i
, deleted
;
+ int i;
struct cache_entry **dst;
struct cache_entry **dst;
+ struct cache_entry *last = NULL;
read_cache();
dst = active_cache;
read_cache();
dst = active_cache;
- deleted = 0;
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce)) {
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce)) {
- deleted++;
+ if (last && !strcmp(ce->name, last->name))
+ continue;
invalidate_ce_path(ce);
invalidate_ce_path(ce);
- continue;
+ last = ce;
+ ce->ce_mode = 0;
+ ce->ce_flags &= ~htons(CE_STAGEMASK);
}
}
- if (deleted)
- *dst = ce;
- dst++;
+ *dst++ = ce;
}
}
- active_nr
-= deleted
;
- return
deleted
;
+ active_nr
= dst - active_cache
;
+ return
!!last
;
}
static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
}
static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
@@
-935,7
+936,10
@@
int cmd_read_tree(int argc, const char **argv, char **envp)
continue;
}
continue;
}
- /* This differs from "-m" in that we'll silently ignore unmerged entries */
+ /* This differs from "-m" in that we'll silently ignore
+ * unmerged entries and overwrite working tree files that
+ * correspond to them.
+ */
if (!strcmp(arg, "--reset")) {
if (stage || merge || prefix)
usage(read_tree_usage);
if (!strcmp(arg, "--reset")) {
if (stage || merge || prefix)
usage(read_tree_usage);