1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-04 08:56:13 +02:00

split-index: convert struct split_index to object_id

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2018-05-02 00:25:43 +00:00 committed by Junio C Hamano
parent 34caab0261
commit 2182abd94b
5 changed files with 22 additions and 20 deletions

View File

@ -887,8 +887,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
if (read_cache() < 0) if (read_cache() < 0)
die(_("Could not read the index")); die(_("Could not read the index"));
if (the_index.split_index) { if (the_index.split_index) {
const unsigned char *sha1 = the_index.split_index->base_sha1; const struct object_id *oid = &the_index.split_index->base_oid;
const char *path = git_path("sharedindex.%s", sha1_to_hex(sha1)); const char *path = git_path("sharedindex.%s", oid_to_hex(oid));
strbuf_reset(&buf); strbuf_reset(&buf);
puts(relative_path(path, prefix, &buf)); puts(relative_path(path, prefix, &buf));
} }

View File

@ -1878,7 +1878,7 @@ int read_index_from(struct index_state *istate, const char *path,
uint64_t start = getnanotime(); uint64_t start = getnanotime();
struct split_index *split_index; struct split_index *split_index;
int ret; int ret;
char *base_sha1_hex; char *base_oid_hex;
char *base_path; char *base_path;
/* istate->initialized covers both .git/index and .git/sharedindex.xxx */ /* 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); trace_performance_since(start, "read cache %s", path);
split_index = istate->split_index; 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); post_read_index_from(istate);
return ret; return ret;
} }
@ -1899,12 +1899,12 @@ int read_index_from(struct index_state *istate, const char *path,
else else
split_index->base = xcalloc(1, sizeof(*split_index->base)); split_index->base = xcalloc(1, sizeof(*split_index->base));
base_sha1_hex = sha1_to_hex(split_index->base_sha1); base_oid_hex = oid_to_hex(&split_index->base_oid);
base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_sha1_hex); base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
ret = do_read_index(split_index->base, base_path, 1); 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", 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)); sha1_to_hex(split_index->base->sha1));
freshen_shared_index(base_path, 0); freshen_shared_index(base_path, 0);
@ -2499,7 +2499,7 @@ static int write_shared_index(struct index_state *istate,
ret = rename_tempfile(temp, ret = rename_tempfile(temp,
git_path("sharedindex.%s", sha1_to_hex(si->base->sha1))); git_path("sharedindex.%s", sha1_to_hex(si->base->sha1)));
if (!ret) { 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)); 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 || if (!si || alternate_index_output ||
(istate->cache_changed & ~EXTMASK)) { (istate->cache_changed & ~EXTMASK)) {
if (si) if (si)
hashclr(si->base_sha1); oidclr(&si->base_oid);
ret = do_write_locked_index(istate, lock, flags); ret = do_write_locked_index(istate, lock, flags);
goto out; goto out;
} }
if (getenv("GIT_TEST_SPLIT_INDEX")) { if (getenv("GIT_TEST_SPLIT_INDEX")) {
int v = si->base_sha1[0]; int v = si->base_oid.hash[0];
if ((v & 15) < 6) if ((v & 15) < 6)
istate->cache_changed |= SPLIT_INDEX_ORDERED; 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")); temp = mks_tempfile(git_path("sharedindex_XXXXXX"));
if (!temp) { if (!temp) {
hashclr(si->base_sha1); oidclr(&si->base_oid);
ret = do_write_locked_index(istate, lock, flags); ret = do_write_locked_index(istate, lock, flags);
goto out; 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 */ /* Freshen the shared index only if the split-index was written */
if (!ret && !new_shared_index) { if (!ret && !new_shared_index) {
const char *shared_index = git_path("sharedindex.%s", 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); freshen_shared_index(shared_index, 1);
} }

View File

@ -18,12 +18,12 @@ int read_link_extension(struct index_state *istate,
struct split_index *si; struct split_index *si;
int ret; int ret;
if (sz < 20) if (sz < the_hash_algo->rawsz)
return error("corrupt link extension (too short)"); return error("corrupt link extension (too short)");
si = init_split_index(istate); si = init_split_index(istate);
hashcpy(si->base_sha1, data); hashcpy(si->base_oid.hash, data);
data += 20; data += the_hash_algo->rawsz;
sz -= 20; sz -= the_hash_algo->rawsz;
if (!sz) if (!sz)
return 0; return 0;
si->delete_bitmap = ewah_new(); si->delete_bitmap = ewah_new();
@ -45,7 +45,7 @@ int write_link_extension(struct strbuf *sb,
struct index_state *istate) struct index_state *istate)
{ {
struct split_index *si = istate->split_index; 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) if (!si->delete_bitmap && !si->replace_bitmap)
return 0; return 0;
ewah_serialize_strbuf(si->delete_bitmap, sb); ewah_serialize_strbuf(si->delete_bitmap, sb);

View File

@ -1,12 +1,14 @@
#ifndef SPLIT_INDEX_H #ifndef SPLIT_INDEX_H
#define SPLIT_INDEX_H #define SPLIT_INDEX_H
#include "cache.h"
struct index_state; struct index_state;
struct strbuf; struct strbuf;
struct ewah_bitmap; struct ewah_bitmap;
struct split_index { struct split_index {
unsigned char base_sha1[20]; struct object_id base_oid;
struct index_state *base; struct index_state *base;
struct ewah_bitmap *delete_bitmap; struct ewah_bitmap *delete_bitmap;
struct ewah_bitmap *replace_bitmap; struct ewah_bitmap *replace_bitmap;

View File

@ -20,7 +20,7 @@ int cmd__dump_split_index(int ac, const char **av)
printf("not a split index\n"); printf("not a split index\n");
return 0; 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++) { for (i = 0; i < the_index.cache_nr; i++) {
struct cache_entry *ce = the_index.cache[i]; struct cache_entry *ce = the_index.cache[i];
printf("%06o %s %d\t%s\n", ce->ce_mode, printf("%06o %s %d\t%s\n", ce->ce_mode,