commit - 99495ddb79841fe89b0746d35a49bb81e9220096
commit + 194cb7cb2a0f223daf0baa74a1e85bbbb44c10fd
blob - 5796af500a49c702c5c1d95f32551f881ad0f9b5
blob + d1e3839c06a7f70e71410592024f426053df2ced
--- lib/fileindex.c
+++ lib/fileindex.c
} else if (cmp < 0) {
next = walk_fileindex(fileindex, *ie);
if (got_path_is_child((*ie)->path, path,
- path_len) && (entry_name == NULL ||
- strcmp(te_name, entry_name) == 0)) {
+ path_len) && entry_name == NULL) {
err = cb->diff_old(cb_arg, *ie, path);
if (err || entry_name)
break;
blob - a52e26753f5fdda870b159596d715fa7bae988c0
blob + dd8f31f1ab6cb4e1c7bba94b8c2abc6f0e08b67a
--- regress/cmdline/update.sh
+++ regress/cmdline/update.sh
test_done "$testroot" "0"
}
+
+test_update_single_file() {
+ local testroot=`test_init update_single_file 1`
+
+ echo c1 > $testroot/repo/c
+ (cd $testroot/repo && git add .)
+ git_commit $testroot/repo -m "adding executable file"
+ local commit_id1=`git_show_head $testroot/repo`
+
+ echo a > $testroot/repo/a
+ echo b > $testroot/repo/b
+ echo c2 > $testroot/repo/c
+ (cd $testroot/repo && git add .)
+ git_commit $testroot/repo -m "adding executable file"
+ local commit_id2=`git_show_head $testroot/repo`
+ got checkout $testroot/repo $testroot/wt > /dev/null
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo "U c" > $testroot/stdout.expected
+ echo -n "Updated to commit $commit_id1" >> $testroot/stdout.expected
+ echo >> $testroot/stdout.expected
+
+ (cd $testroot/wt && got update -c $commit_id1 c \
+ > $testroot/stdout)
+
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo c1 > $testroot/content.expected
+ cat $testroot/wt/c > $testroot/content
+
+ cmp -s $testroot/content.expected $testroot/content
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/content.expected $testroot/content
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo "U c" > $testroot/stdout.expected
+ echo -n "Updated to commit $commit_id2" >> $testroot/stdout.expected
+ echo >> $testroot/stdout.expected
+
+ (cd $testroot/wt && got update c > $testroot/stdout)
+
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo c2 > $testroot/content.expected
+ cat $testroot/wt/c > $testroot/content
+
+ cmp -s $testroot/content.expected $testroot/content
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/content.expected $testroot/content
+ fi
+ test_done "$testroot" "$ret"
+}
+
+
test_parseargs "$@"
run_test test_update_basic
run_test test_update_adds_file
run_test test_update_adds_symlink
run_test test_update_deletes_symlink
run_test test_update_symlink_conflicts
+run_test test_update_single_file