From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Martin Ågren" <martin.agren@gmail.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>
Subject: [PATCH v2 15/42] split-index: convert struct split_index to object_id
Date: Wed, 2 May 2018 00:25:43 +0000 [thread overview]
Message-ID: <20180502002610.915892-16-sandals@crustytoothpaste.net> (raw)
In-Reply-To: <20180502002610.915892-1-sandals@crustytoothpaste.net>
Convert the base_sha1 member of struct split_index to use struct
object_id and rename it base_oid. Include cache.h to make the structure
visible.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
builtin/rev-parse.c | 4 ++--
read-cache.c | 22 +++++++++++-----------
split-index.c | 10 +++++-----
split-index.h | 4 +++-
t/helper/test-dump-split-index.c | 2 +-
5 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 36b2087782..55c0b90441 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -887,8 +887,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
if (read_cache() < 0)
die(_("Could not read the index"));
if (the_index.split_index) {
- const unsigned char *sha1 = the_index.split_index->base_sha1;
- const char *path = git_path("sharedindex.%s", sha1_to_hex(sha1));
+ const struct object_id *oid = &the_index.split_index->base_oid;
+ const char *path = git_path("sharedindex.%s", oid_to_hex(oid));
strbuf_reset(&buf);
puts(relative_path(path, prefix, &buf));
}
diff --git a/read-cache.c b/read-cache.c
index 10f1c6bb8a..f47666b975 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1878,7 +1878,7 @@ int read_index_from(struct index_state *istate, const char *path,
uint64_t start = getnanotime();
struct split_index *split_index;
int ret;
- char *base_sha1_hex;
+ char *base_oid_hex;
char *base_path;
/* istate->initialized covers both .git/index and .git/sharedindex.xxx */
@@ -1889,7 +1889,7 @@ int read_index_from(struct index_state *istate, const char *path,
trace_performance_since(start, "read cache %s", path);
split_index = istate->split_index;
- if (!split_index || is_null_sha1(split_index->base_sha1)) {
+ if (!split_index || is_null_oid(&split_index->base_oid)) {
post_read_index_from(istate);
return ret;
}
@@ -1899,12 +1899,12 @@ int read_index_from(struct index_state *istate, const char *path,
else
split_index->base = xcalloc(1, sizeof(*split_index->base));
- base_sha1_hex = sha1_to_hex(split_index->base_sha1);
- base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_sha1_hex);
+ base_oid_hex = oid_to_hex(&split_index->base_oid);
+ base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
ret = do_read_index(split_index->base, base_path, 1);
- if (hashcmp(split_index->base_sha1, split_index->base->sha1))
+ if (hashcmp(split_index->base_oid.hash, split_index->base->sha1))
die("broken index, expect %s in %s, got %s",
- base_sha1_hex, base_path,
+ base_oid_hex, base_path,
sha1_to_hex(split_index->base->sha1));
freshen_shared_index(base_path, 0);
@@ -2499,7 +2499,7 @@ static int write_shared_index(struct index_state *istate,
ret = rename_tempfile(temp,
git_path("sharedindex.%s", sha1_to_hex(si->base->sha1)));
if (!ret) {
- hashcpy(si->base_sha1, si->base->sha1);
+ hashcpy(si->base_oid.hash, si->base->sha1);
clean_shared_index_files(sha1_to_hex(si->base->sha1));
}
@@ -2554,13 +2554,13 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
if (!si || alternate_index_output ||
(istate->cache_changed & ~EXTMASK)) {
if (si)
- hashclr(si->base_sha1);
+ oidclr(&si->base_oid);
ret = do_write_locked_index(istate, lock, flags);
goto out;
}
if (getenv("GIT_TEST_SPLIT_INDEX")) {
- int v = si->base_sha1[0];
+ int v = si->base_oid.hash[0];
if ((v & 15) < 6)
istate->cache_changed |= SPLIT_INDEX_ORDERED;
}
@@ -2575,7 +2575,7 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
temp = mks_tempfile(git_path("sharedindex_XXXXXX"));
if (!temp) {
- hashclr(si->base_sha1);
+ oidclr(&si->base_oid);
ret = do_write_locked_index(istate, lock, flags);
goto out;
}
@@ -2595,7 +2595,7 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
/* Freshen the shared index only if the split-index was written */
if (!ret && !new_shared_index) {
const char *shared_index = git_path("sharedindex.%s",
- sha1_to_hex(si->base_sha1));
+ oid_to_hex(&si->base_oid));
freshen_shared_index(shared_index, 1);
}
diff --git a/split-index.c b/split-index.c
index 3eb8ff1b43..660c75f31f 100644
--- a/split-index.c
+++ b/split-index.c
@@ -18,12 +18,12 @@ int read_link_extension(struct index_state *istate,
struct split_index *si;
int ret;
- if (sz < 20)
+ if (sz < the_hash_algo->rawsz)
return error("corrupt link extension (too short)");
si = init_split_index(istate);
- hashcpy(si->base_sha1, data);
- data += 20;
- sz -= 20;
+ hashcpy(si->base_oid.hash, data);
+ data += the_hash_algo->rawsz;
+ sz -= the_hash_algo->rawsz;
if (!sz)
return 0;
si->delete_bitmap = ewah_new();
@@ -45,7 +45,7 @@ int write_link_extension(struct strbuf *sb,
struct index_state *istate)
{
struct split_index *si = istate->split_index;
- strbuf_add(sb, si->base_sha1, 20);
+ strbuf_add(sb, si->base_oid.hash, the_hash_algo->rawsz);
if (!si->delete_bitmap && !si->replace_bitmap)
return 0;
ewah_serialize_strbuf(si->delete_bitmap, sb);
diff --git a/split-index.h b/split-index.h
index 43d66826eb..7a435ca2c9 100644
--- a/split-index.h
+++ b/split-index.h
@@ -1,12 +1,14 @@
#ifndef SPLIT_INDEX_H
#define SPLIT_INDEX_H
+#include "cache.h"
+
struct index_state;
struct strbuf;
struct ewah_bitmap;
struct split_index {
- unsigned char base_sha1[20];
+ struct object_id base_oid;
struct index_state *base;
struct ewah_bitmap *delete_bitmap;
struct ewah_bitmap *replace_bitmap;
diff --git a/t/helper/test-dump-split-index.c b/t/helper/test-dump-split-index.c
index 4e2fdb5e30..754e9bb624 100644
--- a/t/helper/test-dump-split-index.c
+++ b/t/helper/test-dump-split-index.c
@@ -20,7 +20,7 @@ int cmd__dump_split_index(int ac, const char **av)
printf("not a split index\n");
return 0;
}
- printf("base %s\n", sha1_to_hex(si->base_sha1));
+ printf("base %s\n", oid_to_hex(&si->base_oid));
for (i = 0; i < the_index.cache_nr; i++) {
struct cache_entry *ce = the_index.cache[i];
printf("%06o %s %d\t%s\n", ce->ce_mode,
next prev parent reply other threads:[~2018-05-02 0:26 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-02 0:25 [PATCH v2 00/42] object_id part 13 brian m. carlson
2018-05-02 0:25 ` [PATCH v2 01/42] cache: add a function to read an object ID from a buffer brian m. carlson
2018-05-02 0:25 ` [PATCH v2 02/42] server-info: remove unused members from struct pack_info brian m. carlson
2018-05-02 0:25 ` [PATCH v2 03/42] Remove unused member in struct object_context brian m. carlson
2018-05-02 0:25 ` [PATCH v2 04/42] packfile: remove unused member from struct pack_entry brian m. carlson
2018-05-02 0:25 ` [PATCH v2 05/42] packfile: convert has_sha1_pack to object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 06/42] sha1-file: convert freshen functions " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 07/42] packfile: convert find_pack_entry " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 08/42] packfile: abstract away hash constant values brian m. carlson
2018-05-02 0:25 ` [PATCH v2 09/42] pack-objects: abstract away hash algorithm brian m. carlson
2018-05-02 0:25 ` [PATCH v2 10/42] pack-redundant: " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 11/42] tree-walk: avoid hard-coded 20 constant brian m. carlson
2018-05-02 0:25 ` [PATCH v2 12/42] tree-walk: convert get_tree_entry_follow_symlinks to object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 13/42] fsck: convert static functions to struct object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 14/42] submodule-config: convert structures to object_id brian m. carlson
2018-05-02 0:25 ` brian m. carlson [this message]
2018-05-02 0:25 ` [PATCH v2 16/42] Update struct index_state to use struct object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 17/42] pack-redundant: convert linked lists " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 18/42] index-pack: abstract away hash function constant brian m. carlson
2018-05-02 0:25 ` [PATCH v2 19/42] commit: convert uses of get_sha1_hex to get_oid_hex brian m. carlson
2018-05-02 0:25 ` [PATCH v2 20/42] dir: convert struct untracked_cache_dir to object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 21/42] http: eliminate hard-coded constants brian m. carlson
2018-05-02 0:25 ` [PATCH v2 22/42] revision: replace use of " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 23/42] upload-pack: replace use of several " brian m. carlson
2018-05-02 0:25 ` [PATCH v2 24/42] diff: specify abbreviation size in terms of the_hash_algo brian m. carlson
2018-05-02 0:25 ` [PATCH v2 25/42] builtin/receive-pack: avoid hard-coded constants for push certs brian m. carlson
2018-05-02 0:25 ` [PATCH v2 26/42] sha1-file: add functions for hex empty tree and blob OIDs brian m. carlson
2018-05-02 0:25 ` [PATCH v2 27/42] builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo brian m. carlson
2018-05-02 0:25 ` [PATCH v2 28/42] builtin/merge: switch tree functions to use object_id brian m. carlson
2018-05-02 0:25 ` [PATCH v2 29/42] merge: convert empty tree constant to the_hash_algo brian m. carlson
2018-05-02 0:25 ` [PATCH v2 30/42] sequencer: convert one use of EMPTY_TREE_SHA1_HEX brian m. carlson
2018-05-02 0:25 ` [PATCH v2 31/42] submodule: convert several uses " brian m. carlson
2018-05-02 0:26 ` [PATCH v2 32/42] wt-status: convert two " brian m. carlson
2018-05-02 0:26 ` [PATCH v2 33/42] builtin/receive-pack: convert one use " brian m. carlson
2018-05-02 0:26 ` [PATCH v2 34/42] builtin/reset: convert use of EMPTY_TREE_SHA1_BIN brian m. carlson
2018-05-02 0:26 ` [PATCH v2 35/42] sha1_file: convert cached object code to struct object_id brian m. carlson
2018-05-02 0:26 ` [PATCH v2 36/42] cache-tree: use is_empty_tree_oid brian m. carlson
2018-05-02 0:26 ` [PATCH v2 37/42] sequencer: use the_hash_algo for empty tree object ID brian m. carlson
2018-05-02 0:26 ` [PATCH v2 38/42] dir: use the_hash_algo for empty blob " brian m. carlson
2018-05-02 0:26 ` [PATCH v2 39/42] sha1_file: only expose empty object constants through git_hash_algo brian m. carlson
2018-05-02 0:26 ` [PATCH v2 40/42] Update shell scripts to compute empty tree object ID brian m. carlson
2018-05-02 0:26 ` [PATCH v2 41/42] add--interactive: compute the empty tree value brian m. carlson
2018-05-02 0:26 ` [PATCH v2 42/42] merge-one-file: compute empty blob object ID brian m. carlson
2018-05-02 15:32 ` [PATCH v2 00/42] object_id part 13 Duy Nguyen
2018-05-02 23:42 ` brian m. carlson
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=20180502002610.915892-16-sandals@crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.agren@gmail.com \
--cc=pclouds@gmail.com \
--cc=sunshine@sunshineco.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).