Download raw body.
fix got status <obstructed file>
On Sat, Mar 12, 2022 at 10:31:55PM +0100, Stefan Sperling wrote: > Omar noticed that 'got status' does not return any result when > called on an obstructed path directly. This patch fixes the issue. > > ok? I have committed this fix. This issue was blocking Omar's progress on 'got patch' and Omar has tested the fix. > diff 3ec75771fbdfdc7734da32b81e5cd7266730e60d c0c2b3d1e2c80fe9ee36670cff033f948cca9fd6 > blob - 0b4571401cfdddef043be11cce960c58beae2802 > blob + 26ce9d0c775728d7d4b6a3450c3704c51f29672a > --- lib/worktree.c > +++ lib/worktree.c > @@ -3645,6 +3645,7 @@ worktree_status(struct got_worktree *worktree, const c > struct diff_dir_cb_arg arg; > char *ondisk_path = NULL; > struct got_pathlist_head ignores; > + struct got_fileindex_entry *ie; > > TAILQ_INIT(&ignores); > > @@ -3652,6 +3653,14 @@ worktree_status(struct got_worktree *worktree, const c > worktree->root_path, path[0] ? "/" : "", path) == -1) > return got_error_from_errno("asprintf"); > > + ie = got_fileindex_entry_get(fileindex, path, strlen(path)); > + if (ie) { > + err = report_single_file_status(path, ondisk_path, > + fileindex, status_cb, status_arg, repo, > + report_unchanged, &ignores, no_ignores); > + goto done; > + } > + > fd = open(ondisk_path, O_RDONLY | O_NOFOLLOW | O_DIRECTORY | O_CLOEXEC); > if (fd == -1) { > if (errno != ENOTDIR && errno != ENOENT && errno != EACCES && > blob - 9e581724fe4e03c1b4d098200691d364a658da87 > blob + f96cb55c8433319268b0b22d1615907b94f37ce7 > --- regress/cmdline/status.sh > +++ regress/cmdline/status.sh > @@ -152,7 +152,17 @@ test_status_obstructed() { > ret="$?" > if [ "$ret" != "0" ]; then > diff -u $testroot/stdout.expected $testroot/stdout > + test_done "$testroot" "$ret" > + return 1 > fi > + > + (cd $testroot/wt && got status epsilon/zeta > $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" > } > > >
fix got status <obstructed file>