Download raw body.
make got tree work on current branch
Ok with suggested changes?
--
Tracey Emery
diff 678ade17323ba52d28ca9b2b58dfe8a232958363 /home/basepr1me/src/got
blob - ae5dabe3cd729accbfdefa1e3cd3bfe9a87bf226
file + got/got.c
--- got/got.c
+++ got/got.c
@@ -3950,7 +3950,7 @@ cmd_tree(int argc, char *argv[])
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;
@@ -4057,7 +4057,11 @@ cmd_tree(int argc, char *argv[])
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
file + regress/cmdline/Makefile
--- regress/cmdline/Makefile
+++ regress/cmdline/Makefile
@@ -1,6 +1,6 @@
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:
@@ -74,5 +74,8 @@ clone:
fetch:
./fetch.sh
+
+tree:
+ ./tree.sh
.include <bsd.regress.mk>
blob - /dev/null
file + regress/cmdline/tree.sh
--- regress/cmdline/tree.sh
+++ regress/cmdline/tree.sh
@@ -0,0 +1,81 @@
+#!/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
make got tree work on current branch