From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johan Herland <johan@herland.net>,
Johannes Schindelin <johannes.schindelin@gmx.de>,
git@vger.kernel.org, Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH 00/12] Clean up notes-related code around `load_subtree()`
Date: Sat, 26 Aug 2017 10:28:00 +0200 [thread overview]
Message-ID: <cover.1503734566.git.mhagger@alum.mit.edu> (raw)
While putzing around in the notes code quite some time ago, I found
this comment:
/*
* Determine full path for this non-note entry:
* The filename is already found in entry.path, but the
* directory part of the path must be deduced from the subtree
* containing this entry. We assume here that the overall notes
* tree follows a strict byte-based progressive fanout
* structure (i.e. using 2/38, 2/2/36, etc. fanouts, and not
* e.g. 4/36 fanout). This means that if a non-note is found at
* path "dead/beef", the following code will register it as
* being found on "de/ad/beef".
* On the other hand, if you use such non-obvious non-note
* paths in the middle of a notes tree, you deserve what's
* coming to you ;). Note that for non-notes that are not
* SHA1-like at the top level, there will be no problems.
*
* To conclude, it is strongly advised to make sure non-notes
* have at least one non-hex character in the top-level path
* component.
*/
This was enough of a nerd snipe to get me to dig into the code.
It turns out that the comment is incorrect, but there was nevertheless
plenty that could be cleaned up in the area:
* Make macro `GIT_NIBBLE` safer by adding some parentheses
* Remove some dead code
* Fix some memory leaks
* Fix some obsolete and incorrect comments
* Reject "notes" that are not blobs
I hope the result is also easier to understand.
This branch is also available from my Git fork [1] as branch
`load-subtree-cleanup`.
Michael
[1] https://github.com/mhagger/git
Michael Haggerty (12):
notes: make GET_NIBBLE macro more robust
load_subtree(): remove unnecessary conditional
load_subtree(): reduce the scope of some local variables
load_subtree(): fix incorrect comment
load_subtree(): separate logic for internal vs. terminal entries
load_subtree(): check earlier whether an internal node is a tree entry
load_subtree(): only consider blobs to be potential notes
get_oid_hex_segment(): return 0 on success
load_subtree(): combine some common code
get_oid_hex_segment(): don't pad the rest of `oid`
hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
load_subtree(): declare some variables to be `size_t`
notes.c | 136 +++++++++++++++++++++++++++++++---------------------------------
1 file changed, 66 insertions(+), 70 deletions(-)
--
2.11.0
next reply other threads:[~2017-08-26 8:28 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-26 8:28 Michael Haggerty [this message]
2017-08-26 8:28 ` [PATCH 01/12] notes: make GET_NIBBLE macro more robust Michael Haggerty
2017-08-26 8:28 ` [PATCH 02/12] load_subtree(): remove unnecessary conditional Michael Haggerty
2017-08-26 16:38 ` Junio C Hamano
2017-08-27 6:37 ` Michael Haggerty
2017-08-28 6:55 ` Michael Haggerty
2017-09-01 21:53 ` Junio C Hamano
2017-08-26 8:28 ` [PATCH 03/12] load_subtree(): reduce the scope of some local variables Michael Haggerty
2017-08-26 8:28 ` [PATCH 04/12] load_subtree(): fix incorrect comment Michael Haggerty
2017-08-26 8:28 ` [PATCH 05/12] load_subtree(): separate logic for internal vs. terminal entries Michael Haggerty
2017-08-26 8:28 ` [PATCH 06/12] load_subtree(): check earlier whether an internal node is a tree entry Michael Haggerty
2017-08-26 8:28 ` [PATCH 07/12] load_subtree(): only consider blobs to be potential notes Michael Haggerty
2017-08-26 8:28 ` [PATCH 08/12] get_oid_hex_segment(): return 0 on success Michael Haggerty
2017-08-26 8:28 ` [PATCH 09/12] load_subtree(): combine some common code Michael Haggerty
2017-08-26 8:28 ` [PATCH 10/12] get_oid_hex_segment(): don't pad the rest of `oid` Michael Haggerty
2017-08-26 8:28 ` [PATCH 11/12] hex_to_bytes(): simpler replacement for `get_oid_hex_segment()` Michael Haggerty
2017-08-26 8:28 ` [PATCH 12/12] load_subtree(): declare some variables to be `size_t` Michael Haggerty
2017-08-26 23:36 ` [PATCH 00/12] Clean up notes-related code around `load_subtree()` Johan Herland
2017-09-09 10:31 ` Jeff King
2017-09-10 4:45 ` Michael Haggerty
2017-09-10 7:39 ` Jeff King
2017-09-12 6:47 ` Michael Haggerty
2017-09-12 11:55 ` Lars Schneider
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.1503734566.git.mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johan@herland.net \
--cc=johannes.schindelin@gmx.de \
/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).