mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
Unoptimize info/refs creation.
The code did not catch the case where you removed an existing ref without changing anything else. We are not talking about hundreds of refs anyway, so remove that optimization. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
0f56479d73
commit
60d0526aaa
@ -6,16 +6,6 @@
|
|||||||
|
|
||||||
/* refs */
|
/* refs */
|
||||||
static FILE *info_ref_fp;
|
static FILE *info_ref_fp;
|
||||||
static unsigned long info_ref_time;
|
|
||||||
static int info_ref_is_stale = 0;
|
|
||||||
|
|
||||||
static int stat_ref(const char *path, const unsigned char *sha1)
|
|
||||||
{
|
|
||||||
struct stat st;
|
|
||||||
if (!stat(path, &st) && info_ref_time < st.st_mtime)
|
|
||||||
info_ref_is_stale = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int add_info_ref(const char *path, const unsigned char *sha1)
|
static int add_info_ref(const char *path, const unsigned char *sha1)
|
||||||
{
|
{
|
||||||
@ -25,7 +15,6 @@ static int add_info_ref(const char *path, const unsigned char *sha1)
|
|||||||
|
|
||||||
static int update_info_refs(int force)
|
static int update_info_refs(int force)
|
||||||
{
|
{
|
||||||
struct stat st;
|
|
||||||
char *path0 = strdup(git_path("info/refs"));
|
char *path0 = strdup(git_path("info/refs"));
|
||||||
int len = strlen(path0);
|
int len = strlen(path0);
|
||||||
char *path1 = xmalloc(len + 2);
|
char *path1 = xmalloc(len + 2);
|
||||||
@ -33,21 +22,6 @@ static int update_info_refs(int force)
|
|||||||
strcpy(path1, path0);
|
strcpy(path1, path0);
|
||||||
strcpy(path1 + len, "+");
|
strcpy(path1 + len, "+");
|
||||||
|
|
||||||
if (!force) {
|
|
||||||
if (stat(path0, &st)) {
|
|
||||||
if (errno == ENOENT)
|
|
||||||
info_ref_is_stale = 1;
|
|
||||||
else
|
|
||||||
return error("cannot stat %s", path0);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
info_ref_time = st.st_mtime;
|
|
||||||
for_each_ref(stat_ref);
|
|
||||||
}
|
|
||||||
if (!info_ref_is_stale)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_create_leading_directories(path0);
|
safe_create_leading_directories(path0);
|
||||||
info_ref_fp = fopen(path1, "w");
|
info_ref_fp = fopen(path1, "w");
|
||||||
if (!info_ref_fp)
|
if (!info_ref_fp)
|
||||||
|
Loading…
Reference in New Issue
Block a user