Hi,
On Mon, 15 Dec 2008, Junio C Hamano wrote:
Johannes Schindelin [off-list ref] writes:
quoted
quoted
merge-recursive: do not clobber untracked working tree garbage
...
+static int would_lose_untracked(const char *path)
+{
+ int pos = cache_name_pos(path, strlen(path));
+
+ if (pos < 0)
+ pos = -1 - pos;
+ while (pos < active_nr &&
+ !strcmp(path, active_cache[pos]->name)) {
+ /*
+ * If stage #0, it is definitely tracked.
+ * If it has stage #2 then it was tracked
+ * before this merge started. All other
+ * cases the path was not tracked.
+ */
+ switch (ce_stage(active_cache[pos])) {
+ case 0:
+ case 2:
+ return 0;
+ }
+ pos++;
+ }
+ return file_exists(path);
I wonder if it is cheaper to test file_exists() when the index contains a
lot of files...
"cheaper" than what?
Oops. I meant "cheaper to test file_exists() _first_". But thinking
about it again, it is probably way more expensive, especially in the cold
cache case.
Sorry for the noise,
Dscho