feat(hash): added branch name to object hash

This commit is contained in:
lisk77 2025-09-26 19:27:07 +02:00
parent a2805c1a3f
commit 58079f26da

View file

@ -149,8 +149,8 @@ static int status() {
if (base_file_buffer_search(tracked_list, file_name)) { if (base_file_buffer_search(tracked_list, file_name)) {
BaseFileInfo* base_file = base_file_buffer_search(tracked_list, file_name); BaseFileInfo* base_file = base_file_buffer_search(tracked_list, file_name);
char base_file_hash[41]; char base_file_hash[41];
char id[2 + snprintf(NULL, 0, "%lu", base_file->base_num) + strlen(file_name)]; char id[3 + snprintf(NULL, 0, "%lu", base_file->base_num) + strlen(file_name) + strlen(branch)];
snprintf(id, sizeof(id), "%s %lu", file_name, base_file->base_num); snprintf(id, sizeof(id), "%s %lu %s", file_name, base_file->base_num, branch);
object_hash(BaseFileObject, id, base_file_hash); object_hash(BaseFileObject, id, base_file_hash);
File* basefile = parse_object(base_file_hash, BaseFileObject, NULL, NULL); File* basefile = parse_object(base_file_hash, BaseFileObject, NULL, NULL);
if (!basefile) { if (!basefile) {
@ -169,8 +169,8 @@ static int status() {
if (base_file->diff_num > 0) { if (base_file->diff_num > 0) {
size_t prev_diff = base_file->diff_num - 1; size_t prev_diff = base_file->diff_num - 1;
char prev_diff_hash[41]; char prev_diff_hash[41];
char id2[2 + snprintf(NULL, 0, "%zu", prev_diff) + strlen(file_name)]; char id2[3 + snprintf(NULL, 0, "%zu", prev_diff) + strlen(file_name) + strlen(branch)];
snprintf(id2, sizeof(id2), "%s %zu", file_name, prev_diff); snprintf(id2, sizeof(id2), "%s %zu %s", file_name, prev_diff, branch);
object_hash(FileDiffObject, id2, prev_diff_hash); object_hash(FileDiffObject, id2, prev_diff_hash);
char hash[41]; char hash[41];
ActionList* last_diff = parse_object(prev_diff_hash, FileDiffObject, NULL, hash); ActionList* last_diff = parse_object(prev_diff_hash, FileDiffObject, NULL, hash);
@ -439,8 +439,8 @@ static int commit(int argc, char** argv) {
} }
char base_file_hash[41]; char base_file_hash[41];
char id[2 + snprintf(NULL, 0, "%lu", base_file->base_num) + strlen(files->items[idx])]; char id[3 + snprintf(NULL, 0, "%lu", base_file->base_num) + strlen(files->items[idx]) + strlen(branch)];
snprintf(id, sizeof(id), "%s %lu", (char*)files->items[idx], base_file->base_num); snprintf(id, sizeof(id), "%s %lu %s", (char*)files->items[idx], base_file->base_num, branch);
object_hash(BaseFileObject, id, base_file_hash); object_hash(BaseFileObject, id, base_file_hash);
File* basefile = parse_object(base_file_hash, BaseFileObject, NULL, NULL); File* basefile = parse_object(base_file_hash, BaseFileObject, NULL, NULL);
if (!basefile) { if (!basefile) {
@ -495,8 +495,8 @@ static int commit(int argc, char** argv) {
if (base_file->diff_num > 0) { if (base_file->diff_num > 0) {
size_t prev_diff = base_file->diff_num - 1; size_t prev_diff = base_file->diff_num - 1;
char prev_diff_hash[41]; char prev_diff_hash[41];
char id2[2 + snprintf(NULL, 0, "%zu", prev_diff) + strlen(files->items[idx])]; char id2[3 + snprintf(NULL, 0, "%zu", prev_diff) + strlen(files->items[idx]) + strlen(branch)];
snprintf(id2, sizeof(id2), "%s %zu", (char*)files->items[idx], prev_diff); snprintf(id2, sizeof(id2), "%s %zu %s", (char*)files->items[idx], prev_diff, branch);
object_hash(FileDiffObject, id2, prev_diff_hash); object_hash(FileDiffObject, id2, prev_diff_hash);
char hash[41]; char hash[41];
ActionList* last_diff = parse_object(prev_diff_hash, FileDiffObject, NULL, hash); ActionList* last_diff = parse_object(prev_diff_hash, FileDiffObject, NULL, hash);
@ -575,8 +575,8 @@ static int commit(int argc, char** argv) {
save_diff(diff, files->items[idx], root, base_file->diff_num, base_file_hash); save_diff(diff, files->items[idx], root, base_file->diff_num, base_file_hash);
char diff_hash[41]; char diff_hash[41];
char id[2 + snprintf(NULL, 0, "%lu", base_file->diff_num) + strlen(files->items[idx])]; char id[3 + snprintf(NULL, 0, "%lu", base_file->diff_num) + strlen(files->items[idx]) + strlen(branch)];
snprintf(id, sizeof(id), "%s %lu", (char*)files->items[idx], base_file->diff_num); snprintf(id, sizeof(id), "%s %lu %s", (char*)files->items[idx], base_file->diff_num, branch);
object_hash(BaseFileObject, id, diff_hash); object_hash(BaseFileObject, id, diff_hash);
flat_map_put(file_hash_map, files->items[idx], diff_hash); flat_map_put(file_hash_map, files->items[idx], diff_hash);