From 77d21f29eaddb1fbe82e013ea42d4e0180bbdda2 Mon Sep 17 00:00:00 2001 From: Jacob Keller Date: Wed, 18 Jan 2017 15:06:08 -0800 Subject: describe: teach describe negative pattern matches Teach git-describe the `--exclude` option which will allow specifying a glob pattern of tags to ignore. This can be combined with the `--match` patterns to enable more flexibility in determining which tags to consider. For example, suppose you wish to find the first official release tag that contains a certain commit. If we assume that official release tags are of the form "v*" and pre-release candidates include "*rc*" in their name, we can now find the first release tag that introduces the commit abcdef: git describe --contains --match="v*" --exclude="*rc*" abcdef Add documentation, tests, and completion for this change. Signed-off-by: Jacob Keller Signed-off-by: Junio C Hamano --- Documentation/git-describe.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Documentation/git-describe.txt') diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt index 7ad41e2f6a..8755f3af7b 100644 --- a/Documentation/git-describe.txt +++ b/Documentation/git-describe.txt @@ -88,6 +88,16 @@ OPTIONS patterns will be considered. Use `--no-match` to clear and reset the list of patterns. +--exclude :: + Do not consider tags matching the given `glob(7)` pattern, excluding + the "refs/tags/" prefix. This can be used to narrow the tag space and + find only tags matching some meaningful criteria. If given multiple + times, a list of patterns will be accumulated and tags matching any + of the patterns will be excluded. When combined with --match a tag will + be considered when it matches at least one --match pattern and does not + match any of the --exclude patterns. Use `--no-exclude` to clear and + reset the list of patterns. + --always:: Show uniquely abbreviated commit object as fallback. -- cgit v1.2.3