mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
hash: use uint32_t for object_id algorithm
We currently use an int for this value, but we'll define this structure from Rust in a future commit and we want to ensure that our data types are exactly identical. To make that possible, use a uint32_t for the hash algorithm. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
447480a5a6
commit
f97c49398b
6
hash.c
6
hash.c
@@ -241,7 +241,7 @@ const char *empty_tree_oid_hex(const struct git_hash_algo *algop)
|
|||||||
return oid_to_hex_r(buf, algop->empty_tree);
|
return oid_to_hex_r(buf, algop->empty_tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hash_algo_by_name(const char *name)
|
uint32_t hash_algo_by_name(const char *name)
|
||||||
{
|
{
|
||||||
if (!name)
|
if (!name)
|
||||||
return GIT_HASH_UNKNOWN;
|
return GIT_HASH_UNKNOWN;
|
||||||
@@ -251,7 +251,7 @@ int hash_algo_by_name(const char *name)
|
|||||||
return GIT_HASH_UNKNOWN;
|
return GIT_HASH_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
int hash_algo_by_id(uint32_t format_id)
|
uint32_t hash_algo_by_id(uint32_t format_id)
|
||||||
{
|
{
|
||||||
for (size_t i = 1; i < GIT_HASH_NALGOS; i++)
|
for (size_t i = 1; i < GIT_HASH_NALGOS; i++)
|
||||||
if (format_id == hash_algos[i].format_id)
|
if (format_id == hash_algos[i].format_id)
|
||||||
@@ -259,7 +259,7 @@ int hash_algo_by_id(uint32_t format_id)
|
|||||||
return GIT_HASH_UNKNOWN;
|
return GIT_HASH_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
int hash_algo_by_length(size_t len)
|
uint32_t hash_algo_by_length(size_t len)
|
||||||
{
|
{
|
||||||
for (size_t i = 1; i < GIT_HASH_NALGOS; i++)
|
for (size_t i = 1; i < GIT_HASH_NALGOS; i++)
|
||||||
if (len == hash_algos[i].rawsz)
|
if (len == hash_algos[i].rawsz)
|
||||||
|
|||||||
10
hash.h
10
hash.h
@@ -211,7 +211,7 @@ static inline void git_SHA256_Clone(git_SHA256_CTX *dst, const git_SHA256_CTX *s
|
|||||||
|
|
||||||
struct object_id {
|
struct object_id {
|
||||||
unsigned char hash[GIT_MAX_RAWSZ];
|
unsigned char hash[GIT_MAX_RAWSZ];
|
||||||
int algo; /* XXX requires 4-byte alignment */
|
uint32_t algo; /* XXX requires 4-byte alignment */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GET_OID_QUIETLY 01
|
#define GET_OID_QUIETLY 01
|
||||||
@@ -344,13 +344,13 @@ static inline void git_hash_final_oid(struct object_id *oid, struct git_hash_ctx
|
|||||||
* Return a GIT_HASH_* constant based on the name. Returns GIT_HASH_UNKNOWN if
|
* Return a GIT_HASH_* constant based on the name. Returns GIT_HASH_UNKNOWN if
|
||||||
* the name doesn't match a known algorithm.
|
* the name doesn't match a known algorithm.
|
||||||
*/
|
*/
|
||||||
int hash_algo_by_name(const char *name);
|
uint32_t hash_algo_by_name(const char *name);
|
||||||
/* Identical, except based on the format ID. */
|
/* Identical, except based on the format ID. */
|
||||||
int hash_algo_by_id(uint32_t format_id);
|
uint32_t hash_algo_by_id(uint32_t format_id);
|
||||||
/* Identical, except based on the length. */
|
/* Identical, except based on the length. */
|
||||||
int hash_algo_by_length(size_t len);
|
uint32_t hash_algo_by_length(size_t len);
|
||||||
/* Identical, except for a pointer to struct git_hash_algo. */
|
/* Identical, except for a pointer to struct git_hash_algo. */
|
||||||
static inline int hash_algo_by_ptr(const struct git_hash_algo *p)
|
static inline uint32_t hash_algo_by_ptr(const struct git_hash_algo *p)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < GIT_HASH_NALGOS; i++) {
|
for (i = 0; i < GIT_HASH_NALGOS; i++) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ struct oidtree_iter_data {
|
|||||||
oidtree_iter fn;
|
oidtree_iter fn;
|
||||||
void *arg;
|
void *arg;
|
||||||
size_t *last_nibble_at;
|
size_t *last_nibble_at;
|
||||||
int algo;
|
uint32_t algo;
|
||||||
uint8_t last_byte;
|
uint8_t last_byte;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ struct repository *the_repository = &the_repo;
|
|||||||
static void set_default_hash_algo(struct repository *repo)
|
static void set_default_hash_algo(struct repository *repo)
|
||||||
{
|
{
|
||||||
const char *hash_name;
|
const char *hash_name;
|
||||||
int algo;
|
uint32_t algo;
|
||||||
|
|
||||||
hash_name = getenv("GIT_TEST_DEFAULT_HASH_ALGO");
|
hash_name = getenv("GIT_TEST_DEFAULT_HASH_ALGO");
|
||||||
if (!hash_name)
|
if (!hash_name)
|
||||||
@@ -186,12 +186,12 @@ void repo_set_gitdir(struct repository *repo,
|
|||||||
repo->gitdir, "index");
|
repo->gitdir, "index");
|
||||||
}
|
}
|
||||||
|
|
||||||
void repo_set_hash_algo(struct repository *repo, int hash_algo)
|
void repo_set_hash_algo(struct repository *repo, uint32_t hash_algo)
|
||||||
{
|
{
|
||||||
repo->hash_algo = &hash_algos[hash_algo];
|
repo->hash_algo = &hash_algos[hash_algo];
|
||||||
}
|
}
|
||||||
|
|
||||||
void repo_set_compat_hash_algo(struct repository *repo MAYBE_UNUSED, int algo)
|
void repo_set_compat_hash_algo(struct repository *repo MAYBE_UNUSED, uint32_t algo)
|
||||||
{
|
{
|
||||||
#ifdef WITH_RUST
|
#ifdef WITH_RUST
|
||||||
if (hash_algo_by_ptr(repo->hash_algo) == algo)
|
if (hash_algo_by_ptr(repo->hash_algo) == algo)
|
||||||
|
|||||||
@@ -193,8 +193,8 @@ struct set_gitdir_args {
|
|||||||
void repo_set_gitdir(struct repository *repo, const char *root,
|
void repo_set_gitdir(struct repository *repo, const char *root,
|
||||||
const struct set_gitdir_args *extra_args);
|
const struct set_gitdir_args *extra_args);
|
||||||
void repo_set_worktree(struct repository *repo, const char *path);
|
void repo_set_worktree(struct repository *repo, const char *path);
|
||||||
void repo_set_hash_algo(struct repository *repo, int algo);
|
void repo_set_hash_algo(struct repository *repo, uint32_t algo);
|
||||||
void repo_set_compat_hash_algo(struct repository *repo, int compat_algo);
|
void repo_set_compat_hash_algo(struct repository *repo, uint32_t compat_algo);
|
||||||
void repo_set_ref_storage_format(struct repository *repo,
|
void repo_set_ref_storage_format(struct repository *repo,
|
||||||
enum ref_storage_format format);
|
enum ref_storage_format format);
|
||||||
void initialize_repository(struct repository *repo);
|
void initialize_repository(struct repository *repo);
|
||||||
|
|||||||
2
serve.c
2
serve.c
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
static int advertise_sid = -1;
|
static int advertise_sid = -1;
|
||||||
static int advertise_object_info = -1;
|
static int advertise_object_info = -1;
|
||||||
static int client_hash_algo = GIT_HASH_SHA1_LEGACY;
|
static uint32_t client_hash_algo = GIT_HASH_SHA1_LEGACY;
|
||||||
|
|
||||||
static int always_advertise(struct repository *r UNUSED,
|
static int always_advertise(struct repository *r UNUSED,
|
||||||
struct strbuf *value UNUSED)
|
struct strbuf *value UNUSED)
|
||||||
|
|||||||
Reference in New Issue
Block a user