sparse-checkout: create leading directories
The 'git init' command creates the ".git/info" directory and fills it with some default files. However, 'git worktree add' does not create the info directory for that worktree. This causes a problem when running "git sparse-checkout init" inside a worktree. While care was taken to allow the sparse-checkout config to be specific to a worktree, this initialization was untested. Safely create the leading directories for the sparse-checkout file. This is the safest thing to do even without worktrees, as a user could delete their ".git/info" directory and expect Git to recover safely. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
d622c34396
commit
3c754067a1
@ -199,6 +199,10 @@ static int write_patterns_and_update(struct pattern_list *pl)
|
||||
int result;
|
||||
|
||||
sparse_filename = get_sparse_checkout_filename();
|
||||
|
||||
if (safe_create_leading_directories(sparse_filename))
|
||||
die(_("failed to create directory for sparse-checkout file"));
|
||||
|
||||
fd = hold_lock_file_for_update(&lk, sparse_filename,
|
||||
LOCK_DIE_ON_ERROR);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user