revert(3p/git): Revert merge of git upstream at v2.26.2
This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
This commit is contained in:
parent
6f8fbf4aa4
commit
93ba78d6f4
1006 changed files with 60537 additions and 148724 deletions
88
third_party/git/submodule-config.c
vendored
88
third_party/git/submodule-config.c
vendored
|
|
@ -38,28 +38,24 @@ enum lookup_type {
|
|||
};
|
||||
|
||||
static int config_path_cmp(const void *unused_cmp_data,
|
||||
const struct hashmap_entry *eptr,
|
||||
const struct hashmap_entry *entry_or_key,
|
||||
const void *entry,
|
||||
const void *entry_or_key,
|
||||
const void *unused_keydata)
|
||||
{
|
||||
const struct submodule_entry *a, *b;
|
||||
|
||||
a = container_of(eptr, const struct submodule_entry, ent);
|
||||
b = container_of(entry_or_key, const struct submodule_entry, ent);
|
||||
const struct submodule_entry *a = entry;
|
||||
const struct submodule_entry *b = entry_or_key;
|
||||
|
||||
return strcmp(a->config->path, b->config->path) ||
|
||||
!oideq(&a->config->gitmodules_oid, &b->config->gitmodules_oid);
|
||||
}
|
||||
|
||||
static int config_name_cmp(const void *unused_cmp_data,
|
||||
const struct hashmap_entry *eptr,
|
||||
const struct hashmap_entry *entry_or_key,
|
||||
const void *entry,
|
||||
const void *entry_or_key,
|
||||
const void *unused_keydata)
|
||||
{
|
||||
const struct submodule_entry *a, *b;
|
||||
|
||||
a = container_of(eptr, const struct submodule_entry, ent);
|
||||
b = container_of(entry_or_key, const struct submodule_entry, ent);
|
||||
const struct submodule_entry *a = entry;
|
||||
const struct submodule_entry *b = entry_or_key;
|
||||
|
||||
return strcmp(a->config->name, b->config->name) ||
|
||||
!oideq(&a->config->gitmodules_oid, &b->config->gitmodules_oid);
|
||||
|
|
@ -99,12 +95,12 @@ static void submodule_cache_clear(struct submodule_cache *cache)
|
|||
* allocation of struct submodule entries. Each is allocated by
|
||||
* their .gitmodules blob sha1 and submodule name.
|
||||
*/
|
||||
hashmap_for_each_entry(&cache->for_name, &iter, entry,
|
||||
ent /* member name */)
|
||||
hashmap_iter_init(&cache->for_name, &iter);
|
||||
while ((entry = hashmap_iter_next(&iter)))
|
||||
free_one_config(entry);
|
||||
|
||||
hashmap_free_entries(&cache->for_path, struct submodule_entry, ent);
|
||||
hashmap_free_entries(&cache->for_name, struct submodule_entry, ent);
|
||||
hashmap_free(&cache->for_path, 1);
|
||||
hashmap_free(&cache->for_name, 1);
|
||||
cache->initialized = 0;
|
||||
cache->gitmodules_read = 0;
|
||||
}
|
||||
|
|
@ -127,9 +123,9 @@ static void cache_put_path(struct submodule_cache *cache,
|
|||
unsigned int hash = hash_oid_string(&submodule->gitmodules_oid,
|
||||
submodule->path);
|
||||
struct submodule_entry *e = xmalloc(sizeof(*e));
|
||||
hashmap_entry_init(&e->ent, hash);
|
||||
hashmap_entry_init(e, hash);
|
||||
e->config = submodule;
|
||||
hashmap_put(&cache->for_path, &e->ent);
|
||||
hashmap_put(&cache->for_path, e);
|
||||
}
|
||||
|
||||
static void cache_remove_path(struct submodule_cache *cache,
|
||||
|
|
@ -139,9 +135,9 @@ static void cache_remove_path(struct submodule_cache *cache,
|
|||
submodule->path);
|
||||
struct submodule_entry e;
|
||||
struct submodule_entry *removed;
|
||||
hashmap_entry_init(&e.ent, hash);
|
||||
hashmap_entry_init(&e, hash);
|
||||
e.config = submodule;
|
||||
removed = hashmap_remove_entry(&cache->for_path, &e, ent, NULL);
|
||||
removed = hashmap_remove(&cache->for_path, &e, NULL);
|
||||
free(removed);
|
||||
}
|
||||
|
||||
|
|
@ -151,9 +147,9 @@ static void cache_add(struct submodule_cache *cache,
|
|||
unsigned int hash = hash_oid_string(&submodule->gitmodules_oid,
|
||||
submodule->name);
|
||||
struct submodule_entry *e = xmalloc(sizeof(*e));
|
||||
hashmap_entry_init(&e->ent, hash);
|
||||
hashmap_entry_init(e, hash);
|
||||
e->config = submodule;
|
||||
hashmap_add(&cache->for_name, &e->ent);
|
||||
hashmap_add(&cache->for_name, e);
|
||||
}
|
||||
|
||||
static const struct submodule *cache_lookup_path(struct submodule_cache *cache,
|
||||
|
|
@ -167,10 +163,10 @@ static const struct submodule *cache_lookup_path(struct submodule_cache *cache,
|
|||
oidcpy(&key_config.gitmodules_oid, gitmodules_oid);
|
||||
key_config.path = path;
|
||||
|
||||
hashmap_entry_init(&key.ent, hash);
|
||||
hashmap_entry_init(&key, hash);
|
||||
key.config = &key_config;
|
||||
|
||||
entry = hashmap_get_entry(&cache->for_path, &key, ent, NULL);
|
||||
entry = hashmap_get(&cache->for_path, &key, NULL);
|
||||
if (entry)
|
||||
return entry->config;
|
||||
return NULL;
|
||||
|
|
@ -187,10 +183,10 @@ static struct submodule *cache_lookup_name(struct submodule_cache *cache,
|
|||
oidcpy(&key_config.gitmodules_oid, gitmodules_oid);
|
||||
key_config.name = name;
|
||||
|
||||
hashmap_entry_init(&key.ent, hash);
|
||||
hashmap_entry_init(&key, hash);
|
||||
key.config = &key_config;
|
||||
|
||||
entry = hashmap_get_entry(&cache->for_name, &key, ent, NULL);
|
||||
entry = hashmap_get(&cache->for_name, &key, NULL);
|
||||
if (entry)
|
||||
return entry->config;
|
||||
return NULL;
|
||||
|
|
@ -409,13 +405,6 @@ struct parse_config_parameter {
|
|||
int overwrite;
|
||||
};
|
||||
|
||||
/*
|
||||
* Parse a config item from .gitmodules.
|
||||
*
|
||||
* This does not handle submodule-related configuration from the main
|
||||
* config store (.git/config, etc). Callers are responsible for
|
||||
* checking for overrides in the main config store when appropriate.
|
||||
*/
|
||||
static int parse_config(const char *var, const char *value, void *data)
|
||||
{
|
||||
struct parse_config_parameter *me = data;
|
||||
|
|
@ -493,9 +482,8 @@ static int parse_config(const char *var, const char *value, void *data)
|
|||
warn_multiple_config(me->treeish_name, submodule->name,
|
||||
"update");
|
||||
else if (parse_submodule_update_strategy(value,
|
||||
&submodule->update_strategy) < 0 ||
|
||||
submodule->update_strategy.type == SM_UPDATE_COMMAND)
|
||||
die(_("invalid value for %s"), var);
|
||||
&submodule->update_strategy) < 0)
|
||||
die(_("invalid value for %s"), var);
|
||||
} else if (!strcmp(item.buf, "shallow")) {
|
||||
if (!me->overwrite && submodule->recommend_shallow != -1)
|
||||
warn_multiple_config(me->treeish_name, submodule->name,
|
||||
|
|
@ -562,9 +550,7 @@ static const struct submodule *config_from(struct submodule_cache *cache,
|
|||
struct hashmap_iter iter;
|
||||
struct submodule_entry *entry;
|
||||
|
||||
entry = hashmap_iter_first_entry(&cache->for_name, &iter,
|
||||
struct submodule_entry,
|
||||
ent /* member name */);
|
||||
entry = hashmap_iter_first(&cache->for_name, &iter);
|
||||
if (!entry)
|
||||
return NULL;
|
||||
return entry->config;
|
||||
|
|
@ -626,7 +612,7 @@ static void submodule_cache_check_init(struct repository *repo)
|
|||
|
||||
/*
|
||||
* Note: This function is private for a reason, the '.gitmodules' file should
|
||||
* not be used as a mechanism to retrieve arbitrary configuration stored in
|
||||
* not be used as as a mechanism to retrieve arbitrary configuration stored in
|
||||
* the repository.
|
||||
*
|
||||
* Runs the provided config function on the '.gitmodules' file found in the
|
||||
|
|
@ -635,9 +621,7 @@ static void submodule_cache_check_init(struct repository *repo)
|
|||
static void config_from_gitmodules(config_fn_t fn, struct repository *repo, void *data)
|
||||
{
|
||||
if (repo->worktree) {
|
||||
struct git_config_source config_source = {
|
||||
0, .scope = CONFIG_SCOPE_SUBMODULE
|
||||
};
|
||||
struct git_config_source config_source = { 0 };
|
||||
const struct config_options opts = { 0 };
|
||||
struct object_id oid;
|
||||
char *file;
|
||||
|
|
@ -676,13 +660,10 @@ static int gitmodules_cb(const char *var, const char *value, void *data)
|
|||
return parse_config(var, value, ¶meter);
|
||||
}
|
||||
|
||||
void repo_read_gitmodules(struct repository *repo, int skip_if_read)
|
||||
void repo_read_gitmodules(struct repository *repo)
|
||||
{
|
||||
submodule_cache_check_init(repo);
|
||||
|
||||
if (repo->submodule_cache->gitmodules_read && skip_if_read)
|
||||
return;
|
||||
|
||||
if (repo_read_index(repo) < 0)
|
||||
return;
|
||||
|
||||
|
|
@ -708,11 +689,20 @@ void gitmodules_config_oid(const struct object_id *commit_oid)
|
|||
the_repository->submodule_cache->gitmodules_read = 1;
|
||||
}
|
||||
|
||||
static void gitmodules_read_check(struct repository *repo)
|
||||
{
|
||||
submodule_cache_check_init(repo);
|
||||
|
||||
/* read the repo's .gitmodules file if it hasn't been already */
|
||||
if (!repo->submodule_cache->gitmodules_read)
|
||||
repo_read_gitmodules(repo);
|
||||
}
|
||||
|
||||
const struct submodule *submodule_from_name(struct repository *r,
|
||||
const struct object_id *treeish_name,
|
||||
const char *name)
|
||||
{
|
||||
repo_read_gitmodules(r, 1);
|
||||
gitmodules_read_check(r);
|
||||
return config_from(r->submodule_cache, treeish_name, name, lookup_name);
|
||||
}
|
||||
|
||||
|
|
@ -720,7 +710,7 @@ const struct submodule *submodule_from_path(struct repository *r,
|
|||
const struct object_id *treeish_name,
|
||||
const char *path)
|
||||
{
|
||||
repo_read_gitmodules(r, 1);
|
||||
gitmodules_read_check(r);
|
||||
return config_from(r->submodule_cache, treeish_name, path, lookup_path);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue