commit - 1831ac029c57d391f90a06e6aaf7f30e6b855ff7
commit + 4e0a20a47c3ad389097e7c1bbcc68dbb10c70528
blob - ae5dabe3cd729accbfdefa1e3cd3bfe9a87bf226
blob + 88e00352743c1793902d7950c2ab3bdd10f581be
--- got/got.c
+++ got/got.c
const struct got_error *error;
struct got_repository *repo = NULL;
struct got_worktree *worktree = NULL;
- const char *path;
+ const char *path, *refname = NULL;
char *cwd = NULL, *repo_path = NULL, *in_repo_path = NULL;
struct got_object_id *commit_id = NULL;
char *commit_id_str = NULL;
if (commit_id_str == NULL) {
struct got_reference *head_ref;
- error = got_ref_open(&head_ref, repo, GOT_REF_HEAD, 0);
+ if (worktree)
+ refname = got_worktree_get_head_ref_name(worktree);
+ else
+ refname = GOT_REF_HEAD;
+ error = got_ref_open(&head_ref, repo, refname, 0);
if (error != NULL)
goto done;
error = got_ref_resolve(&commit_id, repo, head_ref);
blob - 4a9108ff21dbf1c87218b3f99d4c875f8bbabb57
blob + 0f29c0ec552874fbfbdf266c710410d5726598aa
--- regress/cmdline/Makefile
+++ regress/cmdline/Makefile
REGRESS_TARGETS=checkout update status log add rm diff blame branch tag \
ref commit revert cherrypick backout rebase import histedit \
- integrate stage unstage cat clone fetch
+ integrate stage unstage cat clone fetch tree
NOOBJ=Yes
checkout:
fetch:
./fetch.sh
+tree:
+ ./tree.sh
+
.include <bsd.regress.mk>
blob - /dev/null
blob + 9fded8df42c57f1baeffa1c59d60a4ba8651ebc5 (mode 644)
--- /dev/null
+++ regress/cmdline/tree.sh
+#!/bin/sh
+#
+# Copyright (c) 2020 Tracey Emery <tracey@openbsd.org>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+. ./common.sh
+
+function test_tree_basic {
+ local testroot=`test_init tree_basic`
+
+ got checkout $testroot/repo $testroot/wt > /dev/null
+
+ echo "new file" > $testroot/wt/foo
+
+ (cd $testroot/wt && got add foo > /dev/null)
+ (cd $testroot/wt && got commit -m "add foo" foo >/dev/null)
+
+ echo 'alpha' > $testroot/stdout.expected
+ echo 'beta' >> $testroot/stdout.expected
+ echo 'epsilon/' >> $testroot/stdout.expected
+ echo 'foo' >> $testroot/stdout.expected
+ echo 'gamma/' >> $testroot/stdout.expected
+
+ (cd $testroot/wt && got tree > $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_tree_branch {
+ local testroot=`test_init tree_branch`
+
+ got checkout $testroot/repo $testroot/wt > /dev/null
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ (cd $testroot/wt && got br foo > $testroot/stdout)
+
+ echo "new file" > $testroot/wt/foo
+
+ (cd $testroot/wt && got add foo > /dev/null)
+ (cd $testroot/wt && got commit -m "add foo" foo >/dev/null)
+
+ echo 'alpha' > $testroot/stdout.expected
+ echo 'beta' >> $testroot/stdout.expected
+ echo 'epsilon/' >> $testroot/stdout.expected
+ echo 'foo' >> $testroot/stdout.expected
+ echo 'gamma/' >> $testroot/stdout.expected
+
+ (cd $testroot/wt && got tree > $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"
+}
+
+run_test test_tree_basic
+run_test test_tree_branch