path: root/t/
diff options
authorStefan Beller <>2017-03-21 22:57:18 (GMT)
committerJunio C Hamano <>2017-03-22 17:13:41 (GMT)
commitb0176ce6b5d954a747dc4d0c5a8593ed576714c4 (patch)
tree2ff1ee516b34b29613cfe8ac9af99bf377a212f2 /t/
parentc0f9c705890ac30871c70219c4b08d740fb40e2e (diff)
builtin/describe: introduce --broken flag
git-describe tells you the version number you're at, or errors out, e.g. when you run it outside of a repository, which may happen when downloading a tar ball instead of using git to obtain the source code. To keep this property of only erroring out, when not in a repository, severe (submodule) errors must be downgraded to reporting them gently instead of having git-describe error out completely. To achieve that a flag '--broken' is introduced, which is in the same vein as '--dirty' but uses an actual child process to check for dirtiness. When that child dies unexpectedly, we'll append '-broken' instead of '-dirty'. Signed-off-by: Stefan Beller <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 't/')
1 files changed, 20 insertions, 0 deletions
diff --git a/t/ b/t/
index 167491f..16952e4 100755
--- a/t/
+++ b/t/
@@ -233,4 +233,24 @@ test_expect_success 'describe --contains and --no-match' '
test_cmp expect actual
+test_expect_success 'setup and absorb a submodule' '
+ test_create_repo sub1 &&
+ test_commit -C sub1 initial &&
+ git submodule add ./sub1 &&
+ git submodule absorbgitdirs &&
+ git commit -a -m "add submodule" &&
+ git describe --dirty >expect &&
+ git describe --broken >out &&
+ test_cmp expect out
+test_expect_success 'describe chokes on severly broken submodules' '
+ mv .git/modules/sub1/ .git/modules/sub_moved &&
+ test_must_fail git describe --dirty
+test_expect_success 'describe ignoring a borken submodule' '
+ git describe --broken >out &&
+ grep broken out