Thanks for this. It'll be curious to give this a spin with a sha256 repo...
On Mon, Oct 19, 2020 at 8:36 PM Christian Hesse <l...@eworm.de> wrote: > > From: Christian Hesse <m...@eworm.de> > > Update to git version v2.29.0, this requires changes for these > upstream commits: > > * dbbcd44fb47347a3fdbee88ea21805b7f4ac0b98 > strvec: rename files from argv-array to strvec > > * 873cd28a8b17ff21908c78c7929a7615f8c94992 > argv-array: rename to strvec > > * d70a9eb611a9d242c1d26847d223b8677609305b > strvec: rename struct fields > > * 6a67c759489e1025665adf78326e9e0d0981bab5 > test-lib-functions: restrict test_must_fail usage > > Signed-off-by: Christian Hesse <m...@eworm.de> > --- > Makefile | 2 +- > cgit.h | 2 +- > git | 2 +- > tests/t0109-gitconfig.sh | 2 +- > ui-blame.c | 10 +++++----- > ui-log.c | 30 +++++++++++++++--------------- > ui-snapshot.c | 24 ++++++++++++------------ > 7 files changed, 36 insertions(+), 36 deletions(-) > > diff --git a/Makefile b/Makefile > index 84822f0..c947b63 100644 > --- a/Makefile > +++ b/Makefile > @@ -14,7 +14,7 @@ htmldir = $(docdir) > pdfdir = $(docdir) > mandir = $(prefix)/share/man > SHA1_HEADER = <openssl/sha.h> > -GIT_VER = 2.28.0 > +GIT_VER = 2.29.0 > GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz > INSTALL = install > COPYTREE = cp -r > diff --git a/cgit.h b/cgit.h > index 7ec46b4..f5db364 100644 > --- a/cgit.h > +++ b/cgit.h > @@ -14,7 +14,7 @@ > #include <tag.h> > #include <diff.h> > #include <diffcore.h> > -#include <argv-array.h> > +#include <strvec.h> > #include <refs.h> > #include <revision.h> > #include <log-tree.h> > diff --git a/git b/git > index 47ae905..69986e1 160000 > --- a/git > +++ b/git > @@ -1 +1 @@ > -Subproject commit 47ae905ffb98cc4d4fd90083da6bc8dab55d9ecc > +Subproject commit 69986e19ffcfb9af674ae5180689ab7bbf92ed28 > diff --git a/tests/t0109-gitconfig.sh b/tests/t0109-gitconfig.sh > index 8cee75c..189ef28 100755 > --- a/tests/t0109-gitconfig.sh > +++ b/tests/t0109-gitconfig.sh > @@ -25,7 +25,7 @@ test_no_home_access () { > -E CGIT_CONFIG="$PWD/cgitrc" \ > -E QUERY_STRING="url=$1" \ > -e access -f -o strace.out cgit && > - test_must_fail grep "$non_existent_path" strace.out > + ! grep "$non_existent_path" strace.out > } > > test_no_home_access_success() { > diff --git a/ui-blame.c b/ui-blame.c > index f28eea0..c3662bb 100644 > --- a/ui-blame.c > +++ b/ui-blame.c > @@ -10,7 +10,7 @@ > #include "ui-blame.h" > #include "html.h" > #include "ui-shared.h" > -#include "argv-array.h" > +#include "strvec.h" > #include "blame.h" > > > @@ -104,7 +104,7 @@ static void print_object(const struct object_id *oid, > const char *path, > enum object_type type; > char *buf; > unsigned long size; > - struct argv_array rev_argv = ARGV_ARRAY_INIT; > + struct strvec rev_argv = STRVEC_INIT; > struct rev_info revs; > struct blame_scoreboard sb; > struct blame_origin *o; > @@ -124,11 +124,11 @@ static void print_object(const struct object_id *oid, > const char *path, > return; > } > > - argv_array_push(&rev_argv, "blame"); > - argv_array_push(&rev_argv, rev); > + strvec_push(&rev_argv, "blame"); > + strvec_push(&rev_argv, rev); > init_revisions(&revs, NULL); > revs.diffopt.flags.allow_textconv = 1; > - setup_revisions(rev_argv.argc, rev_argv.argv, &revs, NULL); > + setup_revisions(rev_argv.nr, rev_argv.v, &revs, NULL); > init_scoreboard(&sb); > sb.revs = &revs; > sb.repo = the_repository; > diff --git a/ui-log.c b/ui-log.c > index 2939c01..fd07409 100644 > --- a/ui-log.c > +++ b/ui-log.c > @@ -10,7 +10,7 @@ > #include "ui-log.h" > #include "html.h" > #include "ui-shared.h" > -#include "argv-array.h" > +#include "strvec.h" > > static int files, add_lines, rem_lines, lines_counted; > > @@ -366,23 +366,23 @@ void cgit_print_log(const char *tip, int ofs, int cnt, > char *grep, char *pattern > { > struct rev_info rev; > struct commit *commit; > - struct argv_array rev_argv = ARGV_ARRAY_INIT; > + struct strvec rev_argv = STRVEC_INIT; > int i, columns = commit_graph ? 4 : 3; > int must_free_tip = 0; > > /* rev_argv.argv[0] will be ignored by setup_revisions */ > - argv_array_push(&rev_argv, "log_rev_setup"); > + strvec_push(&rev_argv, "log_rev_setup"); > > if (!tip) > tip = ctx.qry.head; > tip = disambiguate_ref(tip, &must_free_tip); > - argv_array_push(&rev_argv, tip); > + strvec_push(&rev_argv, tip); > > if (grep && pattern && *pattern) { > pattern = xstrdup(pattern); > if (!strcmp(grep, "grep") || !strcmp(grep, "author") || > !strcmp(grep, "committer")) { > - argv_array_pushf(&rev_argv, "--%s=%s", grep, pattern); > + strvec_pushf(&rev_argv, "--%s=%s", grep, pattern); > } else if (!strcmp(grep, "range")) { > char *arg; > /* Split the pattern at whitespace and add each token > @@ -390,14 +390,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, > char *grep, char *pattern > * rev-list options. Also, replace the previously > * pushed tip (it's no longer relevant). > */ > - argv_array_pop(&rev_argv); > + strvec_pop(&rev_argv); > while ((arg = next_token(&pattern))) { > if (*arg == '-') { > fprintf(stderr, "Bad range expr: > %s\n", > arg); > break; > } > - argv_array_push(&rev_argv, arg); > + strvec_push(&rev_argv, arg); > } > } > } > @@ -412,22 +412,22 @@ void cgit_print_log(const char *tip, int ofs, int cnt, > char *grep, char *pattern > } > > if (commit_graph && !ctx.qry.follow) { > - argv_array_push(&rev_argv, "--graph"); > - argv_array_push(&rev_argv, "--color"); > + strvec_push(&rev_argv, "--graph"); > + strvec_push(&rev_argv, "--color"); > graph_set_column_colors(column_colors_html, > COLUMN_COLORS_HTML_MAX); > } > > if (commit_sort == 1) > - argv_array_push(&rev_argv, "--date-order"); > + strvec_push(&rev_argv, "--date-order"); > else if (commit_sort == 2) > - argv_array_push(&rev_argv, "--topo-order"); > + strvec_push(&rev_argv, "--topo-order"); > > if (path && ctx.qry.follow) > - argv_array_push(&rev_argv, "--follow"); > - argv_array_push(&rev_argv, "--"); > + strvec_push(&rev_argv, "--follow"); > + strvec_push(&rev_argv, "--"); > if (path) > - argv_array_push(&rev_argv, path); > + strvec_push(&rev_argv, path); > > init_revisions(&rev, NULL); > rev.abbrev = DEFAULT_ABBREV; > @@ -436,7 +436,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, > char *grep, char *pattern > rev.show_root_diff = 0; > rev.ignore_missing = 1; > rev.simplify_history = 1; > - setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL); > + setup_revisions(rev_argv.nr, rev_argv.v, &rev, NULL); > load_ref_decorations(NULL, DECORATE_FULL_REFS); > rev.show_decorations = 1; > rev.grep_filter.ignore_case = 1; > diff --git a/ui-snapshot.c b/ui-snapshot.c > index 556d3ed..18361a6 100644 > --- a/ui-snapshot.c > +++ b/ui-snapshot.c > @@ -13,32 +13,32 @@ > > static int write_archive_type(const char *format, const char *hex, const > char *prefix) > { > - struct argv_array argv = ARGV_ARRAY_INIT; > + struct strvec argv = STRVEC_INIT; > const char **nargv; > int result; > - argv_array_push(&argv, "snapshot"); > - argv_array_push(&argv, format); > + strvec_push(&argv, "snapshot"); > + strvec_push(&argv, format); > if (prefix) { > struct strbuf buf = STRBUF_INIT; > strbuf_addstr(&buf, prefix); > strbuf_addch(&buf, '/'); > - argv_array_push(&argv, "--prefix"); > - argv_array_push(&argv, buf.buf); > + strvec_push(&argv, "--prefix"); > + strvec_push(&argv, buf.buf); > strbuf_release(&buf); > } > - argv_array_push(&argv, hex); > + strvec_push(&argv, hex); > /* > * Now we need to copy the pointers to arguments into a new > * structure because write_archive will rearrange its arguments > * which may result in duplicated/missing entries causing leaks > - * or double-frees in argv_array_clear. > + * or double-frees in strvec_clear. > */ > - nargv = xmalloc(sizeof(char *) * (argv.argc + 1)); > - /* argv_array guarantees a trailing NULL entry. */ > - memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1)); > + nargv = xmalloc(sizeof(char *) * (argv.nr + 1)); > + /* strvec guarantees a trailing NULL entry. */ > + memcpy(nargv, argv.v, sizeof(char *) * (argv.nr + 1)); > > - result = write_archive(argv.argc, nargv, NULL, the_repository, NULL, > 0); > - argv_array_clear(&argv); > + result = write_archive(argv.nr, nargv, NULL, the_repository, NULL, 0); > + strvec_clear(&argv); > free(nargv); > return result; > }