git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH v2 00/16] object_id part 14
@ 2018-07-16  1:27 brian m. carlson
  2018-07-16  1:27 ` [PATCH v2 01/16] cache: update object ID functions for the_hash_algo brian m. carlson
                   ` (17 more replies)
  0 siblings, 18 replies; 20+ messages in thread
From: brian m. carlson @ 2018-07-16  1:27 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Eric Sunshine, Derrick Stolee, Stefan Beller,
	Brandon Williams, Jacob Keller

This is the fourteenth series of patches to switch to using struct
object_id and the_hash_algo.  This series converts several core pieces
to use struct object_id, including the oid* and hex functions.

All of these patches have been tested with both SHA-1 and a 256-bit
hash.

Most of these patches are fixes for things that will clearly cause
segfaults or other very obvious breakage on a Git with a 256-bit hash.

Changes from v1:
* Drop patch that's been replaced by one from Ben Peart.
* Update patch handling hash* and oid* functions.

tbdiff output below.

brian m. carlson (16):
  cache: update object ID functions for the_hash_algo
  tree-walk: replace hard-coded constants with the_hash_algo
  hex: switch to using the_hash_algo
  commit: express tree entry constants in terms of the_hash_algo
  strbuf: allocate space with GIT_MAX_HEXSZ
  sha1-name: use the_hash_algo when parsing object names
  refs/files-backend: use the_hash_algo for writing refs
  builtin/update-index: convert to using the_hash_algo
  builtin/update-index: simplify parsing of cacheinfo
  builtin/fmt-merge-msg: make hash independent
  builtin/merge: switch to use the_hash_algo
  builtin/merge-recursive: make hash independent
  diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
  log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
  sha1-file: convert constants to uses of the_hash_algo
  pretty: switch hard-coded constants to the_hash_algo

 builtin/fmt-merge-msg.c   | 19 ++++++++++---------
 builtin/merge-recursive.c |  4 ++--
 builtin/merge.c           | 11 ++++++-----
 builtin/update-index.c    | 14 ++++++++------
 cache.h                   |  6 +++---
 commit.c                  |  4 ++--
 diff.c                    |  6 +++---
 hex.c                     |  6 +++---
 log-tree.c                |  2 +-
 pretty.c                  |  4 ++--
 refs/files-backend.c      |  4 ++--
 sha1-file.c               |  8 ++++----
 sha1-name.c               | 12 +++++++-----
 strbuf.c                  |  2 +-
 tree-walk.c               |  3 ++-
 15 files changed, 56 insertions(+), 49 deletions(-)

tbdiff output:

 1: e8209cc180 !  1: cad74b3d9b cache: update object ID functions for the_hash_algo
    @@ -2,10 +2,18 @@
     
         cache: update object ID functions for the_hash_algo
         
    -    Update the hashcpy and hashclr functions to use the_hash_algo, since
    -    they are used in a variety of places to copy and manipulate buffers that
    -    need to move data into or out of struct object_id.  Update oidcmp so
    -    that it is implemented on its own and similarly uses the_hash_algo.
    +    Most of our code has been converted to use struct object_id for object
    +    IDs.  However, there are some places that still have not, and there are
    +    a variety of places that compare equivalently sized hashes that are not
    +    object IDs.  All of these hashes are artifacts of the internal hash
    +    algorithm in use, and when we switch to NewHash for object storage, all
    +    of these uses will also switch.
    +    
    +    Update the hashcpy, hashclr, and hashcmp functions to use the_hash_algo,
    +    since they are used in a variety of places to copy and manipulate
    +    buffers that need to move data into or out of struct object_id.  This
    +    has the effect of making the corresponding oid* functions use
    +    the_hash_algo as well.
         
         Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
     
    @@ -14,13 +22,13 @@
     +++ b/cache.h
     @@
      
    - static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2)
    + static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
      {
    --	return hashcmp(oid1->hash, oid2->hash);
    -+	return memcmp(oid1->hash, oid2->hash, the_hash_algo->rawsz);
    +-	return memcmp(sha1, sha2, GIT_SHA1_RAWSZ);
    ++	return memcmp(sha1, sha2, the_hash_algo->rawsz);
      }
      
    - static inline int is_null_sha1(const unsigned char *sha1)
    + static inline int oidcmp(const struct object_id *oid1, const struct object_id *oid2)
     @@
      
      static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
 2: d0bf993bc5 =  2: 2d2229b112 tree-walk: replace hard-coded constants with the_hash_algo
 3: 718ff26cb3 =  3: e2ea848e69 hex: switch to using the_hash_algo
 4: 9c387dc7b4 =  4: a2ba0e70ac commit: express tree entry constants in terms of the_hash_algo
 5: efbae0c278 =  5: 7cd0a1600e strbuf: allocate space with GIT_MAX_HEXSZ
 6: e37fa26cf7 =  6: b89147f48b sha1-name: use the_hash_algo when parsing object names
 7: b7ef5b65fc < --:  ------- commit: increase commit message buffer size
 8: 309c452bd7 =  7: 6d2efbfdb0 refs/files-backend: use the_hash_algo for writing refs
 9: 08684a629e =  8: 745d8c1e5f builtin/update-index: convert to using the_hash_algo
