Merge branch 'jt/clone-recursesub-ref-advise'
The interaction between "git clone --recurse-submodules" and alternate object store was ill-designed. The documentation and code have been taught to make more clear recommendations when the users see failures. * jt/clone-recursesub-ref-advise: submodule--helper: advise on fatal alternate error Doc: explain submodule.alternateErrorStrategy
This commit is contained in:
@ -20,6 +20,7 @@
|
||||
#include "diff.h"
|
||||
#include "object-store.h"
|
||||
#include "dir.h"
|
||||
#include "advice.h"
|
||||
|
||||
#define OPT_QUIET (1 << 0)
|
||||
#define OPT_CACHED (1 << 1)
|
||||
@ -1270,6 +1271,13 @@ struct submodule_alternate_setup {
|
||||
#define SUBMODULE_ALTERNATE_SETUP_INIT { NULL, \
|
||||
SUBMODULE_ALTERNATE_ERROR_IGNORE, NULL }
|
||||
|
||||
static const char alternate_error_advice[] = N_(
|
||||
"An alternate computed from a superproject's alternate is invalid.\n"
|
||||
"To allow Git to clone without an alternate in such a case, set\n"
|
||||
"submodule.alternateErrorStrategy to 'info' or, equivalently, clone with\n"
|
||||
"'--reference-if-able' instead of '--reference'."
|
||||
);
|
||||
|
||||
static int add_possible_reference_from_superproject(
|
||||
struct object_directory *odb, void *sas_cb)
|
||||
{
|
||||
@ -1301,6 +1309,8 @@ static int add_possible_reference_from_superproject(
|
||||
} else {
|
||||
switch (sas->error_mode) {
|
||||
case SUBMODULE_ALTERNATE_ERROR_DIE:
|
||||
if (advice_submodule_alternate_error_strategy_die)
|
||||
advise(_(alternate_error_advice));
|
||||
die(_("submodule '%s' cannot add alternate: %s"),
|
||||
sas->submodule_name, err.buf);
|
||||
case SUBMODULE_ALTERNATE_ERROR_INFO:
|
||||
|
||||
Reference in New Issue
Block a user