projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Document git-clone --use-separate-remote
[git.git]
/
builtin-read-tree.c
diff --git
a/builtin-read-tree.c
b/builtin-read-tree.c
index
10afd46
..
bb50fbd
100644
(file)
--- a/
builtin-read-tree.c
+++ b/
builtin-read-tree.c
@@
-376,6
+376,7
@@
static void check_updates(struct cache_entry **src, int nr)
fprintf(stderr, "%4u%% (%u/%u) done\r",
percent, cnt, total);
last_percent = percent;
fprintf(stderr, "%4u%% (%u/%u) done\r",
percent, cnt, total);
last_percent = percent;
+ progress_update = 0;
}
}
}
}
}
}
@@
-791,25
+792,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)
@@
-851,7
+853,7
@@
static void prime_cache_tree(void)
static const char read_tree_usage[] = "git-read-tree (<sha> | -m [--aggressive] [-u | -i] <sha1> [<sha2> [<sha3>]])";
static const char read_tree_usage[] = "git-read-tree (<sha> | -m [--aggressive] [-u | -i] <sha1> [<sha2> [<sha3>]])";
-static struct
cache_file cache
_file;
+static struct
lock_file lock
_file;
int cmd_read_tree(int argc, const char **argv, char **envp)
{
int cmd_read_tree(int argc, const char **argv, char **envp)
{
@@
-862,9
+864,9
@@
int cmd_read_tree(int argc, const char **argv, char **envp)
setup_git_directory();
git_config(git_default_config);
setup_git_directory();
git_config(git_default_config);
- newfd = hold_
index_file_for_update(&cache
_file, get_index_file());
+ newfd = hold_
lock_file_for_update(&lock
_file, get_index_file());
if (newfd < 0)
if (newfd < 0)
- die("unable to create new
cache
file");
+ die("unable to create new
index
file");
git_config(git_default_config);
git_config(git_default_config);
@@
-894,7
+896,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)
usage(read_tree_usage);
if (!strcmp(arg, "--reset")) {
if (stage || merge)
usage(read_tree_usage);
@@
-976,7
+981,7
@@
int cmd_read_tree(int argc, const char **argv, char **envp)
}
if (write_cache(newfd, active_cache, active_nr) ||
}
if (write_cache(newfd, active_cache, active_nr) ||
- commit_
index_file(&cache
_file))
+ commit_
lock_file(&lock
_file))
die("unable to write new index file");
return 0;
}
die("unable to write new index file");
return 0;
}