rerere: convert to use parse_pathspec
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
15b55ae06a
commit
01a10b0af9
@ -6,6 +6,7 @@
|
|||||||
#include "rerere.h"
|
#include "rerere.h"
|
||||||
#include "xdiff/xdiff.h"
|
#include "xdiff/xdiff.h"
|
||||||
#include "xdiff-interface.h"
|
#include "xdiff-interface.h"
|
||||||
|
#include "pathspec.h"
|
||||||
|
|
||||||
static const char * const rerere_usage[] = {
|
static const char * const rerere_usage[] = {
|
||||||
N_("git rerere [clear | forget path... | status | remaining | diff | gc]"),
|
N_("git rerere [clear | forget path... | status | remaining | diff | gc]"),
|
||||||
@ -68,11 +69,12 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
|
|||||||
return rerere(flags);
|
return rerere(flags);
|
||||||
|
|
||||||
if (!strcmp(argv[0], "forget")) {
|
if (!strcmp(argv[0], "forget")) {
|
||||||
const char **pathspec;
|
struct pathspec pathspec;
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
warning("'git rerere forget' without paths is deprecated");
|
warning("'git rerere forget' without paths is deprecated");
|
||||||
pathspec = get_pathspec(prefix, argv + 1);
|
parse_pathspec(&pathspec, 0, PATHSPEC_PREFER_CWD,
|
||||||
return rerere_forget(pathspec);
|
prefix, argv + 1);
|
||||||
|
return rerere_forget(&pathspec);
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = setup_rerere(&merge_rr, flags);
|
fd = setup_rerere(&merge_rr, flags);
|
||||||
|
9
rerere.c
9
rerere.c
@ -6,6 +6,7 @@
|
|||||||
#include "resolve-undo.h"
|
#include "resolve-undo.h"
|
||||||
#include "ll-merge.h"
|
#include "ll-merge.h"
|
||||||
#include "attr.h"
|
#include "attr.h"
|
||||||
|
#include "pathspec.h"
|
||||||
|
|
||||||
#define RESOLVED 0
|
#define RESOLVED 0
|
||||||
#define PUNTED 1
|
#define PUNTED 1
|
||||||
@ -656,7 +657,7 @@ static int rerere_forget_one_path(const char *path, struct string_list *rr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rerere_forget(const char **pathspec)
|
int rerere_forget(struct pathspec *pathspec)
|
||||||
{
|
{
|
||||||
int i, fd;
|
int i, fd;
|
||||||
struct string_list conflict = STRING_LIST_INIT_DUP;
|
struct string_list conflict = STRING_LIST_INIT_DUP;
|
||||||
@ -667,12 +668,12 @@ int rerere_forget(const char **pathspec)
|
|||||||
|
|
||||||
fd = setup_rerere(&merge_rr, RERERE_NOAUTOUPDATE);
|
fd = setup_rerere(&merge_rr, RERERE_NOAUTOUPDATE);
|
||||||
|
|
||||||
unmerge_cache(pathspec);
|
unmerge_cache(pathspec->raw);
|
||||||
find_conflict(&conflict);
|
find_conflict(&conflict);
|
||||||
for (i = 0; i < conflict.nr; i++) {
|
for (i = 0; i < conflict.nr; i++) {
|
||||||
struct string_list_item *it = &conflict.items[i];
|
struct string_list_item *it = &conflict.items[i];
|
||||||
if (!match_pathspec(pathspec, it->string, strlen(it->string),
|
if (!match_pathspec_depth(pathspec, it->string, strlen(it->string),
|
||||||
0, NULL))
|
0, NULL))
|
||||||
continue;
|
continue;
|
||||||
rerere_forget_one_path(it->string, &merge_rr);
|
rerere_forget_one_path(it->string, &merge_rr);
|
||||||
}
|
}
|
||||||
|
4
rerere.h
4
rerere.h
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include "string-list.h"
|
#include "string-list.h"
|
||||||
|
|
||||||
|
struct pathspec;
|
||||||
|
|
||||||
#define RERERE_AUTOUPDATE 01
|
#define RERERE_AUTOUPDATE 01
|
||||||
#define RERERE_NOAUTOUPDATE 02
|
#define RERERE_NOAUTOUPDATE 02
|
||||||
|
|
||||||
@ -16,7 +18,7 @@ extern void *RERERE_RESOLVED;
|
|||||||
extern int setup_rerere(struct string_list *, int);
|
extern int setup_rerere(struct string_list *, int);
|
||||||
extern int rerere(int);
|
extern int rerere(int);
|
||||||
extern const char *rerere_path(const char *hex, const char *file);
|
extern const char *rerere_path(const char *hex, const char *file);
|
||||||
extern int rerere_forget(const char **);
|
extern int rerere_forget(struct pathspec *);
|
||||||
extern int rerere_remaining(struct string_list *);
|
extern int rerere_remaining(struct string_list *);
|
||||||
extern void rerere_clear(struct string_list *);
|
extern void rerere_clear(struct string_list *);
|
||||||
extern void rerere_gc(struct string_list *);
|
extern void rerere_gc(struct string_list *);
|
||||||
|
Loading…
Reference in New Issue
Block a user