Browse Source

builtin-reset: do not call "ls-files --unmerged"

Since reset is a builtin now, it can use the full power of libgit.a
and check for unmerged entries itself.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Schindelin 18 years ago committed by Junio C Hamano
parent
commit
cdf4a751fa
  1. 28
      builtin-reset.c
  2. 9
      t/t7102-reset.sh

28
builtin-reset.c

@ -46,26 +46,14 @@ static inline int is_merge(void) @@ -46,26 +46,14 @@ static inline int is_merge(void)

static int unmerged_files(void)
{
char b;
ssize_t len;
struct child_process cmd;
const char *argv_ls_files[] = {"ls-files", "--unmerged", NULL};

memset(&cmd, 0, sizeof(cmd));
cmd.argv = argv_ls_files;
cmd.git_cmd = 1;
cmd.out = -1;

if (start_command(&cmd))
die("Could not run sub-command: git ls-files");

len = xread(cmd.out, &b, 1);
if (len < 0)
die("Could not read output from git ls-files: %s",
strerror(errno));
finish_command(&cmd);

return len;
int i;
read_cache();
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce))
return 1;
}
return 0;
}

static int reset_index_file(const unsigned char *sha1, int is_hard_reset)

9
t/t7102-reset.sh

@ -59,6 +59,15 @@ test_expect_success 'giving a non existing revision should fail' ' @@ -59,6 +59,15 @@ test_expect_success 'giving a non existing revision should fail' '
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
'

test_expect_success 'reset --soft with unmerged index should fail' '
touch .git/MERGE_HEAD &&
echo "100644 44c5b5884550c17758737edcced463447b91d42b 1 un" |
git update-index --index-info &&
! git reset --soft HEAD &&
rm .git/MERGE_HEAD &&
git rm --cached -- un
'

test_expect_success \
'giving paths with options different than --mixed should fail' '
! git reset --soft -- first &&

Loading…
Cancel
Save