mirror of
https://github.com/git/git
synced 2024-10-03 23:29:36 +00:00
extension.partialclone: introduce partial clone extension
Introduce new repository extension option: `extensions.partialclone` See the update to Documentation/technical/repository-version.txt in this patch for more information. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f4371a883f
commit
75b97fec17
|
@ -86,3 +86,15 @@ for testing format-1 compatibility.
|
||||||
When the config key `extensions.preciousObjects` is set to `true`,
|
When the config key `extensions.preciousObjects` is set to `true`,
|
||||||
objects in the repository MUST NOT be deleted (e.g., by `git-prune` or
|
objects in the repository MUST NOT be deleted (e.g., by `git-prune` or
|
||||||
`git repack -d`).
|
`git repack -d`).
|
||||||
|
|
||||||
|
`partialclone`
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When the config key `extensions.partialclone` is set, it indicates
|
||||||
|
that the repo was created with a partial clone (or later performed
|
||||||
|
a partial fetch) and that the remote may have omitted sending
|
||||||
|
certain unwanted objects. Such a remote is called a "promisor remote"
|
||||||
|
and it promises that all such omitted objects can be fetched from it
|
||||||
|
in the future.
|
||||||
|
|
||||||
|
The value of this key is the name of the promisor remote.
|
||||||
|
|
2
cache.h
2
cache.h
|
@ -860,10 +860,12 @@ extern int grafts_replace_parents;
|
||||||
#define GIT_REPO_VERSION 0
|
#define GIT_REPO_VERSION 0
|
||||||
#define GIT_REPO_VERSION_READ 1
|
#define GIT_REPO_VERSION_READ 1
|
||||||
extern int repository_format_precious_objects;
|
extern int repository_format_precious_objects;
|
||||||
|
extern char *repository_format_partial_clone;
|
||||||
|
|
||||||
struct repository_format {
|
struct repository_format {
|
||||||
int version;
|
int version;
|
||||||
int precious_objects;
|
int precious_objects;
|
||||||
|
char *partial_clone; /* value of extensions.partialclone */
|
||||||
int is_bare;
|
int is_bare;
|
||||||
char *work_tree;
|
char *work_tree;
|
||||||
struct string_list unknown_extensions;
|
struct string_list unknown_extensions;
|
||||||
|
|
|
@ -27,6 +27,7 @@ int warn_ambiguous_refs = 1;
|
||||||
int warn_on_object_refname_ambiguity = 1;
|
int warn_on_object_refname_ambiguity = 1;
|
||||||
int ref_paranoia = -1;
|
int ref_paranoia = -1;
|
||||||
int repository_format_precious_objects;
|
int repository_format_precious_objects;
|
||||||
|
char *repository_format_partial_clone;
|
||||||
const char *git_commit_encoding;
|
const char *git_commit_encoding;
|
||||||
const char *git_log_output_encoding;
|
const char *git_log_output_encoding;
|
||||||
const char *apply_default_whitespace;
|
const char *apply_default_whitespace;
|
||||||
|
|
7
setup.c
7
setup.c
|
@ -420,7 +420,11 @@ static int check_repo_format(const char *var, const char *value, void *vdata)
|
||||||
;
|
;
|
||||||
else if (!strcmp(ext, "preciousobjects"))
|
else if (!strcmp(ext, "preciousobjects"))
|
||||||
data->precious_objects = git_config_bool(var, value);
|
data->precious_objects = git_config_bool(var, value);
|
||||||
else
|
else if (!strcmp(ext, "partialclone")) {
|
||||||
|
if (!value)
|
||||||
|
return config_error_nonbool(var);
|
||||||
|
data->partial_clone = xstrdup(value);
|
||||||
|
} else
|
||||||
string_list_append(&data->unknown_extensions, ext);
|
string_list_append(&data->unknown_extensions, ext);
|
||||||
} else if (strcmp(var, "core.bare") == 0) {
|
} else if (strcmp(var, "core.bare") == 0) {
|
||||||
data->is_bare = git_config_bool(var, value);
|
data->is_bare = git_config_bool(var, value);
|
||||||
|
@ -463,6 +467,7 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
repository_format_precious_objects = candidate.precious_objects;
|
repository_format_precious_objects = candidate.precious_objects;
|
||||||
|
repository_format_partial_clone = candidate.partial_clone;
|
||||||
string_list_clear(&candidate.unknown_extensions, 0);
|
string_list_clear(&candidate.unknown_extensions, 0);
|
||||||
if (!has_common) {
|
if (!has_common) {
|
||||||
if (candidate.is_bare != -1) {
|
if (candidate.is_bare != -1) {
|
||||||
|
|
Loading…
Reference in a new issue