зеркало из https://github.com/microsoft/git.git
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
This commit is contained in:
Коммит
5fe35fcc79
10
commit.c
10
commit.c
|
@ -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
1
commit.h
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче