ref-filter: implement '--contains' option
'tag -l' and 'branch -l' have two different ways of finding
out if a certain ref contains a commit. Implement both these
methods in ref-filter and give the caller of ref-filter API
the option to pick which implementation to be used.
'branch -l' uses 'is_descendant_of()' from commit.c which is
left as the default implementation to be used.
'tag -l' uses a more specific algorithm since ffc4b80. This
implementation is used whenever the 'with_commit_tag_algo' bit
is set in 'struct ref_filter'.
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f266c9163b
commit
ee2bd06b0f
@ -86,6 +86,11 @@ static int in_commit_list(const struct commit_list *want, struct commit *c)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* The entire code segment for supporting the --contains option has been
|
||||
* copied over to ref-filter.{c,h}. This will be deleted evetually when
|
||||
* we port tag.c to use ref-filter APIs.
|
||||
*/
|
||||
enum contains_result {
|
||||
CONTAINS_UNKNOWN = -1,
|
||||
CONTAINS_NO = 0,
|
||||
|
||||
Reference in New Issue
Block a user