From: Patryk Obara <patryk.obara@gmail.com>
To: git@vger.kernel.org,
"brian m . carlson" <sandals@crustytoothpaste.net>,
Junio C Hamano <gitster@pobox.com>
Cc: Patryk Obara <patryk.obara@gmail.com>
Subject: [PATCH 0/5] Modernize read_graft_line implementation
Date: Tue, 15 Aug 2017 13:49:01 +0200 [thread overview]
Message-ID: <cover.1502796628.git.patryk.obara@gmail.com> (raw)
I experimented with using a different hash algorithm (I am aware of
existing "Git hash function transition plan", I just want to push
things forward a bit) - and immediately hit a small issue - changing
the size of object_id hash buffer leads to compilation issues and
breaks graft-related tests.
I am sending patch 1 only to show a modification, that I did to
increase buffer size - it's not intended to be merged.
Patch 2 fixes trivial compilation issue.
Patches 3, 4, and 5 touch graft implementation to remove calculations
using GIT_SHA1_*, that lead to broken tests. I replaced FLEX_ARRAY of
object_id's representing parents with oid_array. New implementation
should be more future-proof, I think.
New implementation has tiny behaviour change: previously parents in
graft line needed to be separated with single space - now any number
of whitespace characters will do.
Alternative implementation approaches
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Strbuf could be replaced with string_list with
string_list_split_in_place instead of while loop in read_graft_line.
I didn't implement it this way because I learned
about string_list_split_in_place after finishing this implementation
draft. Right now I'm not sure which approach is better.
Another possibility is dropping graft feature altogether - that would
mean removing code for parsing grafts and 'parent' field in the struct,
but preserving the struct itself as a shallow clone marker. Grafts are
a little-known feature with modern replacement, but this seems like
bigger task and rather out of the scope of transition to the new
hashing algorithm.
I considered making function read_graft_line a static one and
read_graft_file non-static, but read_graft_line is used in
'builtin/blame.c' in function read_ancestry, which is almost a copy of
read_graft_file (difference of single boolean flag passed to
register_commit_graft). Removal of this duplication may be worthwhile,
but I think it's out of scope.
Patryk Obara (5):
cache: extend object_id size to sha3-256
sha1_file: fix hardcoded size in null_sha1
commit: replace the raw buffer with strbuf in read_graft_line
commit: implement free_commit_graft
commit: rewrite read_graft_line
builtin/blame.c | 2 +-
cache.h | 8 ++++++--
commit.c | 55 ++++++++++++++++++++++++++++++++-----------------------
commit.h | 5 +++--
sha1_file.c | 2 +-
shallow.c | 1 +
6 files changed, 44 insertions(+), 29 deletions(-)
--
2.9.5
next reply other threads:[~2017-08-15 11:49 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-15 11:49 Patryk Obara [this message]
2017-08-15 11:49 ` [PATCH 1/5] cache: extend object_id size to sha3-256 Patryk Obara
2017-08-15 11:49 ` [PATCH 2/5] sha1_file: fix hardcoded size in null_sha1 Patryk Obara
2017-08-15 18:23 ` Junio C Hamano
2017-08-15 18:29 ` Stefan Beller
2017-08-15 19:02 ` Junio C Hamano
2017-08-16 12:11 ` Patryk Obara
2017-08-16 19:32 ` Junio C Hamano
2017-08-15 11:49 ` [PATCH 3/5] commit: replace the raw buffer with strbuf in read_graft_line Patryk Obara
2017-08-15 17:02 ` Stefan Beller
2017-08-16 12:24 ` Patryk Obara
2017-08-16 22:59 ` brian m. carlson
2017-08-17 5:55 ` Jeff King
2017-08-17 21:17 ` Junio C Hamano
2017-08-17 21:38 ` Patryk Obara
2017-08-15 18:25 ` Junio C Hamano
2017-08-15 11:49 ` [PATCH 4/5] commit: implement free_commit_graft Patryk Obara
2017-08-15 17:04 ` Stefan Beller
2017-08-15 18:26 ` Junio C Hamano
2017-08-16 12:28 ` Patryk Obara
2017-08-15 11:49 ` [PATCH 5/5] commit: rewrite read_graft_line Patryk Obara
2017-08-15 17:11 ` Stefan Beller
2017-08-15 18:30 ` Junio C Hamano
2017-08-16 13:07 ` Patryk Obara
2017-08-16 19:39 ` Junio C Hamano
2017-08-15 17:19 ` [PATCH 0/5] Modernize read_graft_line implementation Stefan Beller
2017-08-16 17:58 ` [PATCH v2 0/4] " Patryk Obara
2017-08-16 17:58 ` [PATCH v2 1/4] sha1_file: fix hardcoded size in null_sha1 Patryk Obara
2017-08-16 19:46 ` Junio C Hamano
2017-08-16 17:58 ` [PATCH v2 2/4] commit: replace the raw buffer with strbuf in read_graft_line Patryk Obara
2017-08-16 17:58 ` [PATCH v2 3/4] commit: implement free_commit_graft Patryk Obara
2017-08-16 17:58 ` [PATCH v2 4/4] commit: rewrite read_graft_line Patryk Obara
2017-08-17 21:20 ` Junio C Hamano
2017-08-17 21:42 ` Patryk Obara
2017-08-18 1:59 ` [PATCH v3 0/4] Modernize read_graft_line implementation Patryk Obara
2017-08-18 1:59 ` [PATCH v3 1/4] sha1_file: fix definition of null_sha1 Patryk Obara
2017-08-18 1:59 ` [PATCH v3 2/4] commit: replace the raw buffer with strbuf in read_graft_line Patryk Obara
2017-08-18 6:29 ` Jeff King
2017-08-18 10:12 ` Patryk Obara
2017-08-18 11:50 ` Jeff King
2017-08-18 1:59 ` [PATCH v3 3/4] commit: allocate array using object_id size Patryk Obara
2017-08-18 1:59 ` [PATCH v3 4/4] commit: rewrite read_graft_line Patryk Obara
2017-08-18 6:43 ` Jeff King
2017-08-18 7:44 ` Junio C Hamano
2017-08-18 11:30 ` Patryk Obara
2017-08-18 11:45 ` Jeff King
2017-08-18 16:44 ` Junio C Hamano
2017-08-18 17:05 ` Patryk Obara
2017-08-18 18:29 ` Junio C Hamano
2017-08-18 2:20 ` [PATCH v3 0/4] Modernize read_graft_line implementation Junio C Hamano
2017-08-18 18:33 ` [PATCH v4 " Patryk Obara
2017-08-18 18:33 ` [PATCH v4 1/4] sha1_file: fix definition of null_sha1 Patryk Obara
2017-08-18 18:33 ` [PATCH v4 2/4] commit: replace the raw buffer with strbuf in read_graft_line Patryk Obara
2017-08-18 18:33 ` [PATCH v4 3/4] commit: allocate array using object_id size Patryk Obara
2017-08-18 18:33 ` [PATCH v4 4/4] commit: rewrite read_graft_line Patryk Obara
2017-08-18 18:38 ` Patryk Obara
2017-08-18 19:12 ` Junio C Hamano
2017-08-18 19:33 ` Patryk Obara
2017-08-18 19:47 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1502796628.git.patryk.obara@gmail.com \
--to=patryk.obara@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sandals@crustytoothpaste.net \
/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.