Make "git reset" a builtin.
commit0e5a7faa3a903cf7a0a66c81e20a76b91f17faab
authorCarlos Rica <jasampler@gmail.com>
Tue, 11 Sep 2007 03:19:34 +0000 (11 05:19 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Sep 2007 20:25:07 +0000 (12 13:25 -0700)
treecd7e0dbe62f45ee0fb570710337ae181ddae03c0
parent6640f88165f77edcc266a2c0c56fb017dc613198
Make "git reset" a builtin.

This replaces the script "git-reset.sh" with "builtin-reset.c".

A few git commands used in the script are called from the builtin also:
"ls-files" to check for unmerged files, "read-tree" for resetting
the index file in "mixed" and "hard" resets, and "update-index" to
refresh at the end in the "mixed" reset and also for the option that
gets selected paths into the index.

The reset option with paths was implemented by Johannes Schindelin.

Since the option that gets selected paths into the index is not
a "reset" like the others because it does not change the HEAD at all,
now the command is showing a warning when the "--mixed" option
is supplied for that purpose.

The following table shows the behaviour of "git reset" for
the different supported options, where X means "changing"
the HEAD, index or working tree:

reset:  --soft  --mixed  --hard  -- <paths>
HEAD       X       X        X        -
index      -       X        X        X
files      -       -        X        -

Signed-off-by: Carlos Rica <jasampler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
builtin-reset.c [new file with mode: 0644]
builtin.h
contrib/examples/git-reset.sh [moved from git-reset.sh with 100% similarity]
git.c