aboutsummaryrefslogtreecommitdiffstats
path: root/ref-filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'ref-filter.h')
-rw-r--r--ref-filter.h27
1 files changed, 16 insertions, 11 deletions
diff --git a/ref-filter.h b/ref-filter.h
index 85c8ebc3b9..19ea4c4134 100644
--- a/ref-filter.h
+++ b/ref-filter.h
@@ -1,7 +1,7 @@
#ifndef REF_FILTER_H
#define REF_FILTER_H
-#include "sha1-array.h"
+#include "oid-array.h"
#include "refs.h"
#include "commit.h"
#include "parse-options.h"
@@ -28,9 +28,12 @@ struct atom_value;
struct ref_sorting {
struct ref_sorting *next;
int atom; /* index into used_atom array (internal) */
- unsigned reverse : 1,
- ignore_case : 1,
- version : 1;
+ enum {
+ REF_SORTING_REVERSE = 1<<0,
+ REF_SORTING_ICASE = 1<<1,
+ REF_SORTING_VERSION = 1<<2,
+ REF_SORTING_DETACHED_HEAD_FIRST = 1<<3,
+ } sort_flags;
};
struct ref_array_item {
@@ -54,13 +57,8 @@ struct ref_filter {
struct oid_array points_at;
struct commit_list *with_commit;
struct commit_list *no_commit;
-
- enum {
- REF_FILTER_MERGED_NONE = 0,
- REF_FILTER_MERGED_INCLUDE,
- REF_FILTER_MERGED_OMIT
- } merge;
- struct commit *merge_commit;
+ struct commit_list *reachable_from;
+ struct commit_list *unreachable_from;
unsigned int with_commit_tag_algo : 1,
match_as_path : 1,
@@ -96,6 +94,11 @@ struct ref_format {
#define OPT_MERGED(f, h) _OPT_MERGED_NO_MERGED("merged", f, h)
#define OPT_NO_MERGED(f, h) _OPT_MERGED_NO_MERGED("no-merged", f, h)
+#define OPT_REF_SORT(var) \
+ OPT_CALLBACK_F(0, "sort", (var), \
+ N_("key"), N_("field name to sort on"), \
+ PARSE_OPT_NONEG, parse_opt_ref_sorting)
+
/*
* API for filtering a set of refs. Based on the type of refs the user
* has requested, we iterate through those refs and apply filters
@@ -109,6 +112,8 @@ void ref_array_clear(struct ref_array *array);
int verify_ref_format(struct ref_format *format);
/* Sort the given ref_array as per the ref_sorting provided */
void ref_array_sort(struct ref_sorting *sort, struct ref_array *array);
+/* Set REF_SORTING_* sort_flags for all elements of a sorting list */
+void ref_sorting_set_sort_flags_all(struct ref_sorting *sorting, unsigned int mask, int on);
/* Based on the given format and quote_style, fill the strbuf */
int format_ref_array_item(struct ref_array_item *info,
const struct ref_format *format,