git: update to v2.41.0

Update to git version v2.41.0, with lots of changes...
This requires changes for these upstream commits:

* 60ff56f50372c1498718938ef504e744fe011ffb
  banned.h: mark `strtok()` and `strtok_r()` as banned

* 52acddf36c8cb3778ab2098a0d95cc2e375a4069
  string-list: multi-delimiter `string_list_split_in_place()`

* d850b7a545fcfbd97460a921c7f7c59d933eb0f7
  cocci: apply the "cache.h" part of "the_repository.pending"

* cb338c23d6d518947bf6f7240bf30e2ec232bd3b
  cocci: apply the "commit-reach.h" part of "the_repository.pending"

* ecb5091fd4301ac647db0bd2504112b38f7ee06d
  cocci: apply the "commit.h" part of "the_repository.pending"

* 085390328f5fe1dfba67039b1fd6cc51546a4e41
  cocci: apply the "diff.h" part of "the_repository.pending"

* bc726bd075929aab6b3e09d4dd5c2b0726fd5350
  cocci: apply the "object-store.h" part of "the_repository.pending"

* bab821646a74c446370fa8d01ca851f247df5033
  cocci: apply the "pretty.h" part of "the_repository.pending"

* afe27c889429438829bc8818ed17e4960bd3ef02
  cocci: apply the "packfile.h" part of "the_repository.pending"

* 12cb1c10a64170a5d600dd1c6c8abfeec105fb6b
  cocci: apply the "refs.h" part of "the_repository.pending"

* 035c7de9e9ea11d26df5f9e4bb117f91ed11a9fd
  cocci: apply the "revision.h" part of "the_repository.pending"

... and some more I missed to list 😜 - for example the move and cleanup
of headers and includes (see changes in `cgit.h`) comes to mind...

Signed-off-by: Christian Hesse <mail@eworm.de>
This commit is contained in:
Christian Hesse 2023-05-16 17:02:27 +02:00
parent 0e6744b308
commit a6da40bf84
19 changed files with 80 additions and 71 deletions

View File

@ -14,7 +14,7 @@ htmldir = $(docdir)
pdfdir = $(docdir)
mandir = $(prefix)/share/man
SHA1_HEADER = <openssl/sha.h>
GIT_VER = 2.40.1
GIT_VER = 2.41.0
GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz
INSTALL = install
COPYTREE = cp -r

2
cgit.c
View File

