Merge branch 'jc/stash-drop'
"git stash drop" is reimplemented as an internal call to reflog_delete() function, instead of invoking "git reflog delete" via run_command() API. * jc/stash-drop: stash: call reflog_delete() in reflog.c reflog: libify delete reflog function and helpers stash: add tests to ensure reflog --rewrite --updatref behavior
This commit is contained in:
@ -17,6 +17,7 @@
|
||||
#include "diffcore.h"
|
||||
#include "exec-cmd.h"
|
||||
#include "entry.h"
|
||||
#include "reflog.h"
|
||||
|
||||
#define INCLUDE_ALL_FILES 2
|
||||
|
||||
@ -634,20 +635,9 @@ static int reflog_is_empty(const char *refname)
|
||||
|
||||
static int do_drop_stash(struct stash_info *info, int quiet)
|
||||
{
|
||||
int ret;
|
||||
struct child_process cp_reflog = CHILD_PROCESS_INIT;
|
||||
|
||||
/*
|
||||
* reflog does not provide a simple function for deleting refs. One will
|
||||
* need to be added to avoid implementing too much reflog code here
|
||||
*/
|
||||
|
||||
cp_reflog.git_cmd = 1;
|
||||
strvec_pushl(&cp_reflog.args, "reflog", "delete", "--updateref",
|
||||
"--rewrite", NULL);
|
||||
strvec_push(&cp_reflog.args, info->revision.buf);
|
||||
ret = run_command(&cp_reflog);
|
||||
if (!ret) {
|
||||
if (!reflog_delete(info->revision.buf,
|
||||
EXPIRE_REFLOGS_REWRITE | EXPIRE_REFLOGS_UPDATE_REF,
|
||||
0)) {
|
||||
if (!quiet)
|
||||
printf_ln(_("Dropped %s (%s)"), info->revision.buf,
|
||||
oid_to_hex(&info->w_commit));
|
||||
|
Reference in New Issue
Block a user