From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: pclouds@gmail.com
Cc: Johannes.Schindelin@gmx.de, git@vger.kernel.org,
gitster@pobox.com, stefanbeller@gmail.com, szeder.dev@gmail.com
Subject: [PATCH v4 11/34] commit.cocci: refactor code, avoid double rewrite
Date: Tue, 16 Apr 2019 16:33:18 +0700 [thread overview]
Message-ID: <20190416093341.17079-12-pclouds@gmail.com> (raw)
In-Reply-To: <20190416093341.17079-1-pclouds@gmail.com>
"maybe" pointer in 'struct commit' is tricky because it can be lazily
initialized to take advantage of commit-graph if available. This makes
it not safe to access directly.
This leads to a rule in commit.cocci to rewrite 'x->maybe_tree' to
'get_commit_tree(x)'. But that rule alone could lead to incorrectly
rewrite assignments, e.g. from
x->maybe_tree = yes
to
get_commit_tree(x) = yes
Because of this we have a second rule to revert this effect. Szeder
found out that we could do better by performing the assignment rewrite
rule first, then the remaining is read-only access and handled by the
current first rule.
For this to work, we need to transform "x->maybe_tree = y" to something
that does NOT contain "x->maybe_tree" to avoid the original first
rule. This is where set_commit_tree() comes in.
Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
commit-graph.c | 9 +++++++--
commit.c | 9 +++++++--
contrib/coccinelle/commit.cocci | 20 +++++++++++++-------
merge-recursive.c | 7 ++++++-
4 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/commit-graph.c b/commit-graph.c
index 47e9be0a3a..155a270457 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -343,6 +343,11 @@ static void fill_commit_graph_info(struct commit *item, struct commit_graph *g,
item->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
}
+static inline void set_commit_tree(struct commit *c, struct tree *t)
+{
+ c->maybe_tree = t;
+}
+
static int fill_commit_in_graph(struct repository *r,
struct commit *item,
struct commit_graph *g, uint32_t pos)
@@ -356,7 +361,7 @@ static int fill_commit_in_graph(struct repository *r,
item->object.parsed = 1;
item->graph_pos = pos;
- item->maybe_tree = NULL;
+ set_commit_tree(item, NULL);
date_high = get_be32(commit_data + g->hash_len + 8) & 0x3;
date_low = get_be32(commit_data + g->hash_len + 12);
@@ -442,7 +447,7 @@ static struct tree *load_tree_for_commit(struct repository *r,
GRAPH_DATA_WIDTH * (c->graph_pos);
hashcpy(oid.hash, commit_data);
- c->maybe_tree = lookup_tree(r, &oid);
+ set_commit_tree(c, lookup_tree(r, &oid));
return c->maybe_tree;
}
diff --git a/commit.c b/commit.c
index a5333c7ac6..043ba64f17 100644
--- a/commit.c
+++ b/commit.c
@@ -340,6 +340,11 @@ void free_commit_buffer(struct parsed_object_pool *pool, struct commit *commit)
}
}
+static inline void set_commit_tree(struct commit *c, struct tree *t)
+{
+ c->maybe_tree = t;
+}
+
struct tree *get_commit_tree(const struct commit *commit)
{
if (commit->maybe_tree || !commit->object.parsed)
@@ -358,7 +363,7 @@ struct object_id *get_commit_tree_oid(const struct commit *commit)
void release_commit_memory(struct parsed_object_pool *pool, struct commit *c)
{
- c->maybe_tree = NULL;
+ set_commit_tree(c, NULL);
c->index = 0;
free_commit_buffer(pool, c);
free_commit_list(c->parents);
@@ -406,7 +411,7 @@ int parse_commit_buffer(struct repository *r, struct commit *item, const void *b
if (get_oid_hex(bufptr + 5, &parent) < 0)
return error("bad tree pointer in commit %s",
oid_to_hex(&item->object.oid));
- item->maybe_tree = lookup_tree(r, &parent);
+ set_commit_tree(item, lookup_tree(r, &parent));
bufptr += tree_entry_len + 1; /* "tree " + "hex sha1" + "\n" */
pptr = &item->parents;
diff --git a/contrib/coccinelle/commit.cocci b/contrib/coccinelle/commit.cocci
index c49aa558f0..663658a127 100644
--- a/contrib/coccinelle/commit.cocci
+++ b/contrib/coccinelle/commit.cocci
@@ -10,19 +10,25 @@ expression c;
- c->maybe_tree->object.oid.hash
+ get_commit_tree_oid(c)->hash
-// These excluded functions must access c->maybe_tree direcly.
@@
-identifier f !~ "^(get_commit_tree|get_commit_tree_in_graph_one|load_tree_for_commit)$";
+identifier f !~ "^set_commit_tree$";
expression c;
+expression s;
@@
f(...) {<...
-- c->maybe_tree
-+ get_commit_tree(c)
+- c->maybe_tree = s
++ set_commit_tree(c, s)
...>}
+// These excluded functions must access c->maybe_tree direcly.
+// Note that if c->maybe_tree is written somewhere outside of these
+// functions, then the recommended transformation will be bogus with
+// get_commit_tree() on the LHS.
@@
+identifier f !~ "^(get_commit_tree|get_commit_tree_in_graph_one|load_tree_for_commit|set_commit_tree)$";
expression c;
-expression s;
@@
-- get_commit_tree(c) = s
-+ c->maybe_tree = s
+ f(...) {<...
+- c->maybe_tree
++ get_commit_tree(c)
+ ...>}
diff --git a/merge-recursive.c b/merge-recursive.c
index 6c40c61c47..ca4731a719 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -163,6 +163,11 @@ static struct tree *shift_tree_object(struct repository *repo,
return lookup_tree(repo, &shifted);
}
+static inline void set_commit_tree(struct commit *c, struct tree *t)
+{
+ c->maybe_tree = t;
+}
+
static struct commit *make_virtual_commit(struct repository *repo,
struct tree *tree,
const char *comment)
@@ -170,7 +175,7 @@ static struct commit *make_virtual_commit(struct repository *repo,
struct commit *commit = alloc_commit_node(repo);
set_merge_remote_desc(commit, comment, (struct object *)commit);
- commit->maybe_tree = tree;
+ set_commit_tree(commit, tree);
commit->object.parsed = 1;
return commit;
}
--
2.21.0.682.g30d2204636
next prev parent reply other threads:[~2019-04-16 9:35 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-30 11:18 [PATCH 00/31] Kill the_repository in sha1-name.c Nguyễn Thái Ngọc Duy
2019-03-30 11:18 ` [PATCH 01/31] packfile.c: add repo_approximate_object_count() Nguyễn Thái Ngọc Duy
2019-03-30 11:18 ` [PATCH 02/31] refs.c: add refs_ref_exists() Nguyễn Thái Ngọc Duy
2019-03-30 11:18 ` [PATCH 03/31] refs.c: add refs_shorten_unambiguous_ref() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 04/31] refs.c: remove the_repo from substitute_branch_name() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 05/31] refs.c: remove the_repo from expand_ref() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 06/31] refs.c: add repo_dwim_ref() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 07/31] refs.c: add repo_dwim_log() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 08/31] refs.c: remove the_repo from read_ref_at() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 09/31] commit.c: add repo_get_commit_tree() Nguyễn Thái Ngọc Duy
2019-04-02 15:39 ` SZEDER Gábor
2019-03-30 11:19 ` [PATCH 10/31] sha1-name.c: remove the_repo from sort_ambiguous() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 11/31] sha1-name.c: remove the_repo from find_abbrev_len_packed() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 12/31] sha1-name.c: add repo_find_unique_abbrev_r() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 13/31] sha1-name.c: store and use repo in struct disambiguate_state Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 14/31] sha1-name.c: add repo_for_each_abbrev() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 15/31] sha1-name.c: remove the_repo from get_short_oid() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 16/31] sha1-name.c: remove the_repo from interpret_nth_prior_checkout() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 17/31] sha1-name.c: remove the_repo from interpret_branch_mark() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 18/31] sha1-name.c: add repo_interpret_branch_name() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 19/31] sha1-name.c: remove the_repo from get_oid_oneline() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 20/31] sha1-name.c: remove the_repo from get_describe_name() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 21/31] sha1-name.c: remove the_repo from get_oid_basic() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 22/31] sha1-name.c: remove the_repo from get_oid_1() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 23/31] sha1-name.c: remove the_repo from handle_one_ref() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 24/31] sha1-name.c: remove the_repo from diagnose_invalid_index_path() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 25/31] sha1-name.c: remove the_repo from resolve_relative_path() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 26/31] sha1-name.c: remove the_repo from get_oid_with_context_1() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 27/31] sha1-name.c: add repo_get_oid() Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 28/31] submodule-config.c: use repo_get_oid for reading .gitmodules Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 29/31] sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 30/31] sha1-name.c: remove the_repo from other get_oid_* Nguyễn Thái Ngọc Duy
2019-03-30 11:19 ` [PATCH 31/31] sha1-name.c: remove the_repo from get_oid_mb() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 00/32] nd/sha1-name-c-wo-the-repository updates Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 01/32] rebase: 'make coccicheck' cleanup Nguyễn Thái Ngọc Duy
2019-04-04 17:25 ` SZEDER Gábor
2019-04-05 9:26 ` Duy Nguyen
2019-04-09 10:58 ` SZEDER Gábor
2019-04-03 11:34 ` [PATCH v2 02/32] packfile.c: add repo_approximate_object_count() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 03/32] refs.c: add refs_ref_exists() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 04/32] refs.c: add refs_shorten_unambiguous_ref() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 05/32] refs.c: remove the_repo from substitute_branch_name() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 06/32] refs.c: remove the_repo from expand_ref() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 07/32] refs.c: add repo_dwim_ref() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 08/32] refs.c: add repo_dwim_log() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 09/32] refs.c: remove the_repo from read_ref_at() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 10/32] commit.c: add repo_get_commit_tree() Nguyễn Thái Ngọc Duy
2019-04-04 17:04 ` SZEDER Gábor
2019-04-05 9:32 ` Duy Nguyen
2019-04-05 18:13 ` Johannes Schindelin
2019-04-03 11:34 ` [PATCH v2 11/32] sha1-name.c: remove the_repo from sort_ambiguous() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 12/32] sha1-name.c: remove the_repo from find_abbrev_len_packed() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 13/32] sha1-name.c: add repo_find_unique_abbrev_r() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 14/32] sha1-name.c: store and use repo in struct disambiguate_state Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 15/32] sha1-name.c: add repo_for_each_abbrev() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 16/32] sha1-name.c: remove the_repo from get_short_oid() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 17/32] sha1-name.c: remove the_repo from interpret_nth_prior_checkout() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 18/32] sha1-name.c: remove the_repo from interpret_branch_mark() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 19/32] sha1-name.c: add repo_interpret_branch_name() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 20/32] sha1-name.c: remove the_repo from get_oid_oneline() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 21/32] sha1-name.c: remove the_repo from get_describe_name() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 22/32] sha1-name.c: remove the_repo from get_oid_basic() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 23/32] sha1-name.c: remove the_repo from get_oid_1() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 24/32] sha1-name.c: remove the_repo from handle_one_ref() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 25/32] sha1-name.c: remove the_repo from diagnose_invalid_index_path() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 26/32] sha1-name.c: remove the_repo from resolve_relative_path() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 27/32] sha1-name.c: remove the_repo from get_oid_with_context_1() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 28/32] sha1-name.c: add repo_get_oid() Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 29/32] submodule-config.c: use repo_get_oid for reading .gitmodules Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 30/32] sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 31/32] sha1-name.c: remove the_repo from other get_oid_* Nguyễn Thái Ngọc Duy
2019-04-03 11:34 ` [PATCH v2 32/32] sha1-name.c: remove the_repo from get_oid_mb() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 00/33] nd/sha1-name-c-wo-the-repository updates Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 01/33] builtin rebase: use FREE_AND_NULL Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 02/33] builtin rebase: use oideq() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 03/33] packfile.c: add repo_approximate_object_count() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 04/33] refs.c: add refs_ref_exists() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 05/33] refs.c: add refs_shorten_unambiguous_ref() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 06/33] refs.c: remove the_repo from substitute_branch_name() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 07/33] refs.c: remove the_repo from expand_ref() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 08/33] refs.c: add repo_dwim_ref() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 09/33] refs.c: add repo_dwim_log() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 10/33] refs.c: remove the_repo from read_ref_at() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 11/33] commit.c: add repo_get_commit_tree() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 12/33] sha1-name.c: remove the_repo from sort_ambiguous() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 13/33] sha1-name.c: remove the_repo from find_abbrev_len_packed() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 14/33] sha1-name.c: add repo_find_unique_abbrev_r() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 15/33] sha1-name.c: store and use repo in struct disambiguate_state Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 16/33] sha1-name.c: add repo_for_each_abbrev() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 17/33] sha1-name.c: remove the_repo from get_short_oid() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 18/33] sha1-name.c: remove the_repo from interpret_nth_prior_checkout() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 19/33] sha1-name.c: remove the_repo from interpret_branch_mark() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 20/33] sha1-name.c: add repo_interpret_branch_name() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 21/33] sha1-name.c: remove the_repo from get_oid_oneline() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 22/33] sha1-name.c: remove the_repo from get_describe_name() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 23/33] sha1-name.c: remove the_repo from get_oid_basic() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 24/33] sha1-name.c: remove the_repo from get_oid_1() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 25/33] sha1-name.c: remove the_repo from handle_one_ref() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 26/33] sha1-name.c: remove the_repo from diagnose_invalid_index_path() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 27/33] sha1-name.c: remove the_repo from resolve_relative_path() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 28/33] sha1-name.c: remove the_repo from get_oid_with_context_1() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 29/33] sha1-name.c: add repo_get_oid() Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 30/33] submodule-config.c: use repo_get_oid for reading .gitmodules Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 31/33] sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 32/33] sha1-name.c: remove the_repo from other get_oid_* Nguyễn Thái Ngọc Duy
2019-04-06 11:34 ` [PATCH v3 33/33] sha1-name.c: remove the_repo from get_oid_mb() Nguyễn Thái Ngọc Duy
2019-04-10 20:56 ` [PATCH v3 00/33] nd/sha1-name-c-wo-the-repository updates Johannes Schindelin
2019-04-11 0:26 ` Duy Nguyen
2019-04-11 20:36 ` Johannes Schindelin
2019-04-11 20:51 ` SZEDER Gábor
2019-04-11 20:58 ` SZEDER Gábor
2019-04-12 0:17 ` SZEDER Gábor
2019-04-12 14:25 ` Johannes Schindelin
2019-04-13 10:16 ` [PATCH v3* 11/33] commit.c: add repo_get_commit_tree() Nguyễn Thái Ngọc Duy
2019-04-13 12:22 ` SZEDER Gábor
2019-04-15 13:20 ` Johannes Schindelin
2019-04-13 12:14 ` [PATCH v3 00/33] nd/sha1-name-c-wo-the-repository updates SZEDER Gábor
2019-04-13 14:00 ` Duy Nguyen
2019-04-16 9:33 ` [PATCH v4 00/34] " Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 01/34] builtin rebase: use FREE_AND_NULL Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 02/34] builtin rebase: use oideq() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 03/34] packfile.c: add repo_approximate_object_count() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 04/34] refs.c: add refs_ref_exists() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 05/34] refs.c: add refs_shorten_unambiguous_ref() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 06/34] refs.c: remove the_repo from substitute_branch_name() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 07/34] refs.c: remove the_repo from expand_ref() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 08/34] refs.c: add repo_dwim_ref() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 09/34] refs.c: add repo_dwim_log() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 10/34] refs.c: remove the_repo from read_ref_at() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` Nguyễn Thái Ngọc Duy [this message]
2019-04-16 9:33 ` [PATCH v4 12/34] commit.c: add repo_get_commit_tree() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 13/34] sha1-name.c: remove the_repo from sort_ambiguous() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 14/34] sha1-name.c: remove the_repo from find_abbrev_len_packed() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 15/34] sha1-name.c: add repo_find_unique_abbrev_r() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 16/34] sha1-name.c: store and use repo in struct disambiguate_state Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 17/34] sha1-name.c: add repo_for_each_abbrev() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 18/34] sha1-name.c: remove the_repo from get_short_oid() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 19/34] sha1-name.c: remove the_repo from interpret_nth_prior_checkout() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 20/34] sha1-name.c: remove the_repo from interpret_branch_mark() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 21/34] sha1-name.c: add repo_interpret_branch_name() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 22/34] sha1-name.c: remove the_repo from get_oid_oneline() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 23/34] sha1-name.c: remove the_repo from get_describe_name() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 24/34] sha1-name.c: remove the_repo from get_oid_basic() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 25/34] sha1-name.c: remove the_repo from get_oid_1() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 26/34] sha1-name.c: remove the_repo from handle_one_ref() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 27/34] sha1-name.c: remove the_repo from diagnose_invalid_index_path() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 28/34] sha1-name.c: remove the_repo from resolve_relative_path() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 29/34] sha1-name.c: remove the_repo from get_oid_with_context_1() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 30/34] sha1-name.c: add repo_get_oid() Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 31/34] submodule-config.c: use repo_get_oid for reading .gitmodules Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 32/34] sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 33/34] sha1-name.c: remove the_repo from other get_oid_* Nguyễn Thái Ngọc Duy
2019-04-16 9:33 ` [PATCH v4 34/34] sha1-name.c: remove the_repo from get_oid_mb() Nguyễn Thái Ngọc Duy
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190416093341.17079-12-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=stefanbeller@gmail.com \
--cc=szeder.dev@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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.