зеркало из https://github.com/microsoft/git.git
packfile: close commit-graph in close_all_packs
The close_all_packs() method is used to close all read handles to pack-files and the multi-pack-index before running 'git gc --auto'. This is particularly important on the Windows platform, where read handles block any writes to those files. Replacing one of these files with a rename() will fail in this situation. The commit-graph also performs a rename, so is susceptable to this problem. We are careful to close the commit-graph before writing, but that doesn't work when a 'git fetch' (or similar) process runs 'git gc --auto' which may write a commit-graph. Here, close the commit-graph as part of close_all_packs(). Reported-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
c3a3a964b2
Коммит
5472c32c37
|
@ -16,6 +16,7 @@
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
#include "object-store.h"
|
#include "object-store.h"
|
||||||
#include "midx.h"
|
#include "midx.h"
|
||||||
|
#include "commit-graph.h"
|
||||||
|
|
||||||
char *odb_pack_name(struct strbuf *buf,
|
char *odb_pack_name(struct strbuf *buf,
|
||||||
const unsigned char *sha1,
|
const unsigned char *sha1,
|
||||||
|
@ -350,6 +351,8 @@ void close_all_packs(struct raw_object_store *o)
|
||||||
close_midx(o->multi_pack_index);
|
close_midx(o->multi_pack_index);
|
||||||
o->multi_pack_index = NULL;
|
o->multi_pack_index = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
close_commit_graph(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче