Re: [PATCH v3 2/8] merge-recursive: internal flag to avoid touching the worktree
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 8, 2014, 17:37 UTC
- Message-ID
- <xmqqk35enhcu.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <5bd5960659d85943477d2a5fbca3dd5ccd0da686.1409860234.git.tr@thomasrast.ch>
Thomas Rast <tr@thomasrast.ch> writes:
Show 10 quoted lines
> From: Thomas Rast <trast@inf.ethz.ch> > > o->call_depth has a double function: a nonzero call_depth means we > want to construct virtual merge bases, but it also means we want to > avoid touching the worktree. Introduce a new flag o->no_worktree to > trigger only the latter. > > Signed-off-by: Thomas Rast <trast@inf.ethz.ch> > Signed-off-by: Junio C Hamano <gitster@pobox.com> > ---
I notice that many hits from
$ git grep -e '->call_depth' --and --not -e '->no_worktree'
are about how the progress is reported during recursive operations or setting up ll_opts suitable for ancestor merges (both of which are perfectly fine not to pay any attention to no_worktree), but some others look iffy. For example, function remove_file() decides to update the in-core index only when call_depth is set (i.e. we are doing a virtual parent) or clean (clean merge at the content level, i.e. "both removed"), and decides to update the working tree only at the top-level of the recursion and no_wd is passed.
- As to "update_cache", if you do not update it while you are operating in the cache-only mode (aka ->no_worktree), I wonder where the result goes. Shouldn't it be done for in-core merge as well?
- As to "update_working_tree", there are few places where the function is called with no_wd that is not true, even when ->no_worktree is set. Do you want to allow working tree to be modified in such a call?