Skip to content

Commit

Permalink
submodule: die on config error when linking modules
Browse files Browse the repository at this point in the history
When trying to connect a submodule with its corresponding
repository in '.git/modules' we try to set the core.worktree
setting in the submodule, which may fail due to an error
encountered in `git_config_set_in_file`.

The function is used in the git-mv command when trying to move a
submodule to another location. We already die when renaming a
file fails but do not pay attention to the case where updating
the connection between submodule and its repository fails. As
this leaves the repository in an inconsistent state, as well,
abort the program by dying early and presenting the failure to
the user.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Patrick Steinhardt authored and Junio C Hamano committed Feb 22, 2016
1 parent bd25f89 commit 1a90dfe
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions submodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1034,11 +1034,9 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)
/* Update core.worktree setting */
strbuf_reset(&file_name);
strbuf_addf(&file_name, "%s/config", git_dir);
if (git_config_set_in_file(file_name.buf, "core.worktree",
relative_path(real_work_tree, git_dir,
&rel_path)))
die(_("Could not set core.worktree in %s"),
file_name.buf);
git_config_set_in_file_or_die(file_name.buf, "core.worktree",
relative_path(real_work_tree, git_dir,
&rel_path));

strbuf_release(&file_name);
strbuf_release(&rel_path);
Expand Down

0 comments on commit 1a90dfe

Please sign in to comment.