From: Jonathan Tan <jonathantanmy@google.com>
To: git@vger.kernel.org
Cc: Jonathan Tan <jonathantanmy@google.com>,
avarab@gmail.com, gitster@pobox.com
Subject: [PATCH v2 0/4] Check .gitmodules when using packfile URIs
Date: Mon, 22 Feb 2021 11:20:05 -0800 [thread overview]
Message-ID: <cover.1614021092.git.jonathantanmy@google.com> (raw)
In-Reply-To: <20210115234300.350442-1-jonathantanmy@google.com>
Here's v2. I think I've addressed all the review comments, including
passing the index-pack args as separate arguments (to avoid the
necessity to somehow encode in order to get rid of spaces), and by using
a custom error function instead of a specific option in fsck.
This applies on master. I mentioned earlier [1] that I was planning to
implement this on Ævar's fsck API improvements, but after looking at the
latest v2, I see that it omits patch 11 from v1 (which is the one I
need), so what I've done is to use a string check in the meantime.
[1] https://lore.kernel.org/git/20210219004612.1181920-1-jonathantanmy@google.com/
Jonathan Tan (4):
http: allow custom index-pack args
http-fetch: allow custom index-pack args
fetch-pack: with packfile URIs, use index-pack arg
fetch-pack: print and use dangling .gitmodules
Documentation/git-http-fetch.txt | 10 ++-
Documentation/git-index-pack.txt | 7 ++-
builtin/index-pack.c | 25 +++++++-
builtin/receive-pack.c | 2 +-
fetch-pack.c | 103 ++++++++++++++++++++++++++-----
fsck.c | 5 ++
fsck.h | 2 +
http-fetch.c | 20 +++++-
http.c | 15 ++---
http.h | 10 +--
pack-write.c | 8 ++-
pack.h | 2 +-
t/t5550-http-fetch-dumb.sh | 5 +-
t/t5702-protocol-v2.sh | 58 +++++++++++++++--
14 files changed, 227 insertions(+), 45 deletions(-)
Range-diff against v1:
-: ---------- > 1: b7e376be16 http: allow custom index-pack args
1: 9fba6c9bcc ! 2: 57220ceb84 http-fetch: allow custom index-pack args
@@ Documentation/git-http-fetch.txt: commit-id::
--packfile=<hash>::
- Instead of a commit id on the command line (which is not expected in
-+ For internal use only. Instead of a commit id on the command line (which is not expected in
++ For internal use only. Instead of a commit id on the command
++ line (which is not expected in
this case), 'git http-fetch' fetches the packfile directly at the given
URL and uses index-pack to generate corresponding .idx and .keep files.
The hash is used to determine the name of the temporary file and is
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
strvec_pushf(&cmd.args, "--packfile=%.*s",
(int) the_hash_algo->hexsz,
packfile_uris.items[i].string);
-+ strvec_push(&cmd.args, "--index-pack-args=index-pack --stdin --keep");
++ strvec_push(&cmd.args, "--index-pack-arg=index-pack");
++ strvec_push(&cmd.args, "--index-pack-arg=--stdin");
++ strvec_push(&cmd.args, "--index-pack-arg=--keep");
strvec_push(&cmd.args, uri);
cmd.git_cmd = 1;
cmd.no_stdin = 1;
@@ http-fetch.c: int cmd_main(int argc, const char **argv)
int packfile = 0;
int nongit;
struct object_id packfile_hash;
-+ const char *index_pack_args = NULL;
++ struct strvec index_pack_args = STRVEC_INIT;
setup_git_directory_gently(&nongit);
@@ http-fetch.c: int cmd_main(int argc, const char **argv)
packfile = 1;
if (parse_oid_hex(p, &packfile_hash, &end) || *end)
die(_("argument to --packfile must be a valid hash (got '%s')"), p);
-+ } else if (skip_prefix(argv[arg], "--index-pack-args=", &p)) {
-+ index_pack_args = p;
++ } else if (skip_prefix(argv[arg], "--index-pack-arg=", &p)) {
++ strvec_push(&index_pack_args, p);
}
arg++;
}
@@ http-fetch.c: int cmd_main(int argc, const char **argv)
if (packfile) {
- fetch_single_packfile(&packfile_hash, argv[arg]);
-+ struct strvec encoded = STRVEC_INIT;
-+ char **raw;
-+ int i;
-+
-+ if (!index_pack_args)
++ if (!index_pack_args.nr)
+ die(_("--packfile requires --index-pack-args"));
+
-+ strvec_split(&encoded, index_pack_args);
-+
-+ CALLOC_ARRAY(raw, encoded.nr + 1);
-+ for (i = 0; i < encoded.nr; i++)
-+ raw[i] = url_percent_decode(encoded.v[i]);
-+
+ fetch_single_packfile(&packfile_hash, argv[arg],
-+ (const char **) raw);
-+
-+ for (i = 0; i < encoded.nr; i++)
-+ free(raw[i]);
-+ free(raw);
-+ strvec_clear(&encoded);
++ index_pack_args.v);
+
return 0;
}
-+ if (index_pack_args)
++ if (index_pack_args.nr)
+ die(_("--index-pack-args can only be used with --packfile"));
+
if (commits_on_stdin) {
@@ t/t5550-http-fetch-dumb.sh: test_expect_success 'http-fetch --packfile' '
p=$(cd "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git && ls objects/pack/pack-*.pack) &&
- git -C packfileclient http-fetch --packfile=$ARBITRARY "$HTTPD_URL"/dumb/repo_pack.git/$p >out &&
+ git -C packfileclient http-fetch --packfile=$ARBITRARY \
-+ --index-pack-args="index-pack --stdin --keep" "$HTTPD_URL"/dumb/repo_pack.git/$p >out &&
++ --index-pack-arg=index-pack --index-pack-arg=--stdin \
++ --index-pack-arg=--keep \
++ "$HTTPD_URL"/dumb/repo_pack.git/$p >out &&
grep "^keep.[0-9a-f]\{16,\}$" out &&
cut -c6- out >packhash &&
2: 7c3244e79f ! 3: aa87335464 fetch-pack: with packfile URIs, use index-pack arg
@@ fetch-pack.c: static void write_promisor_file(const char *keep_name,
- * Pass 1 as "only_packfile" if the pack received is the only pack in this
- * fetch request (that is, if there were no packfile URIs provided).
+ * If packfile URIs were provided, pass a non-NULL pointer to index_pack_args.
-+ * The string to pass as the --index-pack-args argument to http-fetch will be
++ * The strings to pass as the --index-pack-arg arguments to http-fetch will be
+ * stored there. (It must be freed by the caller.)
*/
static int get_pack(struct fetch_pack_args *args,
int xd[2], struct string_list *pack_lockfiles,
- int only_packfile,
-+ char **index_pack_args,
++ struct strvec *index_pack_args,
struct ref **sought, int nr_sought)
{
struct async demux;
@@ fetch-pack.c: static int get_pack(struct fetch_pack_args *args,
}
+ if (index_pack_args) {
-+ struct strbuf joined = STRBUF_INIT;
+ int i;
+
-+ for (i = 0; i < cmd.args.nr; i++) {
-+ if (i)
-+ strbuf_addch(&joined, ' ');
-+ strbuf_addstr_urlencode(&joined, cmd.args.v[i],
-+ is_rfc3986_unreserved);
-+ }
-+ *index_pack_args = strbuf_detach(&joined, NULL);
++ for (i = 0; i < cmd.args.nr; i++)
++ strvec_push(index_pack_args, cmd.args.v[i]);
+ }
+
cmd.in = demux.out;
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
int seen_ack = 0;
struct string_list packfile_uris = STRING_LIST_INIT_DUP;
int i;
-+ char *index_pack_args = NULL;
++ struct strvec index_pack_args = STRVEC_INIT;
negotiator = &negotiator_alloc;
fetch_negotiator_init(r, negotiator);
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
die(_("git fetch-pack: fetch failed."));
do_check_stateless_delimiter(args, &reader);
+@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
+ }
+
+ for (i = 0; i < packfile_uris.nr; i++) {
++ int j;
+ struct child_process cmd = CHILD_PROCESS_INIT;
+ char packname[GIT_MAX_HEXSZ + 1];
+ const char *uri = packfile_uris.items[i].string +
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
strvec_pushf(&cmd.args, "--packfile=%.*s",
(int) the_hash_algo->hexsz,
packfile_uris.items[i].string);
-- strvec_push(&cmd.args, "--index-pack-args=index-pack --stdin --keep");
-+ strvec_pushf(&cmd.args, "--index-pack-args=%s", index_pack_args);
+- strvec_push(&cmd.args, "--index-pack-arg=index-pack");
+- strvec_push(&cmd.args, "--index-pack-arg=--stdin");
+- strvec_push(&cmd.args, "--index-pack-arg=--keep");
++ for (j = 0; j < index_pack_args.nr; j++)
++ strvec_pushf(&cmd.args, "--index-pack-arg=%s",
++ index_pack_args.v[j]);
strvec_push(&cmd.args, uri);
cmd.git_cmd = 1;
cmd.no_stdin = 1;
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
packname));
}
string_list_clear(&packfile_uris, 0);
-+ FREE_AND_NULL(index_pack_args);
++ strvec_clear(&index_pack_args);
if (negotiator)
negotiator->release(negotiator);
3: 384c9d1c73 ! 4: e8b18d02e6 fetch-pack: print and use dangling .gitmodules
@@ Documentation/git-index-pack.txt: OPTIONS
Specifies the number of threads to spawn when resolving
## builtin/index-pack.c ##
+@@ builtin/index-pack.c: static void show_pack_info(int stat_only)
+ }
+ }
+
++static int print_dangling_gitmodules(struct fsck_options *o,
++ const struct object_id *oid,
++ enum object_type object_type,
++ int msg_type, const char *message)
++{
++ /*
++ * NEEDSWORK: Plumb the MSG_ID (from fsck.c) here and use it
++ * instead of relying on this string check.
++ */
++ if (starts_with(message, "gitmodulesMissing")) {
++ printf("%s\n", oid_to_hex(oid));
++ return 0;
++ }
++ return fsck_error_function(o, oid, object_type, msg_type, message);
++}
++
+ int cmd_index_pack(int argc, const char **argv, const char *prefix)
+ {
+ int i, fix_thin_pack = 0, verify = 0, stat_only = 0;
@@ builtin/index-pack.c: int cmd_index_pack(int argc, const char **argv, const char *prefix)
else
close(input_fd);
@@ builtin/index-pack.c: int cmd_index_pack(int argc, const char **argv, const char
- if (do_fsck_object && fsck_finish(&fsck_options))
- die(_("fsck error in pack objects"));
+ if (do_fsck_object) {
-+ struct fsck_options fo = FSCK_OPTIONS_STRICT;
++ struct fsck_options fo = fsck_options;
+
-+ fo.print_dangling_gitmodules = 1;
++ fo.error_func = print_dangling_gitmodules;
+ if (fsck_finish(&fo))
+ die(_("fsck error in pack objects"));
+ }
@@ fetch-pack.c: static void write_promisor_file(const char *keep_name,
+
/*
* If packfile URIs were provided, pass a non-NULL pointer to index_pack_args.
- * The string to pass as the --index-pack-args argument to http-fetch will be
+ * The strings to pass as the --index-pack-arg arguments to http-fetch will be
@@ fetch-pack.c: static void write_promisor_file(const char *keep_name,
static int get_pack(struct fetch_pack_args *args,
int xd[2], struct string_list *pack_lockfiles,
- char **index_pack_args,
+ struct strvec *index_pack_args,
- struct ref **sought, int nr_sought)
+ struct ref **sought, int nr_sought,
+ struct oidset *gitmodules_oids)
@@ fetch-pack.c: static struct ref *do_fetch_pack(struct fetch_pack_args *args,
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
struct string_list packfile_uris = STRING_LIST_INIT_DUP;
int i;
- char *index_pack_args = NULL;
+ struct strvec index_pack_args = STRVEC_INIT;
+ struct oidset gitmodules_oids = OIDSET_INIT;
negotiator = &negotiator_alloc;
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
if (finish_command(&cmd))
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
string_list_clear(&packfile_uris, 0);
- FREE_AND_NULL(index_pack_args);
+ strvec_clear(&index_pack_args);
+ fsck_gitmodules_oids(&gitmodules_oids);
+
@@ fsck.c: int fsck_error_function(struct fsck_options *o,
int fsck_finish(struct fsck_options *options)
{
int ret = 0;
-@@ fsck.c: int fsck_finish(struct fsck_options *options)
- if (!buf) {
- if (is_promisor_object(oid))
- continue;
-- ret |= report(options,
-- oid, OBJ_BLOB,
-- FSCK_MSG_GITMODULES_MISSING,
-- "unable to read .gitmodules blob");
-+ if (options->print_dangling_gitmodules)
-+ printf("%s\n", oid_to_hex(oid));
-+ else
-+ ret |= report(options,
-+ oid, OBJ_BLOB,
-+ FSCK_MSG_GITMODULES_MISSING,
-+ "unable to read .gitmodules blob");
- continue;
- }
-
## fsck.h ##
-@@ fsck.h: struct fsck_options {
- int *msg_type;
- struct oidset skiplist;
- kh_oid_map_t *object_names;
-+
-+ /*
-+ * If 1, print the hashes of missing .gitmodules blobs instead of
-+ * considering them to be errors.
-+ */
-+ unsigned print_dangling_gitmodules:1;
- };
-
- #define FSCK_OPTIONS_DEFAULT { NULL, fsck_error_function, 0, NULL, OIDSET_INIT }
@@ fsck.h: int fsck_walk(struct object *obj, void *data, struct fsck_options *options);
int fsck_object(struct object *obj, void *data, unsigned long size,
struct fsck_options *options);
@@ pack.h: int verify_pack_index(struct packed_git *);
* The "hdr" output buffer should be at least this big, which will handle sizes
## t/t5702-protocol-v2.sh ##
+@@ t/t5702-protocol-v2.sh: test_expect_success 'part of packfile response provided as URI' '
+ test -f hfound &&
+ test -f h2found &&
+
+- # Ensure that there are exactly 6 files (3 .pack and 3 .idx).
+- ls http_child/.git/objects/pack/* >filelist &&
++ # Ensure that there are exactly 3 packfiles with associated .idx
++ ls http_child/.git/objects/pack/*.pack \
++ http_child/.git/objects/pack/*.idx >filelist &&
+ test_line_count = 6 filelist
+ '
+
+@@ t/t5702-protocol-v2.sh: test_expect_success 'packfile-uri with transfer.fsckobjects' '
+ -c fetch.uriprotocols=http,https \
+ clone "$HTTPD_URL/smart/http_parent" http_child &&
+
+- # Ensure that there are exactly 4 files (2 .pack and 2 .idx).
+- ls http_child/.git/objects/pack/* >filelist &&
++ # Ensure that there are exactly 2 packfiles with associated .idx
++ ls http_child/.git/objects/pack/*.pack \
++ http_child/.git/objects/pack/*.idx >filelist &&
+ test_line_count = 4 filelist
+ '
+
@@ t/t5702-protocol-v2.sh: test_expect_success 'packfile-uri with transfer.fsckobjects fails on bad object'
test_i18ngrep "invalid author/committer line - missing email" error
'
@@ t/t5702-protocol-v2.sh: test_expect_success 'packfile-uri with transfer.fsckobje
+ -c fetch.uriprotocols=http,https \
+ clone "$HTTPD_URL/smart/http_parent" http_child &&
+
-+ # Ensure that there are exactly 4 files (2 .pack and 2 .idx).
-+ ls http_child/.git/objects/pack/* >filelist &&
++ # Ensure that there are exactly 2 packfiles with associated .idx
++ ls http_child/.git/objects/pack/*.pack \
++ http_child/.git/objects/pack/*.idx >filelist &&
+ test_line_count = 4 filelist
+'
+
4: da0d7b38ae < -: ---------- SQUASH??? test fix
--
2.30.0.617.g56c4b15f3c-goog
next prev parent reply other threads:[~2021-02-22 19:27 UTC|newest]
Thread overview: 229+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-15 23:43 RFC on packfile URIs and .gitmodules check Jonathan Tan
2021-01-16 0:30 ` Junio C Hamano
2021-01-16 3:22 ` Taylor Blau
2021-01-19 12:56 ` Derrick Stolee
2021-01-19 19:13 ` Jonathan Tan
2021-01-20 1:04 ` Junio C Hamano
2021-01-19 19:02 ` Jonathan Tan
2021-01-20 8:07 ` Ævar Arnfjörð Bjarmason
2021-01-20 19:30 ` Jonathan Tan
2021-01-21 3:06 ` Junio C Hamano
2021-01-21 18:32 ` Jonathan Tan
2021-01-21 18:39 ` Junio C Hamano
2021-01-20 19:36 ` [PATCH] Doc: clarify contents of packfile sent as URI Jonathan Tan
2021-01-24 2:34 ` [PATCH 0/4] Check .gitmodules when using packfile URIs Jonathan Tan
2021-01-24 2:34 ` [PATCH 1/4] http: allow custom index-pack args Jonathan Tan
2021-01-24 2:34 ` [PATCH 2/4] http-fetch: " Jonathan Tan
2021-01-24 11:52 ` Ævar Arnfjörð Bjarmason
2021-01-28 0:32 ` Jonathan Tan
2021-02-16 20:49 ` Josh Steadmon
2021-02-16 22:57 ` Junio C Hamano
2021-02-17 19:46 ` Jonathan Tan
2021-01-24 2:34 ` [PATCH 3/4] fetch-pack: with packfile URIs, use index-pack arg Jonathan Tan
2021-01-24 2:34 ` [PATCH 4/4] fetch-pack: print and use dangling .gitmodules Jonathan Tan
2021-01-24 7:56 ` Junio C Hamano
2021-01-26 1:57 ` Junio C Hamano
2021-01-28 1:04 ` Jonathan Tan
2021-01-24 12:18 ` Ævar Arnfjörð Bjarmason
2021-01-28 1:03 ` Jonathan Tan
2021-02-17 1:48 ` Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 00/14] fsck: API improvements Ævar Arnfjörð Bjarmason
2021-02-17 21:02 ` Junio C Hamano
2021-02-18 0:00 ` Ævar Arnfjörð Bjarmason
2021-02-18 19:12 ` Junio C Hamano
2021-02-18 19:57 ` Jeff King
2021-02-18 20:27 ` Junio C Hamano
2021-02-19 0:54 ` Ævar Arnfjörð Bjarmason
2021-02-18 22:36 ` Junio C Hamano
2021-02-18 10:58 ` [PATCH v2 00/10] fsck: API improvements (no conflicts with 'seen') Ævar Arnfjörð Bjarmason
2021-02-18 22:19 ` Junio C Hamano
2021-03-06 11:04 ` [PATCH v3 00/22] fsck: API improvements Ævar Arnfjörð Bjarmason
2021-03-07 23:04 ` Junio C Hamano
2021-03-08 9:16 ` Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 " Ævar Arnfjörð Bjarmason
2021-03-16 19:35 ` Derrick Stolee
2021-03-17 18:20 ` [PATCH v5 00/19] " Ævar Arnfjörð Bjarmason
2021-03-17 20:30 ` Derrick Stolee
2021-03-17 21:06 ` Junio C Hamano
2021-03-28 13:15 ` [PATCH v6 " Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 01/19] fsck.c: refactor and rename common config callback Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 02/19] fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-28 17:15 ` Ramsay Jones
2021-03-29 2:04 ` Junio C Hamano
2021-03-28 13:15 ` [PATCH v6 03/19] fsck.h: use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 04/19] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 05/19] fsck.c: remove (mostly) redundant append_msg_id() function Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 06/19] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 07/19] fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type" Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 08/19] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 09/19] fsck.h: re-order and re-assign "enum fsck_msg_type" Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 10/19] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 11/19] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 12/19] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 13/19] fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 14/19] fsck.c: pass along the fsck_msg_id in the fsck_error callback Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 15/19] fsck.c: add an fsck_set_msg_type() API that takes enums Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 16/19] fsck.c: move gitmodules_{found,done} into fsck_options Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 17/19] fetch-pack: don't needlessly copy fsck_options Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 18/19] fetch-pack: use file-scope static struct for fsck_options Ævar Arnfjörð Bjarmason
2021-03-28 13:15 ` [PATCH v6 19/19] fetch-pack: use new fsck API to printing dangling submodules Ævar Arnfjörð Bjarmason
2021-03-29 2:06 ` [PATCH v6 00/19] fsck: API improvements Junio C Hamano
2021-03-17 18:20 ` [PATCH v5 01/19] fsck.c: refactor and rename common config callback Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 02/19] fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 03/19] fsck.h: use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 04/19] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 05/19] fsck.c: move definition of msg_id into append_msg_id() Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 06/19] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 07/19] fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type" Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 08/19] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 09/19] fsck.h: re-order and re-assign "enum fsck_msg_type" Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 10/19] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 11/19] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 12/19] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 13/19] fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 14/19] fsck.c: pass along the fsck_msg_id in the fsck_error callback Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 15/19] fsck.c: add an fsck_set_msg_type() API that takes enums Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 16/19] fsck.c: move gitmodules_{found,done} into fsck_options Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 17/19] fetch-pack: don't needlessly copy fsck_options Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 18/19] fetch-pack: use file-scope static struct for fsck_options Ævar Arnfjörð Bjarmason
2021-03-17 18:20 ` [PATCH v5 19/19] fetch-pack: use new fsck API to printing dangling submodules Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 01/22] fsck.h: update FSCK_OPTIONS_* for object_name Ævar Arnfjörð Bjarmason
2021-03-17 18:35 ` Junio C Hamano
2021-03-19 14:43 ` Johannes Schindelin
2021-03-20 9:16 ` Ævar Arnfjörð Bjarmason
2021-03-20 20:04 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 02/22] fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-16 18:59 ` Derrick Stolee
2021-03-17 18:38 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 03/22] fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 04/22] fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macro Ævar Arnfjörð Bjarmason
2021-03-16 19:06 ` Derrick Stolee
2021-03-16 16:17 ` [PATCH v4 05/22] fsck.h: indent arguments to of fsck_set_msg_type Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 06/22] fsck.h: use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 07/22] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 08/22] fsck.c: move definition of msg_id into append_msg_id() Ævar Arnfjörð Bjarmason
2021-03-17 18:45 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 09/22] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 10/22] fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type" Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 11/22] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-03-17 18:48 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 12/22] fsck.h: re-order and re-assign "enum fsck_msg_type" Ævar Arnfjörð Bjarmason
2021-03-17 18:50 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 13/22] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 14/22] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-03-17 18:57 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 15/22] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 16/22] fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 17/22] fsck.c: pass along the fsck_msg_id in the fsck_error callback Ævar Arnfjörð Bjarmason
2021-03-17 19:01 ` Junio C Hamano
2021-03-16 16:17 ` [PATCH v4 18/22] fsck.c: add an fsck_set_msg_type() API that takes enums Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 19/22] fsck.c: move gitmodules_{found,done} into fsck_options Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 20/22] fetch-pack: don't needlessly copy fsck_options Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 21/22] fetch-pack: use file-scope static struct for fsck_options Ævar Arnfjörð Bjarmason
2021-03-16 16:17 ` [PATCH v4 22/22] fetch-pack: use new fsck API to printing dangling submodules Ævar Arnfjörð Bjarmason
2021-03-16 19:32 ` Derrick Stolee
2021-03-17 13:47 ` Ævar Arnfjörð Bjarmason
2021-03-17 20:27 ` Derrick Stolee
2021-03-17 19:12 ` Junio C Hamano
2021-03-06 11:04 ` [PATCH v3 01/22] fsck.h: update FSCK_OPTIONS_* for object_name Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 02/22] fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 03/22] fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT} Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 04/22] fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macro Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 05/22] fsck.h: indent arguments to of fsck_set_msg_type Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 06/22] fsck.h: use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 07/22] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 08/22] fsck.c: move definition of msg_id into append_msg_id() Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 09/22] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 10/22] fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type" Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 11/22] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 12/22] fsck.h: re-order and re-assign "enum fsck_msg_type" Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 13/22] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 14/22] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 15/22] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 16/22] fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 17/22] fsck.c: pass along the fsck_msg_id in the fsck_error callback Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 18/22] fsck.c: add an fsck_set_msg_type() API that takes enums Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 19/22] fsck.c: move gitmodules_{found,done} into fsck_options Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 20/22] fetch-pack: don't needlessly copy fsck_options Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 21/22] fetch-pack: use file-scope static struct for fsck_options Ævar Arnfjörð Bjarmason
2021-03-06 11:04 ` [PATCH v3 22/22] fetch-pack: use new fsck API to printing dangling submodules Ævar Arnfjörð Bjarmason
2021-02-18 10:58 ` [PATCH v2 01/10] fsck.h: indent arguments to of fsck_set_msg_type Ævar Arnfjörð Bjarmason
2021-02-18 10:58 ` [PATCH v2 02/10] fsck.h: use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-02-18 10:58 ` [PATCH v2 03/10] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-02-18 19:45 ` Jeff King
2021-02-18 10:58 ` [PATCH v2 04/10] fsck.c: move definition of msg_id into append_msg_id() Ævar Arnfjörð Bjarmason
2021-02-18 10:58 ` [PATCH v2 05/10] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-02-18 22:23 ` Junio C Hamano
2021-02-18 10:58 ` [PATCH v2 06/10] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-02-18 19:52 ` Jeff King
2021-02-18 22:27 ` Junio C Hamano
2021-02-18 10:58 ` [PATCH v2 07/10] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-02-18 22:29 ` Junio C Hamano
2021-02-18 10:58 ` [PATCH v2 08/10] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-02-18 22:30 ` Junio C Hamano
2021-02-18 10:58 ` [PATCH v2 09/10] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-02-18 19:56 ` Jeff King
2021-02-18 10:58 ` [PATCH v2 10/10] fsck.h: update FSCK_OPTIONS_* for object_name Ævar Arnfjörð Bjarmason
2021-02-18 19:56 ` Jeff King
2021-02-18 22:33 ` Junio C Hamano
2021-02-18 22:32 ` Junio C Hamano
2021-02-17 19:42 ` [PATCH 01/14] fsck.h: indent arguments to of fsck_set_msg_type Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 02/14] fsck.h: use use "enum object_type" instead of "int" Ævar Arnfjörð Bjarmason
2021-02-17 23:40 ` Junio C Hamano
2021-02-17 19:42 ` [PATCH 03/14] fsck.c: rename variables in fsck_set_msg_type() for less confusion Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 04/14] fsck.c: move definition of msg_id into append_msg_id() Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 05/14] fsck.c: rename remaining fsck_msg_id "id" to "msg_id" Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 06/14] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 07/14] fsck.c: call parse_msg_type() early in fsck_set_msg_type() Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 08/14] fsck.c: undefine temporary STR macro after use Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 09/14] fsck.c: give "FOREACH_MSG_ID" a more specific name Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 10/14] fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 11/14] fsck.c: pass along the fsck_msg_id in the fsck_error callback Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 12/14] fsck.c: add an fsck_set_msg_type() API that takes enums Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 13/14] fsck.h: update FSCK_OPTIONS_* for object_name Ævar Arnfjörð Bjarmason
2021-02-17 19:42 ` [PATCH 14/14] fsck.c: move gitmodules_{found,done} into fsck_options Ævar Arnfjörð Bjarmason
2021-02-17 20:05 ` [PATCH 4/4] fetch-pack: print and use dangling .gitmodules Jonathan Tan
2021-01-24 12:30 ` Ævar Arnfjörð Bjarmason
2021-01-28 1:15 ` Jonathan Tan
2021-02-17 2:10 ` Ævar Arnfjörð Bjarmason
2021-02-17 20:10 ` Jonathan Tan
2021-02-18 12:07 ` Ævar Arnfjörð Bjarmason
2021-02-17 19:27 ` Ævar Arnfjörð Bjarmason
2021-02-17 20:11 ` Jonathan Tan
2021-01-24 6:29 ` [PATCH 0/4] Check .gitmodules when using packfile URIs Junio C Hamano
2021-01-28 0:35 ` Jonathan Tan
2021-02-18 11:31 ` Ævar Arnfjörð Bjarmason
2021-02-18 23:34 ` Junio C Hamano
2021-02-19 0:46 ` Jonathan Tan
2021-02-20 3:31 ` Junio C Hamano
2021-02-19 1:08 ` Ævar Arnfjörð Bjarmason
2021-02-20 3:29 ` Junio C Hamano
2021-02-22 19:20 ` Jonathan Tan [this message]
2021-02-22 19:20 ` [PATCH v2 1/4] http: allow custom index-pack args Jonathan Tan
2021-02-22 19:20 ` [PATCH v2 2/4] http-fetch: " Jonathan Tan
2021-02-23 13:17 ` Ævar Arnfjörð Bjarmason
2021-02-23 16:51 ` Jonathan Tan
2021-03-05 0:19 ` Jonathan Nieder
2021-03-05 1:16 ` [PATCH] fetch-pack: do not mix --pack_header and packfile uri Jonathan Tan
2021-03-05 1:52 ` Junio C Hamano
2021-03-05 18:50 ` Junio C Hamano
2021-03-05 19:46 ` Junio C Hamano
2021-03-05 23:11 ` Jonathan Tan
2021-03-05 23:20 ` Junio C Hamano
2021-03-05 22:59 ` Jonathan Tan
2021-03-05 23:18 ` Junio C Hamano
2021-03-08 19:14 ` Jonathan Tan
2021-03-08 19:34 ` Junio C Hamano
2021-03-09 19:13 ` Junio C Hamano
2021-03-10 5:24 ` Junio C Hamano
2021-03-10 16:57 ` Jonathan Tan
2021-03-10 18:30 ` Junio C Hamano
2021-03-10 19:56 ` Junio C Hamano
2021-03-10 23:29 ` Jonathan Tan
2021-03-11 0:59 ` Junio C Hamano
2021-03-11 1:41 ` Junio C Hamano
2021-03-11 17:22 ` Jonathan Tan
2021-03-11 21:21 ` Junio C Hamano
2021-02-22 19:20 ` [PATCH v2 3/4] fetch-pack: with packfile URIs, use index-pack arg Jonathan Tan
2021-02-22 19:20 ` [PATCH v2 4/4] fetch-pack: print and use dangling .gitmodules Jonathan Tan
2021-02-22 20:12 ` [PATCH v2 0/4] Check .gitmodules when using packfile URIs Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1614021092.git.jonathantanmy@google.com \
--to=jonathantanmy@google.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).