git-add: Add support for --refresh option.

This allows to refresh only a subset of the project files, based on
the specified pathspecs.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index 213e924..a328bf5 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -143,4 +143,16 @@
 	git ls-files --stage | grep "^120000 .* 0	symlink$"
 '
 
+test_expect_success 'git add --refresh' '
+	>foo && git add foo && git commit -a -m "commit all" &&
+	test -z "`git diff-index HEAD -- foo`" &&
+	git read-tree HEAD &&
+	case "`git diff-index HEAD -- foo`" in
+	:100644" "*"M	foo") echo ok;;
+	*) echo fail; (exit 1);;
+	esac &&
+	git add --refresh -- foo &&
+	test -z "`git diff-index HEAD -- foo`"
+'
+
 test_done