Skip to content

Commit d4185ec

Browse files
derrickstoleedscho
authored andcommitted
scalar reconfigure: help users remove buggy repos
When running 'scalar reconfigure -a', such as at install time, 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>
1 parent 5e8c31b commit d4185ec

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

scalar.c

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,7 @@ static int cmd_reconfigure(int argc, const char **argv)
10341034
git_config(get_scalar_repos, &scalar_repos);
10351035

10361036
for (i = 0; i < scalar_repos.nr; i++) {
1037+
int failed = 0;
10371038
const char *dir = scalar_repos.items[i].string;
10381039

10391040
strbuf_reset(&commondir);
@@ -1044,30 +1045,51 @@ static int cmd_reconfigure(int argc, const char **argv)
10441045

10451046
if (errno != ENOENT) {
10461047
warning_errno(_("could not switch to '%s'"), dir);
1047-
res = -1;
1048-
continue;
1048+
failed = -1;
1049+
goto loop_end;
10491050
}
10501051

10511052
strbuf_addstr(&buf, dir);
10521053
if (remove_deleted_enlistment(&buf))
1053-
res = error(_("could not remove stale "
1054-
"scalar.repo '%s'"), dir);
1054+
failed = error(_("could not remove stale "
1055+
"scalar.repo '%s'"), dir);
10551056
else
1056-
warning(_("removing stale scalar.repo '%s'"),
1057+
warning(_("removed stale scalar.repo '%s'"),
10571058
dir);
10581059
strbuf_release(&buf);
1059-
} else if (discover_git_directory(&commondir, &gitdir) < 0) {
1060-
warning_errno(_("git repository gone in '%s'"), dir);
1061-
res = -1;
1062-
} else {
1063-
git_config_clear();
1064-
1065-
the_repository = &r;
1066-
r.commondir = commondir.buf;
1067-
r.gitdir = gitdir.buf;
1068-
1069-
if (set_recommended_config(1) < 0)
1070-
res = -1;
1060+
goto loop_end;
1061+
}
1062+
1063+
switch (discover_git_directory_reason(&commondir, &gitdir)) {
1064+
case GIT_DIR_INVALID_OWNERSHIP:
1065+
warning(_("repository at '%s' has different owner"), dir);
1066+
failed = -1;
1067+
goto loop_end;
1068+
1069+
case GIT_DIR_DISCOVERED:
1070+
break;
1071+
1072+
default:
1073+
warning(_("repository not found in '%s'"), dir);
1074+
failed = -1;
1075+
break;
1076+
}
1077+
1078+
git_config_clear();
1079+
1080+
the_repository = &r;
1081+
r.commondir = commondir.buf;
1082+
r.gitdir = gitdir.buf;
1083+
1084+
if (set_recommended_config(1) < 0)
1085+
failed = -1;
1086+
1087+
loop_end:
1088+
if (failed) {
1089+
res = failed;
1090+
warning(_("to unregister this repository from Scalar, run\n"
1091+
"\tgit config --global --unset --fixed-value scalar.repo \"%s\""),
1092+
dir);
10711093
}
10721094
}
10731095

0 commit comments

Comments
 (0)