From: Stefan Beller <sbeller@google.com>
To: git@vger.kernel.org
Cc: Stefan Beller <sbeller@google.com>, Jonathan Nieder <jrnieder@gmail.com>
Subject: [PATCH 090/194] object: add repository argument to lookup_commit_reference
Date: Mon, 5 Feb 2018 15:55:51 -0800 [thread overview]
Message-ID: <20180205235735.216710-70-sbeller@google.com> (raw)
In-Reply-To: <20180205235735.216710-1-sbeller@google.com>
Add a repository argument to allow callers of lookup_commit_reference
to be more specific about which repository to handle. This is a small
mechanical change; it doesn't change the implementation to handle
repositories other than the_repository yet.
As with the previous commits, use a macro to catch callers passing a
repository other than the_repository at compile time.
The included coccinelle semantic patch will adapt any new callers in
the diff produced by `make coccicheck`.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
bisect.c | 2 +-
blame.c | 2 +-
branch.c | 2 +-
builtin/branch.c | 7 ++++---
builtin/clone.c | 3 ++-
builtin/describe.c | 2 +-
builtin/diff-tree.c | 2 +-
builtin/log.c | 7 ++++---
builtin/merge-base.c | 5 +++--
builtin/notes.c | 3 ++-
builtin/pull.c | 15 ++++++++++-----
builtin/reset.c | 4 ++--
builtin/rev-parse.c | 6 +++---
builtin/show-branch.c | 2 +-
builtin/tag.c | 2 +-
bundle.c | 3 ++-
commit.c | 6 +++---
commit.h | 4 +++-
contrib/coccinelle/object_parser.cocci | 7 +++++++
notes-merge.c | 5 +++--
parse-options-cb.c | 2 +-
remote.c | 4 ++--
revision.c | 4 ++--
sequencer.c | 4 ++--
sha1_name.c | 4 ++--
submodule.c | 10 +++++-----
26 files changed, 69 insertions(+), 48 deletions(-)
diff --git a/bisect.c b/bisect.c
index 2f3008b078..c3066bd972 100644
--- a/bisect.c
+++ b/bisect.c
@@ -717,7 +717,7 @@ static int bisect_checkout(const struct object_id *bisect_rev, int no_checkout)
static struct commit *get_commit_reference(const struct object_id *oid)
{
- struct commit *r = lookup_commit_reference(oid);
+ struct commit *r = lookup_commit_reference(the_repository, oid);
if (!r)
die(_("Not a valid commit name %s"), oid_to_hex(oid));
return r;
diff --git a/blame.c b/blame.c
index 98761c32d5..1aab6228cc 100644
--- a/blame.c
+++ b/blame.c
@@ -101,7 +101,7 @@ static struct commit_list **append_parent(struct commit_list **tail, const struc
{
struct commit *parent;
- parent = lookup_commit_reference(oid);
+ parent = lookup_commit_reference(the_repository, oid);
if (!parent)
die("no such commit %s", oid_to_hex(oid));
return &commit_list_insert(parent, tail)->next;
diff --git a/branch.c b/branch.c
index 2672054f0b..0b7aaa1aca 100644
--- a/branch.c
+++ b/branch.c
@@ -301,7 +301,7 @@ void create_branch(const char *name, const char *start_name,
break;
}
- if ((commit = lookup_commit_reference(&oid)) == NULL)
+ if ((commit = lookup_commit_reference(the_repository, &oid)) == NULL)
die(_("Not a valid branch point: '%s'."), start_name);
oidcpy(&oid, &commit->object.oid);
diff --git a/builtin/branch.c b/builtin/branch.c
index 8dcc2ed058..2d752c6614 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -126,7 +126,8 @@ static int branch_merged(int kind, const char *name,
(reference_name = reference_name_to_free =
resolve_refdup(upstream, RESOLVE_REF_READING,
&oid, NULL)) != NULL)
- reference_rev = lookup_commit_reference(&oid);
+ reference_rev = lookup_commit_reference(the_repository,
+ &oid);
}
if (!reference_rev)
reference_rev = head_rev;
@@ -159,7 +160,7 @@ static int check_branch_commit(const char *branchname, const char *refname,
const struct object_id *oid, struct commit *head_rev,
int kinds, int force)
{
- struct commit *rev = lookup_commit_reference(oid);
+ struct commit *rev = lookup_commit_reference(the_repository, oid);
if (!rev) {
error(_("Couldn't look up commit object for '%s'"), refname);
return -1;
@@ -213,7 +214,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
}
if (!force) {
- head_rev = lookup_commit_reference(&head_oid);
+ head_rev = lookup_commit_reference(the_repository, &head_oid);
if (!head_rev)
die(_("Couldn't look up commit object for HEAD"));
}
diff --git a/builtin/clone.c b/builtin/clone.c
index ecd71b9444..6efe189846 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -690,7 +690,8 @@ static void update_head(const struct ref *our, const struct ref *remote,
install_branch_config(0, head, option_origin, our->name);
}
} else if (our) {
- struct commit *c = lookup_commit_reference(&our->old_oid);
+ struct commit *c = lookup_commit_reference(the_repository,
+ &our->old_oid);
/* --branch specifies a non-branch (i.e. tags), detach HEAD */
update_ref(msg, "HEAD", &c->object.oid, NULL, REF_NO_DEREF,
UPDATE_REFS_DIE_ON_ERR);
diff --git a/builtin/describe.c b/builtin/describe.c
index f1172a8bf0..5bd0920ebd 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -295,7 +295,7 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst)
unsigned long seen_commits = 0;
unsigned int unannotated_cnt = 0;
- cmit = lookup_commit_reference(oid);
+ cmit = lookup_commit_reference(the_repository, oid);
n = find_commit_name(&cmit->object.oid);
if (n && (tags || all || n->prio == 2)) {
diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c
index ab491efa9e..603f619532 100644
--- a/builtin/diff-tree.c
+++ b/builtin/diff-tree.c
@@ -11,7 +11,7 @@ static struct rev_info log_tree_opt;
static int diff_tree_commit_oid(const struct object_id *oid)
{
- struct commit *commit = lookup_commit_reference(oid);
+ struct commit *commit = lookup_commit_reference(the_repository, oid);
if (!commit)
return -1;
return log_tree_commit(&log_tree_opt, commit);
diff --git a/builtin/log.c b/builtin/log.c
index 2c3579b1f7..529e19ce6f 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -901,8 +901,8 @@ static void get_patch_ids(struct rev_info *rev, struct patch_ids *ids)
o2 = rev->pending.objects[1].item;
flags1 = o1->flags;
flags2 = o2->flags;
- c1 = lookup_commit_reference(&o1->oid);
- c2 = lookup_commit_reference(&o2->oid);
+ c1 = lookup_commit_reference(the_repository, &o1->oid);
+ c2 = lookup_commit_reference(the_repository, &o2->oid);
if ((flags1 & UNINTERESTING) == (flags2 & UNINTERESTING))
die(_("Not a range."));
@@ -1850,7 +1850,8 @@ static int add_pending_commit(const char *arg, struct rev_info *revs, int flags)
{
struct object_id oid;
if (get_oid(arg, &oid) == 0) {
- struct commit *commit = lookup_commit_reference(&oid);
+ struct commit *commit = lookup_commit_reference(the_repository,
+ &oid);
if (commit) {
commit->object.flags |= flags;
add_pending_object(revs, &commit->object, arg);
diff --git a/builtin/merge-base.c b/builtin/merge-base.c
index 3b7600150b..bbead6f33e 100644
--- a/builtin/merge-base.c
+++ b/builtin/merge-base.c
@@ -6,6 +6,7 @@
#include "diff.h"
#include "revision.h"
#include "parse-options.h"
+#include "repository.h"
static int show_merge_base(struct commit **rev, int rev_nr, int show_all)
{
@@ -42,7 +43,7 @@ static struct commit *get_commit_reference(const char *arg)
if (get_oid(arg, &revkey))
die("Not a valid object name %s", arg);
- r = lookup_commit_reference(&revkey);
+ r = lookup_commit_reference(the_repository, &revkey);
if (!r)
die("Not a valid commit name %s", arg);
@@ -171,7 +172,7 @@ static int handle_fork_point(int argc, const char **argv)
if (get_oid(commitname, &oid))
die("Not a valid object name: '%s'", commitname);
- derived = lookup_commit_reference(&oid);
+ derived = lookup_commit_reference(the_repository, &oid);
memset(&revs, 0, sizeof(revs));
revs.initial = 1;
for_each_reflog_ent(refname, collect_one_reflog_ent, &revs);
diff --git a/builtin/notes.c b/builtin/notes.c
index 1bd3994caa..18128eb439 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -12,6 +12,7 @@
#include "builtin.h"
#include "notes.h"
#include "object-store.h"
+#include "repository.h"
#include "blob.h"
#include "pretty.h"
#include "refs.h"
@@ -711,7 +712,7 @@ static int merge_commit(struct notes_merge_options *o)
if (get_oid("NOTES_MERGE_PARTIAL", &oid))
die(_("failed to read ref NOTES_MERGE_PARTIAL"));
- else if (!(partial = lookup_commit_reference(&oid)))
+ else if (!(partial = lookup_commit_reference(the_repository, &oid)))
die(_("could not find commit from NOTES_MERGE_PARTIAL."));
else if (parse_commit(partial))
die(_("could not parse commit from NOTES_MERGE_PARTIAL."));
diff --git a/builtin/pull.c b/builtin/pull.c
index 511dbbe0f6..90aa922260 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -758,10 +758,13 @@ static int get_octopus_merge_base(struct object_id *merge_base,
{
struct commit_list *revs = NULL, *result;
- commit_list_insert(lookup_commit_reference(curr_head), &revs);
- commit_list_insert(lookup_commit_reference(merge_head), &revs);
+ commit_list_insert(lookup_commit_reference(the_repository, curr_head),
+ &revs);
+ commit_list_insert(lookup_commit_reference(the_repository, merge_head),
+ &revs);
if (!is_null_oid(fork_point))
- commit_list_insert(lookup_commit_reference(fork_point), &revs);
+ commit_list_insert(lookup_commit_reference(the_repository, fork_point),
+ &revs);
result = get_octopus_merge_bases(revs);
free_commit_list(revs);
@@ -935,9 +938,11 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
struct commit_list *list = NULL;
struct commit *merge_head, *head;
- head = lookup_commit_reference(&orig_head);
+ head = lookup_commit_reference(the_repository,
+ &orig_head);
commit_list_insert(head, &list);
- merge_head = lookup_commit_reference(&merge_heads.oid[0]);
+ merge_head = lookup_commit_reference(the_repository,
+ &merge_heads.oid[0]);
if (is_descendant_of(merge_head, list)) {
/* we can fast-forward this without invoking rebase */
opt_ff = "--ff-only";
diff --git a/builtin/reset.c b/builtin/reset.c
index e15f595799..ea600bc62a 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -327,7 +327,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
struct commit *commit;
if (get_oid_committish(rev, &oid))
die(_("Failed to resolve '%s' as a valid revision."), rev);
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (!commit)
die(_("Could not parse object '%s'."), rev);
oidcpy(&oid, &commit->object.oid);
@@ -404,7 +404,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
update_ref_status = reset_refs(rev, &oid);
if (reset_type == HARD && !update_ref_status && !quiet)
- print_new_head_line(lookup_commit_reference(&oid));
+ print_new_head_line(lookup_commit_reference(the_repository, &oid));
}
if (!pathspec.nr)
remove_branch_state();
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 74aa644cbb..b5515df1ae 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -280,8 +280,8 @@ static int try_difference(const char *arg)
if (symmetric) {
struct commit_list *exclude;
struct commit *a, *b;
- a = lookup_commit_reference(&oid);
- b = lookup_commit_reference(&end);
+ a = lookup_commit_reference(the_repository, &oid);
+ b = lookup_commit_reference(the_repository, &end);
exclude = get_merge_bases(a, b);
while (exclude) {
struct commit *commit = pop_commit(&exclude);
@@ -333,7 +333,7 @@ static int try_parent_shorthands(const char *arg)
return 0;
}
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (exclude_parent &&
exclude_parent > commit_list_count(commit->parents)) {
*dotdot = '^';
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index fb90c9ab3e..03c98efbe5 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -811,7 +811,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
MAX_REVS), MAX_REVS);
if (get_oid(ref_name[num_rev], &revkey))
die(_("'%s' is not a valid ref."), ref_name[num_rev]);
- commit = lookup_commit_reference(&revkey);
+ commit = lookup_commit_reference(the_repository, &revkey);
if (!commit)
die(_("cannot find commit %s (%s)"),
ref_name[num_rev], oid_to_hex(&revkey));
diff --git a/builtin/tag.c b/builtin/tag.c
index 014d7c9e9b..1fad1e6733 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -309,7 +309,7 @@ static void create_reflog_msg(const struct object_id *oid, struct strbuf *sb)
}
free(buf);
- if ((c = lookup_commit_reference(oid)) != NULL)
+ if ((c = lookup_commit_reference(the_repository, oid)) != NULL)
strbuf_addf(sb, ", %s", show_date(c->date, 0, DATE_MODE(SHORT)));
break;
case OBJ_TREE:
diff --git a/bundle.c b/bundle.c
index 1b5f1beb3b..d9579f851e 100644
--- a/bundle.c
+++ b/bundle.c
@@ -378,7 +378,8 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)
* in terms of a tag (e.g. v2.0 from the range
* "v1.0..v2.0")?
*/
- struct commit *one = lookup_commit_reference(&oid);
+ struct commit *one = lookup_commit_reference(the_repository,
+ &oid);
struct object *obj;
if (e->item == &(one->object)) {
diff --git a/commit.c b/commit.c
index b6e253f1af..b943b97aee 100644
--- a/commit.c
+++ b/commit.c
@@ -32,14 +32,14 @@ struct commit *lookup_commit_reference_gently_the_repository(
return object_as_type(obj, OBJ_COMMIT, quiet);
}
-struct commit *lookup_commit_reference(const struct object_id *oid)
+struct commit *lookup_commit_reference_the_repository(const struct object_id *oid)
{
return lookup_commit_reference_gently(the_repository, oid, 0);
}
struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref_name)
{
- struct commit *c = lookup_commit_reference(oid);
+ struct commit *c = lookup_commit_reference(the_repository, oid);
if (!c)
die(_("could not parse %s"), ref_name);
if (oidcmp(oid, &c->object.oid)) {
@@ -65,7 +65,7 @@ struct commit *lookup_commit_reference_by_name(const char *name)
if (get_oid_committish(name, &oid))
return NULL;
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (parse_commit(commit))
return NULL;
return commit;
diff --git a/commit.h b/commit.h
index 2ce5597066..9159165fde 100644
--- a/commit.h
+++ b/commit.h
@@ -47,7 +47,9 @@ void add_name_decoration(enum decoration_type type, const char *name, struct obj
const struct name_decoration *get_name_decoration(const struct object *obj);
struct commit *lookup_commit(const struct object_id *oid);
-struct commit *lookup_commit_reference(const struct object_id *oid);
+#define lookup_commit_reference(r, o) \
+ lookup_commit_reference_##r(o)
+struct commit *lookup_commit_reference_the_repository(const struct object_id *oid);
#define lookup_commit_reference_gently(r, o, q) \
lookup_commit_reference_gently_##r(o, q)
struct commit *lookup_commit_reference_gently_the_repository(
diff --git a/contrib/coccinelle/object_parser.cocci b/contrib/coccinelle/object_parser.cocci
index 7c1ef62e6d..bc00029f8c 100644
--- a/contrib/coccinelle/object_parser.cocci
+++ b/contrib/coccinelle/object_parser.cocci
@@ -67,3 +67,10 @@ expression F;
lookup_commit_reference_gently(
+the_repository,
E, F)
+
+@@
+expression E;
+@@
+ lookup_commit_reference(
++the_repository,
+ E)
diff --git a/notes-merge.c b/notes-merge.c
index 1053c65e83..ea701827ba 100644
--- a/notes-merge.c
+++ b/notes-merge.c
@@ -2,6 +2,7 @@
#include "commit.h"
#include "refs.h"
#include "object-store.h"
+#include "repository.h"
#include "diff.h"
#include "diffcore.h"
#include "xdiff-interface.h"
@@ -553,7 +554,7 @@ int notes_merge(struct notes_merge_options *o,
else if (!check_refname_format(o->local_ref, 0) &&
is_null_oid(&local_oid))
local = NULL; /* local_oid == null_oid indicates unborn ref */
- else if (!(local = lookup_commit_reference(&local_oid)))
+ else if (!(local = lookup_commit_reference(the_repository, &local_oid)))
die("Could not parse local commit %s (%s)",
oid_to_hex(&local_oid), o->local_ref);
trace_printf("\tlocal commit: %.7s\n", oid_to_hex(&local_oid));
@@ -571,7 +572,7 @@ int notes_merge(struct notes_merge_options *o,
die("Failed to resolve remote notes ref '%s'",
o->remote_ref);
}
- } else if (!(remote = lookup_commit_reference(&remote_oid))) {
+ } else if (!(remote = lookup_commit_reference(the_repository, &remote_oid))) {
die("Could not parse remote commit %s (%s)",
oid_to_hex(&remote_oid), o->remote_ref);
}
diff --git a/parse-options-cb.c b/parse-options-cb.c
index c6679cb2cd..624fcee6f4 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -87,7 +87,7 @@ int parse_opt_commits(const struct option *opt, const char *arg, int unset)
return -1;
if (get_oid(arg, &oid))
return error("malformed object name %s", arg);
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (!commit)
return error("no such commit %s", arg);
commit_list_insert(commit, opt->value);
diff --git a/remote.c b/remote.c
index a9386476fe..ecfa60a975 100644
--- a/remote.c
+++ b/remote.c
@@ -2039,13 +2039,13 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
/* Cannot stat if what we used to build on no longer exists */
if (read_ref(base, &oid))
return -1;
- theirs = lookup_commit_reference(&oid);
+ theirs = lookup_commit_reference(the_repository, &oid);
if (!theirs)
return -1;
if (read_ref(branch->refname, &oid))
return -1;
- ours = lookup_commit_reference(&oid);
+ ours = lookup_commit_reference(the_repository, &oid);
if (!ours)
return -1;
diff --git a/revision.c b/revision.c
index 629af0dca5..5c5375ac54 100644
--- a/revision.c
+++ b/revision.c
@@ -1563,8 +1563,8 @@ static int handle_dotdot_1(const char *arg, char *dotdot,
struct commit *a, *b;
struct commit_list *exclude;
- a = lookup_commit_reference(&a_obj->oid);
- b = lookup_commit_reference(&b_obj->oid);
+ a = lookup_commit_reference(the_repository, &a_obj->oid);
+ b = lookup_commit_reference(the_repository, &b_obj->oid);
if (!a || !b)
return dotdot_missing(arg, dotdot, revs, symmetric);
diff --git a/sequencer.c b/sequencer.c
index d0c3c808aa..d24586bc6f 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -857,7 +857,7 @@ static int update_squash_messages(enum todo_command command,
if (get_oid("HEAD", &head))
return error(_("need a HEAD to fixup"));
- if (!(head_commit = lookup_commit_reference(&head)))
+ if (!(head_commit = lookup_commit_reference(the_repository, &head)))
return error(_("could not read HEAD"));
if (!(head_message = get_commit_buffer(head_commit, NULL)))
return error(_("could not read HEAD's commit message"));
@@ -1300,7 +1300,7 @@ static int parse_insn_line(struct todo_item *item, const char *bol, char *eol)
if (status < 0)
return -1;
- item->commit = lookup_commit_reference(&commit_oid);
+ item->commit = lookup_commit_reference(the_repository, &commit_oid);
return !item->commit;
}
diff --git a/sha1_name.c b/sha1_name.c
index 160fec7062..ea169a28c1 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -849,7 +849,7 @@ static int get_parent(const char *name, int len,
if (ret)
return ret;
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (parse_commit(commit))
return -1;
if (!idx) {
@@ -877,7 +877,7 @@ static int get_nth_ancestor(const char *name, int len,
ret = get_oid_1(name, len, &oid, GET_OID_COMMITTISH);
if (ret)
return ret;
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
if (!commit)
return -1;
diff --git a/submodule.c b/submodule.c
index 1504812842..aec62e6c7d 100644
--- a/submodule.c
+++ b/submodule.c
@@ -515,8 +515,8 @@ static void show_submodule_header(struct diff_options *o, const char *path,
* Attempt to lookup the commit references, and determine if this is
* a fast forward or fast backwards update.
*/
- *left = lookup_commit_reference(one);
- *right = lookup_commit_reference(two);
+ *left = lookup_commit_reference(the_repository, one);
+ *right = lookup_commit_reference(the_repository, two);
/*
* Warn about missing commits in the submodule project, but only if
@@ -1820,9 +1820,9 @@ int merge_submodule(struct object_id *result, const char *path,
return 0;
}
- if (!(commit_base = lookup_commit_reference(base)) ||
- !(commit_a = lookup_commit_reference(a)) ||
- !(commit_b = lookup_commit_reference(b))) {
+ if (!(commit_base = lookup_commit_reference(the_repository, base)) ||
+ !(commit_a = lookup_commit_reference(the_repository, a)) ||
+ !(commit_b = lookup_commit_reference(the_repository, b))) {
MERGE_WARNING(path, "commits not present");
return 0;
}
--
2.15.1.433.g936d1b9894.dirty
next prev parent reply other threads:[~2018-02-06 0:13 UTC|newest]
Thread overview: 239+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-05 23:51 [RFC PATCH 000/194] Moving global state into the repository object Stefan Beller
2018-02-05 23:51 ` [PATCH 001/194] repository: introduce object store field Stefan Beller
2018-02-05 23:51 ` [PATCH 002/194] object-store: move alt_odb_list and alt_odb_tail to object store Stefan Beller
2018-02-05 23:51 ` [PATCH 003/194] object-store: move packed_git and packed_git_mru " Stefan Beller
2018-02-09 22:09 ` Junio C Hamano
2018-02-12 19:00 ` Stefan Beller
2018-02-12 21:04 ` Junio C Hamano
2018-02-12 21:40 ` René Scharfe
2018-02-12 21:48 ` Junio C Hamano
2018-02-13 18:52 ` René Scharfe
2018-02-13 19:45 ` Stefan Beller
2018-02-14 1:26 ` Junio C Hamano
2018-02-12 21:40 ` René Scharfe
2018-02-05 23:51 ` [PATCH 004/194] pack: move prepare_packed_git_run_once " Stefan Beller
2018-02-05 23:51 ` [PATCH 005/194] pack: move approximate object count " Stefan Beller
2018-02-05 23:52 ` [PATCH 006/194] sha1_file: add repository argument to alt_odb_usable Stefan Beller
2018-02-05 23:52 ` [PATCH 007/194] sha1_file: add repository argument to link_alt_odb_entry Stefan Beller
2018-02-05 23:52 ` [PATCH 008/194] sha1_file: add repository argument to read_info_alternates Stefan Beller
2018-02-05 23:52 ` [PATCH 009/194] sha1_file: add repository argument to link_alt_odb_entries Stefan Beller
2018-02-05 23:52 ` [PATCH 010/194] sha1_file: add repository argument to stat_sha1_file Stefan Beller
2018-02-05 23:52 ` [PATCH 011/194] sha1_file: add repository argument to open_sha1_file Stefan Beller
2018-02-05 23:52 ` [PATCH 012/194] sha1_file: add repository argument to map_sha1_file_1 Stefan Beller
2018-02-05 23:52 ` [PATCH 013/194] sha1_file: add repository argument to sha1_loose_object_info Stefan Beller
2018-02-05 23:52 ` [PATCH 014/194] object-store: add repository argument to prepare_alt_odb Stefan Beller
2018-02-05 23:52 ` [PATCH 015/194] object-store: add repository argument to foreach_alt_odb Stefan Beller
2018-02-05 23:52 ` [PATCH 016/194] pack: add repository argument to install_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 017/194] pack: add repository argument to prepare_packed_git_one Stefan Beller
2018-02-05 23:52 ` [PATCH 018/194] pack: add repository argument to rearrange_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 019/194] pack: add repository argument to prepare_packed_git_mru Stefan Beller
2018-02-05 23:52 ` [PATCH 020/194] pack: add repository argument to prepare_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 021/194] pack: add repository argument to reprepare_packed_git Stefan Beller
2018-02-05 23:54 ` Stefan Beller
2018-02-05 23:54 ` [PATCH 022/194] pack: add repository argument to sha1_file_name Stefan Beller
2018-02-05 23:54 ` [PATCH 023/194] pack: add repository argument to map_sha1_file Stefan Beller
2018-02-05 23:54 ` [PATCH 024/194] sha1_file: allow alt_odb_usable to handle arbitrary repositories Stefan Beller
2018-02-05 23:54 ` [PATCH 025/194] object-store: allow prepare_alt_odb " Stefan Beller
2018-02-06 1:19 ` brian m. carlson
2018-02-06 13:44 ` Derrick Stolee
2018-02-06 17:48 ` Stefan Beller
2018-02-08 1:47 ` brian m. carlson
2018-02-07 22:06 ` Jonathan Tan
2018-02-05 23:54 ` [PATCH 026/194] object-store: allow foreach_alt_odb " Stefan Beller
2018-02-05 23:54 ` [PATCH 027/194] pack: allow install_packed_git " Stefan Beller
2018-02-05 23:54 ` [PATCH 028/194] pack: allow rearrange_packed_git " Stefan Beller
2018-02-05 23:54 ` [PATCH 029/194] pack: allow prepare_packed_git_mru " Stefan Beller
2018-02-05 23:54 ` [PATCH 030/194] pack: allow prepare_packed_git_one " Stefan Beller
2018-02-05 23:54 ` [PATCH 031/194] pack: allow prepare_packed_git " Stefan Beller
2018-02-05 23:54 ` [PATCH 032/194] pack: allow reprepare_packed_git " Stefan Beller
2018-02-05 23:54 ` [PATCH 033/194] pack: allow sha1_file_name " Stefan Beller
2018-02-05 23:54 ` [PATCH 034/194] pack: allow stat_sha1_file " Stefan Beller
2018-02-05 23:54 ` [PATCH 035/194] pack: allow open_sha1_file " Stefan Beller
2018-02-05 23:54 ` [PATCH 036/194] pack: allow map_sha1_file_1 " Stefan Beller
2018-02-05 23:54 ` [PATCH 037/194] pack: allow map_sha1_file " Stefan Beller
2018-02-05 23:54 ` [PATCH 038/194] pack: allow sha1_loose_object_info " Stefan Beller
2018-02-07 22:33 ` Jonathan Tan
2018-02-07 23:31 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 039/194] replace_object.c: rename to use dash in file name Stefan Beller
2018-02-05 23:55 ` [PATCH 040/194] replace-object: move replace_object to object store Stefan Beller
2018-02-05 23:55 ` [PATCH 041/194] sha1_file: add repository argument to sha1_object_info_extended Stefan Beller
2018-02-05 23:55 ` [PATCH 042/194] object-store: move alternates API to new alternates.h Stefan Beller
2018-02-06 1:44 ` brian m. carlson
2018-02-06 17:53 ` Stefan Beller
2018-02-09 23:12 ` Junio C Hamano
2018-02-06 4:52 ` Eric Sunshine
2018-02-06 17:52 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 043/194] object-store: move loose object functions to new loose-object.h Stefan Beller
2018-02-05 23:55 ` [PATCH 044/194] pack: move struct pack_window and pack_entry to packfile.h Stefan Beller
2018-02-05 23:55 ` [PATCH 045/194] object-store: move object access functions to object-store.h Stefan Beller
2018-02-05 23:55 ` [PATCH 046/194] object-store: move replace_objects back to object-store Stefan Beller
2018-02-09 23:15 ` Junio C Hamano
2018-02-12 19:08 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 047/194] object-store: move lookup_replace_object to replace-object.h Stefan Beller
2018-02-05 23:55 ` [PATCH 048/194] replace-object: add repository argument to do_lookup_replace_object Stefan Beller
2018-02-05 23:55 ` [PATCH 049/194] replace-object: move replace objects prepared flag to object store Stefan Beller
2018-02-05 23:55 ` [PATCH 050/194] replace-object: check_replace_refs is safe in multi repo environment Stefan Beller
2018-02-06 4:30 ` Eric Sunshine
2018-02-05 23:55 ` [PATCH 051/194] refs: add repository argument to for_each_replace_ref Stefan Beller
2018-02-05 23:55 ` [PATCH 052/194] refs: add repository argument to get_main_ref_store Stefan Beller
2018-02-05 23:55 ` [PATCH 053/194] replace-object: add repository argument to register_replace_object Stefan Beller
2018-02-05 23:55 ` [PATCH 054/194] replace-object: add repository argument to register_replace_ref Stefan Beller
2018-02-05 23:55 ` [PATCH 055/194] replace-object: add repository argument to replace_object_pos Stefan Beller
2018-02-05 23:55 ` [PATCH 056/194] replace-object: allow replace_object_pos to handle arbitrary repositories Stefan Beller
2018-02-05 23:55 ` [PATCH 057/194] replace-object: allow register_replace_object " Stefan Beller
2018-02-05 23:55 ` [PATCH 058/194] replace-object: add repository argument to prepare_replace_object Stefan Beller
2018-02-05 23:55 ` [PATCH 059/194] refs: store the main ref store inside the repository struct Stefan Beller
2018-02-06 4:27 ` Eric Sunshine
2018-02-06 18:01 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 060/194] refs: allow for_each_replace_ref to handle arbitrary repositories Stefan Beller
2018-02-05 23:55 ` [PATCH 061/194] replace-object: allow prepare_replace_object " Stefan Beller
2018-02-05 23:55 ` [PATCH 062/194] replace_object: allow do_lookup_replace_object " Stefan Beller
2018-02-05 23:55 ` [PATCH 063/194] replace-object: add repository argument to lookup_replace_object Stefan Beller
2018-02-05 23:55 ` [PATCH 064/194] repository: allow lookup_replace_object to handle arbitrary repositories Stefan Beller
2018-02-05 23:55 ` [PATCH 065/194] object-store: add repository argument to sha1_object_info Stefan Beller
2018-02-06 1:55 ` brian m. carlson
2018-02-05 23:55 ` [PATCH 066/194] pack: add repository argument to retry_bad_packed_offset Stefan Beller
2018-02-05 23:55 ` [PATCH 067/194] pack: add repository argument to packed_to_object_type Stefan Beller
2018-02-05 23:55 ` [PATCH 068/194] pack: add repository argument to packed_object_info Stefan Beller
2018-02-05 23:55 ` [PATCH 069/194] pack: add repository argument to find_pack_entry Stefan Beller
2018-02-05 23:55 ` [PATCH 070/194] packfile: add repository argument to read_object Stefan Beller
2018-02-05 23:55 ` [PATCH 071/194] packfile: add repository argument to unpack_entry Stefan Beller
2018-02-05 23:55 ` [PATCH 072/194] packfile: add repository argument to cache_or_unpack_entry Stefan Beller
2018-02-05 23:55 ` [PATCH 073/194] pack: allow find_pack_entry to handle arbitrary repositories Stefan Beller
2018-02-05 23:55 ` [PATCH 074/194] object-store: allow sha1_object_info " Stefan Beller
2018-02-05 23:55 ` [PATCH 075/194] fetch, push: do not use submodule as alternate in has_commits check Stefan Beller
2018-02-06 4:20 ` Eric Sunshine
2018-02-06 20:33 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 076/194] push: add test showing bad interaction of replace refs and submodules Stefan Beller
2018-02-06 2:20 ` brian m. carlson
2018-02-06 22:43 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 077/194] replace_object: allow register_replace_ref to handle arbitrary repositories Stefan Beller
2018-02-05 23:55 ` [PATCH 078/194] cache.h: migrate the definition of object_id to object.h Stefan Beller
2018-02-05 23:55 ` [PATCH 079/194] repository: introduce object parser field Stefan Beller
2018-02-05 23:55 ` [PATCH 080/194] object: add repository argument to parse_object Stefan Beller
2018-02-05 23:55 ` [PATCH 081/194] object: add repository argument to create_object Stefan Beller
2018-02-05 23:55 ` [PATCH 082/194] object: add repository argument to lookup_object Stefan Beller
2018-02-05 23:55 ` [PATCH 083/194] object: add repository argument to grow_object_hash Stefan Beller
2018-02-05 23:55 ` [PATCH 084/194] blob: add repository argument to lookup_blob Stefan Beller
2018-02-05 23:55 ` [PATCH 085/194] tree: add repository argument to lookup_tree Stefan Beller
2018-02-05 23:55 ` [PATCH 086/194] tag: add repository argument to lookup_tag Stefan Beller
2018-02-05 23:55 ` [PATCH 087/194] tag: add repository argument to parse_tag_buffer Stefan Beller
2018-02-05 23:55 ` [PATCH 088/194] tag: add repository argument to deref_tag Stefan Beller
2018-02-05 23:55 ` [PATCH 089/194] object: add repository argument to lookup_commit_reference_gently Stefan Beller
2018-02-05 23:55 ` Stefan Beller [this message]
2018-02-05 23:55 ` [PATCH 091/194] object: add repository argument to lookup_commit Stefan Beller
2018-02-05 23:55 ` [PATCH 092/194] object: move grafts to object parser Stefan Beller
2018-02-06 4:07 ` Eric Sunshine
2018-02-06 18:04 ` Stefan Beller
2018-02-05 23:55 ` [PATCH 093/194] object: add repository argument to commit_graft_pos Stefan Beller
2018-02-05 23:55 ` [PATCH 094/194] commit: add repository argument to parse_commit_buffer Stefan Beller
2018-02-05 23:55 ` [PATCH 095/194] object: add repository argument to register_commit_graft Stefan Beller
2018-02-05 23:55 ` [PATCH 096/194] object: add repository argument to read_graft_file Stefan Beller
2018-02-05 23:55 ` [PATCH 097/194] object: add repository argument to prepare_commit_graft Stefan Beller
2018-02-05 23:55 ` [PATCH 098/194] object: add repository argument to lookup_commit_graft Stefan Beller
2018-02-06 0:16 ` [PATCH 099/194] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 100/194] object: allow create_object " Stefan Beller
2018-02-06 0:16 ` [PATCH 101/194] object: allow lookup_object " Stefan Beller
2018-02-06 0:16 ` [PATCH 102/194] object: add repository argument to lookup_unknown_object Stefan Beller
2018-02-06 0:16 ` [PATCH 103/194] object: allow lookup_unknown_object to handle arbitrary repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 104/194] object: add repository argument to parse_object_buffer Stefan Beller
2018-02-06 0:16 ` [PATCH 105/194] repository: keep track of all open repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 106/194] Rename sha1_object_info.cocci to object_store.cocci Stefan Beller
2018-02-06 0:16 ` [PATCH 107/194] alternates: add repository argument to add_to_alternates_file Stefan Beller
2018-02-06 0:16 ` [PATCH 108/194] alternates: add repository argument to add_to_alternates_memory Stefan Beller
2018-02-06 0:16 ` [PATCH 109/194] object-store: move check_sha1_signature to object-store.h Stefan Beller
2018-02-06 0:16 ` [PATCH 110/194] object-store: add repository argument to check_sha1_signature Stefan Beller
2018-02-06 0:16 ` [PATCH 111/194] object-store: add repository argument to read_object Stefan Beller
2018-02-06 0:16 ` [PATCH 112/194] object-store: add repository argument to read_sha1_file_extended Stefan Beller
2018-02-06 0:16 ` [PATCH 113/194] object-store: add repository argument to read_sha1_file Stefan Beller
2018-02-06 0:16 ` [PATCH 114/194] object: move read_object_with_reference to object.h Stefan Beller
2018-02-06 0:16 ` [PATCH 115/194] packfile: add repository argument to has_packed_and_bad Stefan Beller
2018-02-06 0:16 ` [PATCH 116/194] packfile: allow has_packed_and_bad to handle arbitrary repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 117/194] streaming: add repository argument to open_istream_fn Stefan Beller
2018-02-06 0:16 ` [PATCH 119/194] streaming: add repository argument to istream_source Stefan Beller
2018-02-06 0:16 ` [PATCH 120/194] streaming: allow istream_source to handle arbitrary repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 121/194] sha1_file: allow read_object " Stefan Beller
2018-02-06 0:16 ` [PATCH 122/194] object-store.h: allow read_sha1_file{_extended} " Stefan Beller
2018-02-06 0:16 ` [PATCH 123/194] streaming: allow open_istream_incore " Stefan Beller
2018-02-06 0:16 ` [PATCH 124/194] streaming: allow open_istream_pack_non_delta " Stefan Beller
2018-02-06 0:16 ` [PATCH 125/194] streaming: allow open_istream_loose " Stefan Beller
2018-02-06 0:16 ` [PATCH 126/194] streaming: allow open_istream " Stefan Beller
2018-02-06 0:16 ` [PATCH 127/194] alternates: convert add_to_alternates_memory to handle arbitrary repos Stefan Beller
2018-02-06 0:16 ` [PATCH 128/194] object: add repository argument to object_as_type Stefan Beller
2018-02-06 0:16 ` [PATCH 129/194] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-02-06 0:16 ` [PATCH 130/194] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-02-06 0:16 ` [PATCH 131/194] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-02-06 0:16 ` [PATCH 132/194] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-02-06 0:16 ` [PATCH 133/194] alloc: add repository argument to alloc_object_node Stefan Beller
2018-02-06 0:16 ` [PATCH 134/194] alloc: add repository argument to alloc_report Stefan Beller
2018-02-06 0:16 ` [PATCH 135/194] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-02-06 0:16 ` [PATCH 136/194] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-02-06 3:35 ` Eric Sunshine
2018-02-06 0:16 ` [PATCH 137/194] object: allow object_as_type to handle arbitrary repositories Stefan Beller
2018-02-06 0:16 ` [PATCH 138/194] commit: allow lookup_commit " Stefan Beller
2018-02-06 0:16 ` [PATCH 139/194] sha1_file: allow add_to_alternates_file " Stefan Beller
2018-02-06 0:16 ` [PATCH 140/194] commit: convert commit_graft_pos() " Stefan Beller
2018-02-06 0:16 ` [PATCH 141/194] commit: convert register_commit_graft " Stefan Beller
2018-02-06 0:16 ` [PATCH 142/194] commit: convert read_graft_file " Stefan Beller
2018-02-06 0:16 ` [PATCH 143/194] object: add repository argument to parse_commit_gently Stefan Beller
2018-02-06 0:16 ` [PATCH 144/194] commit: add repository argument to parse_commit Stefan Beller
2018-02-06 0:17 ` [PATCH 145/194] commit: add repository argument to set_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 146/194] commit: add repository argument to get_cached_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 147/194] commit: add repository argument to unuse_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 148/194] commit: add repository argument to free_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 149/194] commit: allow commit buffer functions to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 150/194] tree: allow lookup_tree " Stefan Beller
2018-02-06 0:17 ` [PATCH 151/194] cache: convert get_graft_file " Stefan Beller
2018-02-06 0:17 ` [PATCH 152/194] shallow: add repository argument to set_alternate_shallow_file Stefan Beller
2018-02-06 0:17 ` [PATCH 153/194] shallow: add repository argument to register_shallow Stefan Beller
2018-02-06 0:17 ` [PATCH 154/194] shallow: add repository argument to check_shallow_file_for_update Stefan Beller
2018-02-06 0:17 ` [PATCH 155/194] shallow: add repository argument to is_repository_shallow Stefan Beller
2018-02-06 0:17 ` [PATCH 156/194] migrate cached path to use the_repository Stefan Beller
2018-02-06 0:17 ` [PATCH 157/194] shallow: migrate shallow information into the object parser Stefan Beller
2018-02-06 0:17 ` [PATCH 158/194] commit: allow prepare_commit_graft to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 159/194] commit: allow lookup_commit_graft " Stefan Beller
2018-02-06 0:17 ` [PATCH 160/194] commit: allow arbitrary repository argument for parse_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 161/194] commit: allow parse_commit_gently to handle arbitrary repository Stefan Beller
2018-02-06 0:17 ` [PATCH 162/194] commit: add repository argument to get_merge_bases_many_0 Stefan Beller
2018-02-06 0:17 ` [PATCH 163/194] commit: add repository argument to merge_bases_many Stefan Beller
2018-02-06 0:17 ` [PATCH 164/194] commit: add repository argument to paint_down_to_common Stefan Beller
2018-02-06 0:17 ` [PATCH 165/194] commit: allow parse_commit to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 166/194] commit: allow paint_down_to_common " Stefan Beller
2018-02-06 0:17 ` [PATCH 167/194] commit: allow merge_bases_many " Stefan Beller
2018-02-06 0:17 ` [PATCH 168/194] commit: add repository argument to remove_redundant Stefan Beller
2018-02-06 0:17 ` [PATCH 169/194] commit: allow remove_redundant to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 170/194] commit: allow get_merge_bases_many_0 " Stefan Beller
2018-02-06 0:17 ` [PATCH 171/194] commit: add repository argument to get_merge_bases Stefan Beller
2018-02-06 0:17 ` [PATCH 172/194] commit: allow get_merge_bases to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 173/194] blob: allow lookup_blob " Stefan Beller
2018-02-06 0:17 ` [PATCH 174/194] tag: allow lookup_tag " Stefan Beller
2018-02-06 0:17 ` [PATCH 175/194] tag: allow parse_tag_buffer " Stefan Beller
2018-02-06 0:17 ` [PATCH 176/194] object: allow parse_object_buffer " Stefan Beller
2018-02-06 0:17 ` [PATCH 177/194] objects: allow check_sha1_signature " Stefan Beller
2018-02-06 0:17 ` [PATCH 178/194] object: allow parse_object " Stefan Beller
2018-02-06 0:17 ` [PATCH 179/194] tag: allow deref_tag " Stefan Beller
2018-02-06 0:17 ` [PATCH 180/194] commit: allow lookup_commit_reference_gently " Stefan Beller
2018-02-06 0:17 ` [PATCH 181/194] commit: allow lookup_commit_reference " Stefan Beller
2018-02-06 0:17 ` [PATCH 182/194] commit: add repository argument to get_commit_buffer Stefan Beller
2018-02-06 0:17 ` [PATCH 183/194] commit: add repository argument to logmsg_reencode Stefan Beller
2018-02-06 0:17 ` [PATCH 184/194] pretty: add repository argument to format_commit_message Stefan Beller
2018-02-06 0:17 ` [PATCH 185/194] commit: allow get_commit_buffer to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 186/194] pretty: allow logmsg_reencode " Stefan Beller
2018-02-06 0:17 ` [PATCH 187/194] commit: add repository argument to in_merge_bases_many Stefan Beller
2018-02-06 0:17 ` [PATCH 188/194] commit: add repository argument to in_merge_bases Stefan Beller
2018-02-06 0:17 ` [PATCH 189/194] commit: allow in_merge_bases_many to handle arbitrary repositories Stefan Beller
2018-02-06 0:17 ` [PATCH 190/194] commit: allow in_merge_bases " Stefan Beller
2018-02-06 0:17 ` [PATCH 191/194] pretty: allow format_commit_message " Stefan Beller
2018-02-06 0:17 ` [PATCH 192/194] submodule: add repository argument to print_submodule_summary Stefan Beller
2018-02-06 0:17 ` [PATCH 193/194] submodule: Reorder open_submodule function Stefan Beller
2018-02-06 0:17 ` [PATCH 194/194] submodule: use submodule repos for object lookup Stefan Beller
2018-02-06 0:54 ` [RFC PATCH 000/194] Moving global state into the repository object Stefan Beller
2018-02-06 3:32 ` brian m. carlson
2018-02-06 20:25 ` Stefan Beller
2018-02-06 23:46 ` Stefan Beller
2018-02-07 9:54 ` Eric Sunshine
2018-02-07 11:48 ` Duy Nguyen
2018-02-07 18:06 ` Stefan Beller
2018-02-10 10:36 ` Duy Nguyen
2018-02-07 16:39 ` Jeff Hostetler
2018-02-08 15:42 ` Elijah Newren
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=20180205235735.216710-70-sbeller@google.com \
--to=sbeller@google.com \
--cc=git@vger.kernel.org \
--cc=jrnieder@gmail.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).