Skip to content

Commit

Permalink
scalar reconfigure: help users remove buggy repos
Browse files Browse the repository at this point in the history
When running 'scalar reconfigure -a', Scalar has warning messages about
the repository missing (or not containing a .git directory). Failures
can also happen while trying to modify the repository-local config for
that repository.

These warnings may seem confusing to users who don't understand what
they mean or how to stop them.

Add a warning that instructs the user how to remove the warning in
future installations.

Signed-off-by: Derrick Stolee <derrickstolee@github.com>
  • Loading branch information
derrickstolee committed Aug 22, 2023
1 parent 787af0f commit 7ac7311
Showing 1 changed file with 38 additions and 13 deletions.
51 changes: 38 additions & 13 deletions scalar.c
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,7 @@ static int cmd_reconfigure(int argc, const char **argv)
git_config(get_scalar_repos, &scalar_repos);

for (i = 0; i < scalar_repos.nr; i++) {
int succeeded = 0;
const char *dir = scalar_repos.items[i].string;

strbuf_reset(&commondir);
Expand All @@ -674,27 +675,51 @@ static int cmd_reconfigure(int argc, const char **argv)

if (errno != ENOENT) {
warning_errno(_("could not switch to '%s'"), dir);
res = -1;
continue;
goto loop_end;
}

strbuf_addstr(&buf, dir);
if (remove_deleted_enlistment(&buf))
res = error(_("could not remove stale "
"scalar.repo '%s'"), dir);
else
warning(_("removing stale scalar.repo '%s'"),
error(_("could not remove stale "
"scalar.repo '%s'"), dir);
else {
warning(_("removed stale scalar.repo '%s'"),
dir);
succeeded = 1;
}
strbuf_release(&buf);
} else {
git_config_clear();
goto loop_end;
}

switch (discover_git_directory_reason(&commondir, &gitdir)) {
case GIT_DIR_INVALID_OWNERSHIP:
warning(_("repository at '%s' has different owner"), dir);
goto loop_end;

case GIT_DIR_DISCOVERED:
succeeded = 1;
break;

default:
warning(_("repository not found in '%s'"), dir);
break;
}

git_config_clear();

the_repository = &r;
r.commondir = commondir.buf;
r.gitdir = gitdir.buf;

the_repository = &r;
r.commondir = commondir.buf;
r.gitdir = gitdir.buf;
if (set_recommended_config(1) >= 0)
succeeded = 1;

if (set_recommended_config(1) < 0)
res = -1;
loop_end:
if (!succeeded) {
res = -1;
warning(_("to unregister this repository from Scalar, run\n"
"\tgit config --global --unset --fixed-value scalar.repo \"%s\""),
dir);
}
}

Expand Down

0 comments on commit 7ac7311

Please sign in to comment.