On Sat, Sep 24, 2016 at 11:55:33AM -0700, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > > I think this 4/3 is not quite enough to fix the damage to the code > > caused by 2/3. > > ... > > after 4/3 is applied, we should be able to remove the global > > variable 2/3 introduced, make init_db() receive that information as > > the return value of set_git_dir_init(), and pass that as a parameter > > to create_default_files(). > > That would look something like this squashed into 4/3, I think. I > am not sure if a commit that squashes 2/3, 3/3, 4/3 and this update > together is harder to understand than keeping 2/3, 3/3 and a fixed > 4/3 separate, though. The end result looks much better structured > than before 2/3 is applied to my quick scan-through of the code. > ... How about this? [1/5] init: correct re-initialization from a linked worktree [2/5] init: call set_git_dir_init() from within init_db() [3/5] init: kill set_git_dir_init() [4/5] init: do not set unnecessary core.worktree [5/5] init: kill git_link variable I went a bit further, merging set_git_dir_init() back to init_db() so I can kill "git_link" variable cleanly in 5/5. 3/5 does make init_db() a bit longer, but not to the alarming level yet. By 4/5, set_git_dir_init() is gone, so init_db() just needs to save and pass original_git_dir down to needs_work_tree_config(). -- Duy