Browse Source

Merge branch 'jt/reset-grafts-when-resetting-shallow'

When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.

* jt/reset-grafts-when-resetting-shallow:
  shallow: reset commit grafts when shallow is reset
maint
Junio C Hamano 3 years ago
parent
commit
5fe35fcc79
  1. 10
      commit.c
  2. 1
      commit.h
  3. 1
      shallow.c
  4. 1
      submodule.c
  5. 9
      t/t5537-fetch-shallow.sh

10
commit.c

@ -249,6 +249,16 @@ int for_each_commit_graft(each_commit_graft_fn fn, void *cb_data) @@ -249,6 +249,16 @@ int for_each_commit_graft(each_commit_graft_fn fn, void *cb_data)
return ret;
}

void reset_commit_grafts(struct repository *r)
{
int i;

for (i = 0; i < r->parsed_objects->grafts_nr; i++)
free(r->parsed_objects->grafts[i]);
r->parsed_objects->grafts_nr = 0;
r->parsed_objects->commit_graft_prepared = 0;
}

struct commit_buffer {
void *buffer;
unsigned long size;

1
commit.h

@ -249,6 +249,7 @@ int commit_graft_pos(struct repository *r, const struct object_id *oid); @@ -249,6 +249,7 @@ int commit_graft_pos(struct repository *r, const struct object_id *oid);
int register_commit_graft(struct repository *r, struct commit_graft *, int);
void prepare_commit_graft(struct repository *r);
struct commit_graft *lookup_commit_graft(struct repository *r, const struct object_id *oid);
void reset_commit_grafts(struct repository *r);

struct commit *get_fork_point(const char *refname, struct commit *commit);


1
shallow.c

@ -90,6 +90,7 @@ static void reset_repository_shallow(struct repository *r) @@ -90,6 +90,7 @@ static void reset_repository_shallow(struct repository *r)
{
r->parsed_objects->is_shallow = -1;
stat_validity_clear(r->parsed_objects->shallow_stat);
reset_commit_grafts(r);
}

int commit_shallow_file(struct repository *r, struct shallow_lock *lk)

1
submodule.c

@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
#include "parse-options.h"
#include "object-store.h"
#include "commit-reach.h"
#include "shallow.h"

static int config_update_recurse_submodules = RECURSE_SUBMODULES_OFF;
static int initialized_fetch_ref_tips;

9
t/t5537-fetch-shallow.sh

@ -161,6 +161,15 @@ test_expect_success 'fetch --update-shallow' ' @@ -161,6 +161,15 @@ test_expect_success 'fetch --update-shallow' '
)
'

test_expect_success 'fetch --update-shallow into a repo with submodules' '
git init a-submodule &&
test_commit -C a-submodule foo &&
git init repo-with-sub &&
git -C repo-with-sub submodule add ../a-submodule a-submodule &&
git -C repo-with-sub commit -m "added submodule" &&
git -C repo-with-sub fetch --update-shallow ../shallow/.git refs/heads/*:refs/remotes/shallow/*
'

test_expect_success 'fetch --update-shallow (with fetch.writeCommitGraph)' '
(
cd shallow &&

Loading…
Cancel
Save