Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/describe.c1
-rwxr-xr-xt/t6120-describe.sh33
2 files changed, 34 insertions, 0 deletions
diff --git a/builtin/describe.c b/builtin/describe.c
index cf1ae77d7c..d281dff2b3 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -617,6 +617,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
struct argv_array args = ARGV_ARRAY_INIT;
int fd, result;
+ setup_work_tree();
read_cache_preload(NULL);
refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED,
NULL, NULL, NULL);
diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh
index 84dd1cb690..7da57db17d 100755
--- a/t/t6120-describe.sh
+++ b/t/t6120-describe.sh
@@ -146,14 +146,38 @@ check_describe A-* HEAD
check_describe "A-*[0-9a-f]" --dirty
+test_expect_success 'describe --dirty with --work-tree' '
+ (
+ cd "$TEST_DIRECTORY" &&
+ git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
+ ) &&
+ grep "^A-[1-9][0-9]\?-g[0-9a-f]\+$" out
+'
+
test_expect_success 'set-up dirty work tree' '
echo >>file
'
check_describe "A-*[0-9a-f]-dirty" --dirty
+test_expect_success 'describe --dirty with --work-tree (dirty)' '
+ (
+ cd "$TEST_DIRECTORY" &&
+ git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
+ ) &&
+ grep "^A-[1-9][0-9]\?-g[0-9a-f]\+-dirty$" out
+'
+
check_describe "A-*[0-9a-f].mod" --dirty=.mod
+test_expect_success 'describe --dirty=.mod with --work-tree (dirty)' '
+ (
+ cd "$TEST_DIRECTORY" &&
+ git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty=.mod >"$TRASH_DIRECTORY/out"
+ ) &&
+ grep "^A-[1-9][0-9]\?-g[0-9a-f]\+.mod$" out
+'
+
test_expect_success 'describe --dirty HEAD' '
test_must_fail git describe --dirty HEAD
'
@@ -304,8 +328,17 @@ test_expect_success 'describe chokes on severely broken submodules' '
mv .git/modules/sub1/ .git/modules/sub_moved &&
test_must_fail git describe --dirty
'
+
test_expect_success 'describe ignoring a broken submodule' '
git describe --broken >out &&
+ grep broken out
+'
+
+test_expect_success 'describe with --work-tree ignoring a broken submodule' '
+ (
+ cd "$TEST_DIRECTORY" &&
+ git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --broken >"$TRASH_DIRECTORY/out"
+ ) &&
test_when_finished "mv .git/modules/sub_moved .git/modules/sub1" &&
grep broken out
'