commit - 010fe6f0ea0a54c2bc1f5eb998afd8d44e235b05
commit + 2e8c69d19fae38dc738e3dfb02687b1503029a78
blob - 7bf94578ea43d411c5be1b07496fbc6ab378c4c1
blob + 874e65af899a466219bd8c3a9b1e4a2c30a94d62
--- got/got.c
+++ got/got.c
err = got_object_id_by_path(&obj_id1, repo,
qid->id, path);
if (err) {
- free(obj_id2);
- goto done;
+ if (err->code != GOT_ERR_NO_TREE_ENTRY) {
+ free(obj_id2);
+ goto done;
+ }
+ } else {
+ err = got_object_id_str(&id_str1, obj_id1);
+ if (err) {
+ free(obj_id2);
+ goto done;
+ }
}
- err = got_object_id_str(&id_str1, obj_id1);
- if (err) {
- free(obj_id2);
- goto done;
- }
}
err = got_object_get_type(&obj_type, repo, obj_id2);
if (err) {
blob - ea958f5ec1a9401d85234c78905402873c196e81
blob + b05b0f42244e812865a92ed40ef8eba754724e6c
--- regress/cmdline/log.sh
+++ regress/cmdline/log.sh
test_done "$testroot" "0"
}
+function test_log_patch_added_file {
+ local testroot=`test_init log_patch_added_file`
+ local commit_id0=`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 "new file" > $testroot/wt/new
+ (cd $testroot/wt && got add new >/dev/null)
+ (cd $testroot/wt && got commit -m 'test log_limit' > /dev/null)
+ local commit_id1=`git_show_head $testroot/repo`
+
+ echo "commit $commit_id1 (master)" > $testroot/stdout.expected
+ # This used to fail with 'got: no such entry found in tree'
+ (cd $testroot/wt && got log -l1 -p new > $testroot/stdout.patch)
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ echo "got log command failed unexpectedly" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+ grep ^commit $testroot/stdout.patch > $testroot/stdout
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ fi
+ test_done "$testroot" "$ret"
+}
+
function test_log_nonexistent_path {
local testroot=`test_init log_nonexistent_path`
local head_rev=`git_show_head $testroot/repo`
run_test test_log_in_worktree_with_path_prefix
run_test test_log_tag
run_test test_log_limit
+run_test test_log_patch_added_file
run_test test_log_nonexistent_path
run_test test_log_end_at_commit
run_test test_log_reverse_display