1869bbe1ce
The plan is to keep assigning the backward compatible conflict ID based on the hash of the (normalized) text of conflicts, keep using that conflict ID as the directory name under $GIT_DIR/rr-cache/, but allow each conflicted path to use a separate "variant" to record resolutions, i.e. having more than one <preimage,postimage> pairs under $GIT_DIR/rr-cache/$ID/ directory. As the first step in that direction, separate the shared "conflict ID" out of the rerere_id structure. The plan is to keep information per $ID in rerere_dir, that can be shared among rerere_id that is per conflicted path. When we are done with rerere(), which can be directly called from other programs like "git apply", "git commit" and "git merge", the shared rerere_dir structures can be freed entirely, so they are not reference-counted and they are not freed when we release rerere_id's that reference them. Signed-off-by: Junio C Hamano <gitster@pobox.com>
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
#ifndef RERERE_H
|
|
#define RERERE_H
|
|
|
|
#include "string-list.h"
|
|
|
|
struct pathspec;
|
|
|
|
#define RERERE_AUTOUPDATE 01
|
|
#define RERERE_NOAUTOUPDATE 02
|
|
|
|
/*
|
|
* Marks paths that have been hand-resolved and added to the
|
|
* index. Set in the util field of such paths after calling
|
|
* rerere_remaining.
|
|
*/
|
|
extern void *RERERE_RESOLVED;
|
|
|
|
struct rerere_dir;
|
|
struct rerere_id {
|
|
struct rerere_dir *collection;
|
|
};
|
|
|
|
extern int setup_rerere(struct string_list *, int);
|
|
extern int rerere(int);
|
|
/*
|
|
* Given the conflict ID and the name of a "file" used for replaying
|
|
* the recorded resolution (e.g. "preimage", "postimage"), return the
|
|
* path to that filesystem entity. With "file" specified with NULL,
|
|
* return the path to the directory that houses these files.
|
|
*/
|
|
extern const char *rerere_path(const struct rerere_id *, const char *file);
|
|
extern int rerere_forget(struct pathspec *);
|
|
extern int rerere_remaining(struct string_list *);
|
|
extern void rerere_clear(struct string_list *);
|
|
extern void rerere_gc(struct string_list *);
|
|
|
|
#define OPT_RERERE_AUTOUPDATE(v) OPT_UYN(0, "rerere-autoupdate", (v), \
|
|
N_("update the index with reused conflict resolution if possible"))
|
|
|
|
#endif
|