10: 36c7de8d9a =  9: a9e4fe9a49 builtin/update-index: simplify parsing of cacheinfo
11: cfa93658a1 = 10: 3618c468cb builtin/fmt-merge-msg: make hash independent
12: cdc2507c68 = 11: 83c8c1881a builtin/merge: switch to use the_hash_algo
13: b728ff86d4 = 12: eac8c307e1 builtin/merge-recursive: make hash independent
14: 04e69f589b = 13: 5da6c63e78 diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
15: a75208a598 = 14: c179e8c3db log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
16: d4ebee341a = 15: d6437a47d6 sha1-file: convert constants to uses of the_hash_algo
17: 68b95089d7 = 16: 6313f07df0 pretty: switch hard-coded constants to the_hash_algo

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-07-16 18:04 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-16  1:27 [PATCH v2 00/16] object_id part 14 brian m. carlson
2018-07-16  1:27 ` [PATCH v2 01/16] cache: update object ID functions for the_hash_algo brian m. carlson
2018-07-16  1:27 ` [PATCH v2 02/16] tree-walk: replace hard-coded constants with the_hash_algo brian m. carlson
2018-07-16  1:27 ` [PATCH v2 03/16] hex: switch to using the_hash_algo brian m. carlson
2018-07-16  1:27 ` [PATCH v2 04/16] commit: express tree entry constants in terms of the_hash_algo brian m. carlson
2018-07-16  1:27 ` [PATCH v2 05/16] strbuf: allocate space with GIT_MAX_HEXSZ brian m. carlson
2018-07-16  1:27 ` [PATCH v2 06/16] sha1-name: use the_hash_algo when parsing object names brian m. carlson
2018-07-16  1:27 ` [PATCH v2 07/16] refs/files-backend: use the_hash_algo for writing refs brian m. carlson
2018-07-16  1:28 ` [PATCH v2 08/16] builtin/update-index: convert to using the_hash_algo brian m. carlson
2018-07-16  1:28 ` [PATCH v2 09/16] builtin/update-index: simplify parsing of cacheinfo brian m. carlson
2018-07-16  1:28 ` [PATCH v2 10/16] builtin/fmt-merge-msg: make hash independent brian m. carlson
2018-07-16  1:28 ` [PATCH v2 11/16] builtin/merge: switch to use the_hash_algo brian m. carlson
2018-07-16  1:28 ` [PATCH v2 12/16] builtin/merge-recursive: make hash independent brian m. carlson
2018-07-16  1:28 ` [PATCH v2 13/16] diff: switch GIT_SHA1_HEXSZ to use the_hash_algo brian m. carlson
2018-07-16  1:28 ` [PATCH v2 14/16] log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz brian m. carlson
2018-07-16  1:28 ` [PATCH v2 15/16] sha1-file: convert constants to uses of the_hash_algo brian m. carlson
2018-07-16  1:28 ` [PATCH v2 16/16] pretty: switch hard-coded constants to the_hash_algo brian m. carlson
2018-07-16 14:49 ` [PATCH v2 00/16] object_id part 14 Derrick Stolee
2018-07-16 15:21 ` Taylor Blau
2018-07-16 18:04   ` Stefan Beller

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).