cfc5789ada
When resolving a conflict using "git add" to create a stage #0 entry, or "git rm" to remove entries at higher stages, remove_index_entry_at() function is eventually called to remove unmerged (i.e. higher stage) entries from the index. Introduce a "resolve_undo_info" structure and keep track of the removed cache entries, and save it in a new index extension section in the index_state. Operations like "read-tree -m", "merge", "checkout [-m] <branch>" and "reset" are signs that recorded information in the index is no longer necessary. The data is removed from the index extension when operations start; they may leave conflicted entries in the index, and later user actions like "git add" will record their conflicted states afresh. Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 lines
414 B
C
15 lines
414 B
C
#ifndef RESOLVE_UNDO_H
|
|
#define RESOLVE_UNDO_H
|
|
|
|
struct resolve_undo_info {
|
|
unsigned int mode[3];
|
|
unsigned char sha1[3][20];
|
|
};
|
|
|
|
extern void record_resolve_undo(struct index_state *, struct cache_entry *);
|
|
extern void resolve_undo_write(struct strbuf *, struct string_list *);
|
|
extern struct string_list *resolve_undo_read(void *, unsigned long);
|
|
extern void resolve_undo_clear_index(struct index_state *);
|
|
|
|
#endif
|