提交 90056966 编写于 作者: S SZEDER Gábor 提交者: Junio C Hamano

rerere: remove duplicated functions

Both rerere.c and builtin-rerere.c define the static functions
rr_path() and has_resolution() the exact same way.  To eliminate this
code duplication this patch turns the functions in rerere.c
non-static, and makes builtin-rerere.c use them.  Also, since this
puts these two functions into the global namespace, rename them to
rerere_path() and has_rerere_resolution(), respectively, and rename
their "name" parameter to "hex", because it better reflects what that
parameter actually is.
Signed-off-by: NSZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 e9cc02f0
...@@ -13,28 +13,17 @@ static const char git_rerere_usage[] = ...@@ -13,28 +13,17 @@ static const char git_rerere_usage[] =
static int cutoff_noresolve = 15; static int cutoff_noresolve = 15;
static int cutoff_resolve = 60; static int cutoff_resolve = 60;
static const char *rr_path(const char *name, const char *file)
{
return git_path("rr-cache/%s/%s", name, file);
}
static time_t rerere_created_at(const char *name) static time_t rerere_created_at(const char *name)
{ {
struct stat st; struct stat st;
return stat(rr_path(name, "preimage"), &st) ? (time_t) 0 : st.st_mtime; return stat(rerere_path(name, "preimage"), &st) ? (time_t) 0 : st.st_mtime;
}
static int has_resolution(const char *name)
{
struct stat st;
return !stat(rr_path(name, "postimage"), &st);
} }
static void unlink_rr_item(const char *name) static void unlink_rr_item(const char *name)
{ {
unlink(rr_path(name, "thisimage")); unlink(rerere_path(name, "thisimage"));
unlink(rr_path(name, "preimage")); unlink(rerere_path(name, "preimage"));
unlink(rr_path(name, "postimage")); unlink(rerere_path(name, "postimage"));
rmdir(git_path("rr-cache/%s", name)); rmdir(git_path("rr-cache/%s", name));
} }
...@@ -65,7 +54,7 @@ static void garbage_collect(struct string_list *rr) ...@@ -65,7 +54,7 @@ static void garbage_collect(struct string_list *rr)
then = rerere_created_at(e->d_name); then = rerere_created_at(e->d_name);
if (!then) if (!then)
continue; continue;
cutoff = (has_resolution(e->d_name) cutoff = (has_rerere_resolution(e->d_name)
? cutoff_resolve : cutoff_noresolve); ? cutoff_resolve : cutoff_noresolve);
if (then < now - cutoff * 86400) if (then < now - cutoff * 86400)
string_list_append(e->d_name, &to_remove); string_list_append(e->d_name, &to_remove);
...@@ -124,7 +113,7 @@ int cmd_rerere(int argc, const char **argv, const char *prefix) ...@@ -124,7 +113,7 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
if (!strcmp(argv[1], "clear")) { if (!strcmp(argv[1], "clear")) {
for (i = 0; i < merge_rr.nr; i++) { for (i = 0; i < merge_rr.nr; i++) {
const char *name = (const char *)merge_rr.items[i].util; const char *name = (const char *)merge_rr.items[i].util;
if (!has_resolution(name)) if (!has_rerere_resolution(name))
unlink_rr_item(name); unlink_rr_item(name);
} }
unlink(git_path("rr-cache/MERGE_RR")); unlink(git_path("rr-cache/MERGE_RR"));
...@@ -137,7 +126,7 @@ int cmd_rerere(int argc, const char **argv, const char *prefix) ...@@ -137,7 +126,7 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
for (i = 0; i < merge_rr.nr; i++) { for (i = 0; i < merge_rr.nr; i++) {
const char *path = merge_rr.items[i].string; const char *path = merge_rr.items[i].string;
const char *name = (const char *)merge_rr.items[i].util; const char *name = (const char *)merge_rr.items[i].util;
diff_two(rr_path(name, "preimage"), path, path, path); diff_two(rerere_path(name, "preimage"), path, path, path);
} }
else else
usage(git_rerere_usage); usage(git_rerere_usage);
......
...@@ -12,15 +12,15 @@ static int rerere_autoupdate; ...@@ -12,15 +12,15 @@ static int rerere_autoupdate;
static char *merge_rr_path; static char *merge_rr_path;
static const char *rr_path(const char *name, const char *file) const char *rerere_path(const char *hex, const char *file)
{ {
return git_path("rr-cache/%s/%s", name, file); return git_path("rr-cache/%s/%s", hex, file);
} }
static int has_resolution(const char *name) int has_rerere_resolution(const char *hex)
{ {
struct stat st; struct stat st;
return !stat(rr_path(name, "postimage"), &st); return !stat(rerere_path(hex, "postimage"), &st);
} }
static void read_rr(struct string_list *rr) static void read_rr(struct string_list *rr)
...@@ -208,12 +208,12 @@ static int merge(const char *name, const char *path) ...@@ -208,12 +208,12 @@ static int merge(const char *name, const char *path)
mmbuffer_t result = {NULL, 0}; mmbuffer_t result = {NULL, 0};
xpparam_t xpp = {XDF_NEED_MINIMAL}; xpparam_t xpp = {XDF_NEED_MINIMAL};
if (handle_file(path, NULL, rr_path(name, "thisimage")) < 0) if (handle_file(path, NULL, rerere_path(name, "thisimage")) < 0)
return 1; return 1;
if (read_mmfile(&cur, rr_path(name, "thisimage")) || if (read_mmfile(&cur, rerere_path(name, "thisimage")) ||
read_mmfile(&base, rr_path(name, "preimage")) || read_mmfile(&base, rerere_path(name, "preimage")) ||
read_mmfile(&other, rr_path(name, "postimage"))) read_mmfile(&other, rerere_path(name, "postimage")))
return 1; return 1;
ret = xdl_merge(&base, &cur, "", &other, "", ret = xdl_merge(&base, &cur, "", &other, "",
&xpp, XDL_MERGE_ZEALOUS, &result); &xpp, XDL_MERGE_ZEALOUS, &result);
...@@ -291,7 +291,7 @@ static int do_plain_rerere(struct string_list *rr, int fd) ...@@ -291,7 +291,7 @@ static int do_plain_rerere(struct string_list *rr, int fd)
string_list_insert(path, rr)->util = hex; string_list_insert(path, rr)->util = hex;
if (mkdir(git_path("rr-cache/%s", hex), 0755)) if (mkdir(git_path("rr-cache/%s", hex), 0755))
continue; continue;
handle_file(path, NULL, rr_path(hex, "preimage")); handle_file(path, NULL, rerere_path(hex, "preimage"));
fprintf(stderr, "Recorded preimage for '%s'\n", path); fprintf(stderr, "Recorded preimage for '%s'\n", path);
} }
} }
...@@ -307,7 +307,7 @@ static int do_plain_rerere(struct string_list *rr, int fd) ...@@ -307,7 +307,7 @@ static int do_plain_rerere(struct string_list *rr, int fd)
const char *path = rr->items[i].string; const char *path = rr->items[i].string;
const char *name = (const char *)rr->items[i].util; const char *name = (const char *)rr->items[i].util;
if (has_resolution(name)) { if (has_rerere_resolution(name)) {
if (!merge(name, path)) { if (!merge(name, path)) {
if (rerere_autoupdate) if (rerere_autoupdate)
string_list_insert(path, &update); string_list_insert(path, &update);
...@@ -326,7 +326,7 @@ static int do_plain_rerere(struct string_list *rr, int fd) ...@@ -326,7 +326,7 @@ static int do_plain_rerere(struct string_list *rr, int fd)
continue; continue;
fprintf(stderr, "Recorded resolution for '%s'.\n", path); fprintf(stderr, "Recorded resolution for '%s'.\n", path);
copy_file(rr_path(name, "postimage"), path, 0666); copy_file(rerere_path(name, "postimage"), path, 0666);
mark_resolved: mark_resolved:
rr->items[i].util = NULL; rr->items[i].util = NULL;
} }
......
...@@ -5,5 +5,7 @@ ...@@ -5,5 +5,7 @@
extern int setup_rerere(struct string_list *); extern int setup_rerere(struct string_list *);
extern int rerere(void); extern int rerere(void);
extern const char *rerere_path(const char *hex, const char *file);
extern int has_rerere_resolution(const char *hex);
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册