When recursively cloning a superproject with some shallow modules
defined in its .gitmodules, then recloning with "--reference=<path>", an
error occurs. For example:
  git clone --recurse-submodules --branch=master -j8 \
    https://android.googlesource.com/platform/superproject \
    master
  git clone --recurse-submodules --branch=master -j8 \
    https://android.googlesource.com/platform/superproject \
    --reference master master2
fails with:
  fatal: submodule '<snip>' cannot add alternate: reference repository
  '<snip>' is shallow
When a alternate computed from the superproject's alternate cannot be
added, whether in this case or another, advise about configuring the
"submodule.alternateErrorStrategy" configuration option and using
"--reference-if-able" instead of "--reference" when cloning.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef ADVICE_H
 | 
						|
#define ADVICE_H
 | 
						|
 | 
						|
#include "git-compat-util.h"
 | 
						|
 | 
						|
extern int advice_fetch_show_forced_updates;
 | 
						|
extern int advice_push_update_rejected;
 | 
						|
extern int advice_push_non_ff_current;
 | 
						|
extern int advice_push_non_ff_matching;
 | 
						|
extern int advice_push_already_exists;
 | 
						|
extern int advice_push_fetch_first;
 | 
						|
extern int advice_push_needs_force;
 | 
						|
extern int advice_push_unqualified_ref_name;
 | 
						|
extern int advice_status_hints;
 | 
						|
extern int advice_status_u_option;
 | 
						|
extern int advice_status_ahead_behind_warning;
 | 
						|
extern int advice_commit_before_merge;
 | 
						|
extern int advice_reset_quiet_warning;
 | 
						|
extern int advice_resolve_conflict;
 | 
						|
extern int advice_sequencer_in_use;
 | 
						|
extern int advice_implicit_identity;
 | 
						|
extern int advice_detached_head;
 | 
						|
extern int advice_set_upstream_failure;
 | 
						|
extern int advice_object_name_warning;
 | 
						|
extern int advice_amworkdir;
 | 
						|
extern int advice_rm_hints;
 | 
						|
extern int advice_add_embedded_repo;
 | 
						|
extern int advice_ignored_hook;
 | 
						|
extern int advice_waiting_for_editor;
 | 
						|
extern int advice_graft_file_deprecated;
 | 
						|
extern int advice_checkout_ambiguous_remote_branch_name;
 | 
						|
extern int advice_nested_tag;
 | 
						|
extern int advice_submodule_alternate_error_strategy_die;
 | 
						|
 | 
						|
int git_default_advice_config(const char *var, const char *value);
 | 
						|
__attribute__((format (printf, 1, 2)))
 | 
						|
void advise(const char *advice, ...);
 | 
						|
int error_resolve_conflict(const char *me);
 | 
						|
void NORETURN die_resolve_conflict(const char *me);
 | 
						|
void NORETURN die_conclude_merge(void);
 | 
						|
void detach_advice(const char *new_name);
 | 
						|
 | 
						|
#endif /* ADVICE_H */
 |