Make git-clean a builtin
authorShawn Bohrer <shawn.bohrer@gmail.com>
Mon, 12 Nov 2007 01:48:47 +0000 (19:48 -0600)
committerJunio C Hamano <gitster@pobox.com>
Mon, 19 Nov 2007 03:11:42 +0000 (19:11 -0800)
commit113f10f22f4b3b599e44e192e241e0bace9cc39e
tree83fdfa4897870cb07cea1ea4b8afa129e0c50e34
parentea55960518bb104020c02aa2f64b33f93d1775e7
Make git-clean a builtin

This replaces git-clean.sh with builtin-clean.c, and moves
git-clean.sh to the examples.

This also introduces a change in behavior when removing directories
explicitly specified as a path.  For example currently:

1. When dir has only untracked files, these two behave differently:

    $ git clean -n dir
    $ git clean -n dir/

the former says "Would not remove dir/", while the latter would say
"Would remove dir/untracked" for all paths under it, but not the
directory itself.

With -d, the former would stop refusing, however since the user
explicitly asked to remove the directory the -d is no longer required.

2. When there are more parameters:

    $ git clean -n dir foo
    $ git clean -n dir/ foo

both cases refuse to remove dir/ unless -d is specified.  Once again
since both cases requested to remove dir the -d is no longer required.

Thanks to Johannes Schindelin for the conversion to using the
parse-options API.

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