@ -631,7 +631,7 @@ static int prepare_repo_cmd(int nongit)
return 1;
}
if (get_oid(ctx.qry.head, &oid)) {
if (repo_get_oid(the_repository, ctx.qry.head, &oid)) {
char *old_head = ctx.qry.head;
ctx.qry.head = xstrdup(ctx.repo->defbranch);
cgit_print_error_page(404, "Not found",

34
cgit.h
View File

@ -1,31 +1,35 @@
#ifndef CGIT_H
#define CGIT_H
#include <git-compat-util.h>
#include <stdbool.h>
#include <git-compat-util.h>
#include <archive.h>
#include <cache.h>
#include <grep.h>
#include <object.h>
#include <object-store.h>
#include <tree.h>
#include <commit.h>
#include <tag.h>
#include <diff.h>
#include <diffcore.h>
#include <strvec.h>
#include <diff.h>
#include <environment.h>
#include <graph.h>
#include <grep.h>
#include <hex.h>
#include <log-tree.h>
#include <notes.h>
#include <object.h>
#include <object-name.h>
#include <object-store.h>
#include <refs.h>
#include <revision.h>
#include <log-tree.h>
#include <archive.h>
#include <setup.h>
#include <string-list.h>
#include <strvec.h>
#include <tag.h>
#include <tree.h>
#include <utf8.h>
#include <wrapper.h>
#include <xdiff-interface.h>
#include <xdiff/xdiff.h>
#include <utf8.h>
#include <notes.h>
#include <graph.h>
#include <inttypes.h>
/* Add isgraph(x) to Git's sane ctype support (see git-compat-util.h) */
#undef isgraph

2
git

@ -1 +1 @@
Subproject commit 0d1bd1dfb37ef25e1911777c94129fc769ffec38
Subproject commit fe86abd7511a9a6862d5706c6fa1d9b57a63ba09

View File

@ -198,7 +198,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag)
const char *p;
struct taginfo *ret = NULL;
data = read_object_file(&tag->object.oid, &type, &size);
data = repo_read_object_file(the_repository, &tag->object.oid, &type, &size);
if (!data || type != OBJ_TAG)
goto cleanup;

View File

@ -241,7 +241,7 @@ static int load_mmfile(mmfile_t *file, const struct object_id *oid)
file->ptr = (char *)"";
file->size = 0;
} else {
file->ptr = read_object_file(oid, &type,
file->ptr = repo_read_object_file(the_repository, oid, &type,
(unsigned long *)&file->size);
}
return 1;
@ -343,7 +343,7 @@ void cgit_diff_tree(const struct object_id *old_oid,
struct diff_options opt;
struct pathspec_item *item;
diff_setup(&opt);
repo_diff_setup(the_repository, &opt);
opt.output_format = DIFF_FORMAT_CALLBACK;
opt.detect_rename = 1;
opt.rename_limit = ctx.cfg.renamelimit;
@ -539,7 +539,9 @@ char *expand_macros(const char *txt)
char *get_mimetype_for_filename(const char *filename)
{
char *ext, *mimetype, *token, line[1024], *saveptr;
char *ext, *mimetype, line[1024];
struct string_list list = STRING_LIST_INIT_NODUP;
int i;
FILE *file;
struct string_list_item *mime;
@ -564,13 +566,16 @@ char *get_mimetype_for_filename(const char *filename)
while (fgets(line, sizeof(line), file)) {
if (!line[0] || line[0] == '#')
continue;
mimetype = strtok_r(line, " \t\r\n", &saveptr);
while ((token = strtok_r(NULL, " \t\r\n", &saveptr))) {
if (!strcasecmp(ext, token)) {
string_list_split_in_place(&list, line, " \t\r\n", -1);
string_list_remove_empty_items(&list, 0);
mimetype = list.items[0].string;
for (i = 1; i < list.nr; i++) {
if (!strcasecmp(ext, list.items[i].string)) {
fclose(file);
return xstrdup(mimetype);
}
}
string_list_clear(&list, 0);
}
fclose(file);
return NULL;

View File

@ -97,7 +97,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count)
argv[argc++] = path;
}
init_revisions(&rev, NULL);
repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT;
rev.verbose_header = 1;

View File

@ -49,12 +49,12 @@ static void emit_blame_entry_hash(struct blame_entry *ent)
char *detail = emit_suspect_detail(suspect);
html("<span class='oid'>");
cgit_commit_link(find_unique_abbrev(oid, DEFAULT_ABBREV), detail,
cgit_commit_link(repo_find_unique_abbrev(the_repository, oid, DEFAULT_ABBREV), detail,
NULL, ctx.qry.head, oid_to_hex(oid), suspect->path);
html("</span>");
free(detail);
if (!parse_commit(suspect->commit) && suspect->commit->parents) {
if (!repo_parse_commit(the_repository, suspect->commit) && suspect->commit->parents) {
struct commit *parent = suspect->commit->parents->item;
html(" ");
@ -126,7 +126,7 @@ static void print_object(const struct object_id *oid, const char *path,
return;
}
buf = read_object_file(oid, &type, &size);
buf = repo_read_object_file(the_repository, oid, &type, &size);
if (!buf) {
cgit_print_error_page(500, "Internal server error",
"Error reading object %s", oid_to_hex(oid));
@ -135,7 +135,7 @@ static void print_object(const struct object_id *oid, const char *path,
strvec_push(&rev_argv, "blame");
strvec_push(&rev_argv, rev);
init_revisions(&revs, NULL);
repo_init_revisions(the_repository, &revs, NULL);
revs.diffopt.flags.allow_textconv = 1;
setup_revisions(rev_argv.nr, rev_argv.v, &revs, NULL);
init_scoreboard(&sb);
@ -287,13 +287,13 @@ void cgit_print_blame(void)
if (!rev)
rev = ctx.qry.head;
if (get_oid(rev, &oid)) {
if (repo_get_oid(the_repository, rev, &oid)) {
cgit_print_error_page(404, "Not found",
"Invalid revision name: %s", rev);
return;
}
commit = lookup_commit_reference(the_repository, &oid);
if (!commit || parse_commit(commit)) {
if (!commit || repo_parse_commit(the_repository, commit)) {
cgit_print_error_page(404, "Not found",
"Invalid commit reference: %s", rev);
return;

View File

@ -52,7 +52,7 @@ int cgit_ref_path_exists(const char *path, const char *ref, int file_only)
.file_only = file_only
};
if (get_oid(ref, &oid))
if (repo_get_oid(the_repository, ref, &oid))
goto done;
if (oid_object_info(the_repository, &oid, &size) != OBJ_COMMIT)
goto done;
@ -87,7 +87,7 @@ int cgit_print_file(char *path, const char *head, int file_only)
.file_only = file_only
};
if (get_oid(head, &oid))
if (repo_get_oid(the_repository, head, &oid))
return -1;
type = oid_object_info(the_repository, &oid, &size);
if (type == OBJ_COMMIT) {
@ -100,7 +100,7 @@ int cgit_print_file(char *path, const char *head, int file_only)
}
if (type == OBJ_BAD)
return -1;
buf = read_object_file(&oid, &type, &size);
buf = repo_read_object_file(the_repository, &oid, &type, &size);
if (!buf)
return -1;
buf[size] = '\0';
@ -138,7 +138,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl
return;
}
} else {
if (get_oid(head, &oid)) {
if (repo_get_oid(the_repository, head, &oid)) {
cgit_print_error_page(404, "Not found",
"Bad ref: %s", head);
return;
@ -160,7 +160,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl
return;
}
buf = read_object_file(&oid, &type, &size);
buf = repo_read_object_file(the_repository, &oid, &type, &size);
if (!buf) {
cgit_print_error_page(500, "Internal server error",
"Error reading object %s", hex);

View File

@ -26,7 +26,7 @@ void cgit_print_commit(char *hex, const char *prefix)
if (!hex)
hex = ctx.qry.head;
if (get_oid(hex, &oid)) {
if (repo_get_oid(the_repository, hex, &oid)) {
cgit_print_error_page(400, "Bad request",
"Bad object id: %s", hex);
return;

View File

@ -258,8 +258,8 @@ static void header(const struct object_id *oid1, char *path1, int mode1,
htmlf("<br/>deleted file mode %.6o", mode1);
if (!subproject) {
abbrev1 = xstrdup(find_unique_abbrev(oid1, DEFAULT_ABBREV));
abbrev2 = xstrdup(find_unique_abbrev(oid2, DEFAULT_ABBREV));
abbrev1 = xstrdup(repo_find_unique_abbrev(the_repository, oid1, DEFAULT_ABBREV));
abbrev2 = xstrdup(repo_find_unique_abbrev(the_repository, oid2, DEFAULT_ABBREV));
htmlf("<br/>index %s..%s", abbrev1, abbrev2);
free(abbrev1);
free(abbrev2);
@ -402,13 +402,13 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
if (!new_rev)
new_rev = ctx.qry.head;
if (get_oid(new_rev, new_rev_oid)) {
if (repo_get_oid(the_repository, new_rev, new_rev_oid)) {
cgit_print_error_page(404, "Not found",
"Bad object name: %s", new_rev);
return;
}
commit = lookup_commit_reference(the_repository, new_rev_oid);
if (!commit || parse_commit(commit)) {
if (!commit || repo_parse_commit(the_repository, commit)) {
cgit_print_error_page(404, "Not found",
"Bad commit: %s", oid_to_hex(new_rev_oid));
return;
@ -416,7 +416,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
new_tree_oid = get_commit_tree_oid(commit);
if (old_rev) {
if (get_oid(old_rev, old_rev_oid)) {
if (repo_get_oid(the_repository, old_rev, old_rev_oid)) {
cgit_print_error_page(404, "Not found",
"Bad object name: %s", old_rev);
return;
@ -429,7 +429,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
if (!is_null_oid(old_rev_oid)) {
commit2 = lookup_commit_reference(the_repository, old_rev_oid);
if (!commit2 || parse_commit(commit2)) {
if (!commit2 || repo_parse_commit(the_repository, commit2)) {
cgit_print_error_page(404, "Not found",
"Bad commit: %s", oid_to_hex(old_rev_oid));
return;
@ -442,7 +442,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
if (raw) {
struct diff_options diffopt;
diff_setup(&diffopt);
repo_diff_setup(the_repository, &diffopt);
diffopt.output_format = DIFF_FORMAT_PATCH;
diffopt.flags.recursive = 1;
diff_setup_done(&diffopt);

View File

@ -146,7 +146,7 @@ static int show_commit(struct commit *commit, struct rev_info *revs)
/* When we get here we have precisely one parent. */
parent = parents->item;
/* If we can't parse the commit, let print_commit() report an error. */
if (parse_commit(parent))
if (repo_parse_commit(the_repository, parent))
return 1;
files = 0;
@ -330,7 +330,7 @@ static const char *disambiguate_ref(const char *ref, int *must_free_result)
struct strbuf longref = STRBUF_INIT;
strbuf_addf(&longref, "refs/heads/%s", ref);
if (get_oid(longref.buf, &oid) == 0) {
if (repo_get_oid(the_repository, longref.buf, &oid) == 0) {
*must_free_result = 1;
return strbuf_detach(&longref, NULL);
}
@ -430,7 +430,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
if (path)
strvec_push(&rev_argv, path);
init_revisions(&rev, NULL);
repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT;
rev.verbose_header = 1;

View File

@ -31,7 +31,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
if (!new_rev)
new_rev = ctx.qry.head;
if (get_oid(new_rev, &new_rev_oid)) {
if (repo_get_oid(the_repository, new_rev, &new_rev_oid)) {
cgit_print_error_page(404, "Not found",
"Bad object id: %s", new_rev);
return;
@ -44,7 +44,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
}
if (old_rev) {
if (get_oid(old_rev, &old_rev_oid)) {
if (repo_get_oid(the_repository, old_rev, &old_rev_oid)) {
cgit_print_error_page(404, "Not found",
"Bad object id: %s", old_rev);
return;
@ -78,7 +78,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
"%s%n%n%w(0)%b";
}
init_revisions(&rev, NULL);
repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.verbose_header = 1;
rev.diff = 1;

View File

@ -28,7 +28,7 @@ static int print_object(const struct object_id *oid, const char *path)
return 0;
}
buf = read_object_file(oid, &type, &size);
buf = repo_read_object_file(the_repository, oid, &type, &size);
if (!buf) {
cgit_print_error_page(404, "Not found", "Not found");
return 0;
@ -181,12 +181,12 @@ void cgit_print_plain(void)
if (!rev)
rev = ctx.qry.head;
if (get_oid(rev, &oid)) {
if (repo_get_oid(the_repository, rev, &oid)) {
cgit_print_error_page(404, "Not found", "Not found");
return;
}
commit = lookup_commit_reference(the_repository, &oid);
if (!commit || parse_commit(commit)) {
if (!commit || repo_parse_commit(the_repository, commit)) {
cgit_print_error_page(404, "Not found", "Not found");
return;
}

View File

@ -1188,11 +1188,11 @@ void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,
* name starts with {v,V}[0-9] and the prettify mapping is injective,
* i.e. each stripped tag can be inverted without ambiguities.
*/
if (get_oid(fmt("refs/tags/%s", ref), &oid) == 0 &&
if (repo_get_oid(the_repository, fmt("refs/tags/%s", ref), &oid) == 0 &&
(ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]) &&
((get_oid(fmt("refs/tags/%s", ref + 1), &oid) == 0) +
(get_oid(fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
(get_oid(fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
((repo_get_oid(the_repository, fmt("refs/tags/%s", ref + 1), &oid) == 0) +
(repo_get_oid(the_repository, fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
(repo_get_oid(the_repository, fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
ref++;
strbuf_addf(filename, "%s-%s", base, ref);

View File

@ -117,7 +117,7 @@ const struct object_id *cgit_snapshot_get_sig(const char *ref,
struct notes_tree *tree;
struct object_id oid;
if (get_oid(ref, &oid))
if (repo_get_oid(the_repository, ref, &oid))
return NULL;
tree = &snapshot_sig_notes[f - &cgit_snapshot_formats[0]];
@ -156,7 +156,7 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
{
struct object_id oid;
if (get_oid(hex, &oid)) {
if (repo_get_oid(the_repository, hex, &oid)) {
cgit_print_error_page(404, "Not found",
"Bad object id: %s", hex);
return 1;
@ -190,7 +190,7 @@ static int write_sig(const struct cgit_snapshot_format *format,
return 0;
}
buf = read_object_file(note, &type, &size);
buf = repo_read_object_file(the_repository, note, &type, &size);
if (!buf) {
cgit_print_error_page(404, "Not found", "Not found");
return 0;
@ -230,7 +230,7 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,
strbuf_addstr(&snapshot, filename);
strbuf_setlen(&snapshot, snapshot.len - strlen(format->suffix));
if (get_oid(snapshot.buf, &oid) == 0)
if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
goto out;
reponame = cgit_snapshot_prefix(repo);
@ -242,15 +242,15 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,
strbuf_splice(&snapshot, 0, new_start - snapshot.buf, "", 0);
}
if (get_oid(snapshot.buf, &oid) == 0)
if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
goto out;
strbuf_insert(&snapshot, 0, "v", 1);
if (get_oid(snapshot.buf, &oid) == 0)
if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
goto out;
strbuf_splice(&snapshot, 0, 1, "V", 1);
if (get_oid(snapshot.buf, &oid) == 0)
if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
goto out;
result = 0;

View File

@ -230,7 +230,7 @@ static struct string_list collect_stats(const struct cgit_period *period)
argv[4] = ctx.qry.path;
argc += 2;
}
init_revisions(&rev, NULL);
repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = DEFAULT_ABBREV;
rev.commit_format = CMIT_FMT_DEFAULT;
rev.max_parents = 1;

View File

@ -48,7 +48,7 @@ void cgit_print_tag(char *revname)
revname = ctx.qry.head;
strbuf_addf(&fullref, "refs/tags/%s", revname);
if (get_oid(fullref.buf, &oid)) {
if (repo_get_oid(the_repository, fullref.buf, &oid)) {
cgit_print_error_page(404, "Not found",
"Bad tag reference: %s", revname);
goto cleanup;

View File

@ -98,7 +98,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
return;
}
buf = read_object_file(oid, &type, &size);
buf = repo_read_object_file(the_repository, oid, &type, &size);
if (!buf) {
cgit_print_error_page(500, "Internal server error",
"Error reading object %s", oid_to_hex(oid));
@ -242,7 +242,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base,
}
if (S_ISLNK(mode)) {
html(" -> ");
buf = read_object_file(oid, &type, &size);
buf = repo_read_object_file(the_repository, oid, &type, &size);
if (!buf) {
htmlf("Error reading object: %s", oid_to_hex(oid));
goto cleanup;
@ -372,13 +372,13 @@ void cgit_print_tree(const char *rev, char *path)
if (!rev)
rev = ctx.qry.head;
if (get_oid(rev, &oid)) {
if (repo_get_oid(the_repository, rev, &oid)) {
cgit_print_error_page(404, "Not found",
"Invalid revision name: %s", rev);
return;
}
commit = lookup_commit_reference(the_repository, &oid);
if (!commit || parse_commit(commit)) {
if (!commit || repo_parse_commit(the_repository, commit)) {
cgit_print_error_page(404, "Not found",
"Invalid commit reference: %s", rev);
return;