Skip to content

Commit

Permalink
mv: split submodule move preparation code out
Browse files Browse the repository at this point in the history
"Huh?" is removed from die() message.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Nguyễn Thái Ngọc Duy authored and Junio C Hamano committed Sep 3, 2014
1 parent ad1a19d commit 3af05a6
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions builtin/mv.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,23 @@ static const char *add_slash(const char *path)
static struct lock_file lock_file;
#define SUBMODULE_WITH_GITDIR ((const char *)1)

static void prepare_move_submodule(const char *src, int first,
const char **submodule_gitfile)
{
struct strbuf submodule_dotgit = STRBUF_INIT;
if (!S_ISGITLINK(active_cache[first]->ce_mode))
die(_("Directory %s is in index and no submodule?"), src);
if (!is_staging_gitmodules_ok())
die(_("Please stage your changes to .gitmodules or stash them to proceed"));
strbuf_addf(&submodule_dotgit, "%s/.git", src);
*submodule_gitfile = read_gitfile(submodule_dotgit.buf);
if (*submodule_gitfile)
*submodule_gitfile = xstrdup(*submodule_gitfile);
else
*submodule_gitfile = SUBMODULE_WITH_GITDIR;
strbuf_release(&submodule_dotgit);
}

int cmd_mv(int argc, const char **argv, const char *prefix)
{
int i, gitmodules_modified = 0;
Expand Down Expand Up @@ -132,20 +149,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
bad = _("cannot move directory over file");
else if (src_is_dir) {
int first = cache_name_pos(src, length);
if (first >= 0) {
struct strbuf submodule_dotgit = STRBUF_INIT;
if (!S_ISGITLINK(active_cache[first]->ce_mode))
die (_("Huh? Directory %s is in index and no submodule?"), src);
if (!is_staging_gitmodules_ok())
die (_("Please, stage your changes to .gitmodules or stash them to proceed"));
strbuf_addf(&submodule_dotgit, "%s/.git", src);
submodule_gitfile[i] = read_gitfile(submodule_dotgit.buf);
if (submodule_gitfile[i])
submodule_gitfile[i] = xstrdup(submodule_gitfile[i]);
else
submodule_gitfile[i] = SUBMODULE_WITH_GITDIR;
strbuf_release(&submodule_dotgit);
} else {

if (first >= 0)
prepare_move_submodule(src, first,
submodule_gitfile + i);
else {
const char *src_w_slash = add_slash(src);
int last, len_w_slash = length + 1;

Expand Down

0 comments on commit 3af05a6

Please sign in to comment.