revert: Introduce --reset to remove sequencer state
To explicitly remove the sequencer state for a fresh cherry-pick or revert invocation, introduce a new subcommand called "--reset" to remove the sequencer state. Take the opportunity to publicly expose the sequencer paths, and a generic function called "remove_sequencer_state" that various git programs can use to remove the sequencer state in a uniform manner; "git reset" uses it later in this series. Introducing this public API is also in line with our long-term goal of eventually factoring out functions from revert.c into a generic commit sequencer. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
21b14778a9
commit
26ae337be1
19
sequencer.c
Normal file
19
sequencer.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include "cache.h"
|
||||
#include "sequencer.h"
|
||||
#include "strbuf.h"
|
||||
#include "dir.h"
|
||||
|
||||
void remove_sequencer_state(int aggressive)
|
||||
{
|
||||
struct strbuf seq_dir = STRBUF_INIT;
|
||||
struct strbuf seq_old_dir = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&seq_dir, "%s", git_path(SEQ_DIR));
|
||||
strbuf_addf(&seq_old_dir, "%s", git_path(SEQ_OLD_DIR));
|
||||
remove_dir_recursively(&seq_old_dir, 0);
|
||||
rename(git_path(SEQ_DIR), git_path(SEQ_OLD_DIR));
|
||||
if (aggressive)
|
||||
remove_dir_recursively(&seq_old_dir, 0);
|
||||
strbuf_release(&seq_dir);
|
||||
strbuf_release(&seq_old_dir);
|
||||
}
|
Reference in New Issue
Block a user