git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: "SZEDER Gábor" <szeder.dev@gmail.com>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Git Mailing List <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>,
	Stefan Beller <stefanbeller@gmail.com>,
	Derrick Stolee <dstolee@microsoft.com>
Subject: Re: [PATCH v3 00/33] nd/sha1-name-c-wo-the-repository updates
Date: Sat, 13 Apr 2019 21:00:02 +0700	[thread overview]
Message-ID: <CACsJy8DxOV6qSFPNZd_zvbnOiTETqnnK3NS+u0fhNLnuesEQhg@mail.gmail.com> (raw)
In-Reply-To: <20190413121432.GB15936@szeder.dev>

On Sat, Apr 13, 2019 at 7:14 PM SZEDER Gábor <szeder.dev@gmail.com> wrote:
>
> On Fri, Apr 12, 2019 at 04:25:08PM +0200, Johannes Schindelin wrote:
> > Hi,
> >
> > On Fri, 12 Apr 2019, SZEDER Gábor wrote:
> >
> > > On Thu, Apr 11, 2019 at 10:58:57PM +0200, SZEDER Gábor wrote:
> > > > On Thu, Apr 11, 2019 at 10:51:46PM +0200, SZEDER Gábor wrote:
> > > > > On Wed, Apr 10, 2019 at 10:56:52PM +0200, Johannes Schindelin wrote:
> > > > > > >         ...>}
> > > > > > >
> > > > > > >       @@
> > > > > > >     + expression c;
> > > > > > >     ++expression r;
> > > > > > >     + expression s;
> > > > > > >     + @@
> > > > > > >     +-- get_commit_tree(c) = s
> > > > > > >     ++- repo_get_commit_tree(r, c) = s
> > > > > > >     + + c->maybe_tree = s
> > > > > >
> > > > > > I think this is wrong, and admittedly I had the very same version
> > > > > > originally.
> > > > > >
> > > > > > When you have an arbitrary `r` in any `repo_get_commit_tree(r, c)` (as
> > > > > > opposed to `the_repository`), the conversion to `c->maybe_tree` is most
> > > > > > likely incorrect.
> > > > > >
> > > > > > Therefore, I don't think that we can do that.
> > > > >
> > > > > So, as far as I understand, the goal of these 'c->maybe_tree'-related
> > > > > semantic patches is to prevent "generic" parts of Git from accessing
> > > > > this field directly, as it might not be initialized in a
> > > > > commit-graph-enabled repository.
> > > > >
> > > > > Only three functions are explicitly exempt, while this last semantic
> > > > > patch in question implicitly allows a few more that assign a value to
> > > > > 'c->maybe_tree'.  These functions are release_commit_memory() and
> > > > > parse_commit_buffer() in 'commit.c' and fill_commit_in_graph() in
> > > > > 'commit-graph.c',
> > >
> > > ... and make_virtual_commit() in 'merge-recursive.c'.
> > >
> > > > and after a quick look these functions seem to be
> > > > > rather fundamenal in the life-cycle of a commit object.
> > > >
> > > > Erm, not "commit object"; I meant the life-cycle of a 'struct commit'
> > > > instance.
> > > >
> > > > > I think they deserve to be explicitly exempted, too, and then we could
> > > > > remove this last semantic patch altogether.
> > >
> > > And it would look like this.  Yeah, that's a very long line there, but
> > > I don't think we can break it up.
> > >
> > >   -- >8 --
> > >
> > > diff --git a/contrib/coccinelle/commit.cocci b/contrib/coccinelle/commit.cocci
> > > index 57c8f71479..fe814f313e 100644
> > > --- a/contrib/coccinelle/commit.cocci
> > > +++ b/contrib/coccinelle/commit.cocci
> > > @@ -10,20 +10,15 @@ expression c;
> > >  - c->maybe_tree->object.oid.hash
> > >  + get_commit_tree_oid(c)->hash
> > >
> > > -// These excluded functions must access c->maybe_tree direcly.
> > > +// These excluded functions must access/modify 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
> > > +// repo_get_commit_tree() on the LHS.
> > >  @@
> > > -identifier f !~ "^(repo_get_commit_tree|get_commit_tree_in_graph_one|load_tree_for_commit)$";
> > > -expression c;
> > > +identifier f !~ "^(repo_get_commit_tree|get_commit_tree_in_graph_one|load_tree_for_commit|fill_commit_in_graph|parse_commit_buffer|release_commit_memory|make_virtual_commit)$";
> >
> > Hahahaha! That's *really* long.
> >
> > And a good indicator that this should be hidden in a single helper
> > function (`set_commit_tree()`, file-local of course) that is exempted in
> > the cocci patch.
>
> Note that this is not only about line length, and consider the slight
> differences between the three approaches:
>
>   - Currently only direct read accesses to 'c->maybe_tree' outside of
>     the listed functions are forbidden and transformed, but still any
>     function can set this field directly (thanks to the last semantic
>     patch in 'commit.cocci').
>
>   - Encapsulating writes in set_commit_tree() and adding this function
>     to that list would prevent other functions from setting
>     'c->maybe_tree' directly, but still any function could set it
>     indirectly by calling set_commit_tree().
>
>   - With that loooong line only those few listed special functions
>     would be able read or write 'c->maybe_tree'.
>
> Does the additional restriction of the long line variant bring us
> benefits?  Well, not sure.
>
> The root tree of a commit is needed in many places, and in the past we
> got used to it being always initialized in any 'struct commit'
> instance.  However, with the commit graph that's not the case anymore,
> and any read accesses to the uninitialized root tree object would have
> bad consequences.  That's why there is get_commit_tree() helper
> performing lazy-initialization, and the protection from direct reads
> in the form of the semantic patch.

And I think set_commit_tree() is a good way to go. Basically
"maybe_tree" is not safe to be manipulated directly because of traps
and pitfalls. If we have one entry point to update maybe_tree, we can
handle all that in one place (even though I don't foresee any special
handling when updating it). Keeping commit.cocci shorter is just a
side bonus.
-- 
Duy

  reply	other threads:[~2019-04-13 14:01 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 [this message]
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       ` [PATCH v4 11/34] commit.cocci: refactor code, avoid double rewrite Nguyễn Thái Ngọc Duy
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

  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=CACsJy8DxOV6qSFPNZd_zvbnOiTETqnnK3NS+u0fhNLnuesEQhg@mail.gmail.com \
    --to=pclouds@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=dstolee@microsoft.com \
    --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.
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).