git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/4] list_objects_filter_options: introduce 'list_object_filter_config_name'

From
Taylor Blau <me@ttaylorr.com>
Date
Jul 2, 2020, 20:06 UTC
Message-ID
<738d97be4645435c333111a06560926a701a5bea.1593720075.git.me@ttaylorr.com>
In-Reply-To
<cover.1593720075.git.me@ttaylorr.com>

In a subsequent commit, we will add configuration options that are specific to each kind of object filter, in which case it is handy to have a function that translates between 'enum list_objects_filter_choice' and an appropriate configuration-friendly string.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 list-objects-filter-options.c | 23 +++++++++++++++++++++++
 list-objects-filter-options.h |  6 ++++++
 2 files changed, 29 insertions(+)
diff --git a/list-objects-filter-options.c b/list-objects-filter-options.c
index 3553ad7b0a..92b408c0c8 100644
--- a/list-objects-filter-options.c
+++ b/list-objects-filter-options.c
@@ -15,6 +15,29 @@ static int parse_combine_filter(
 	const char *arg,
 	struct strbuf *errbuf);
 
+const char *list_object_filter_config_name(enum list_objects_filter_choice c)
+{
+	switch (c) {
+	case LOFC_DISABLED:
+		/* we have no name for "no filter at all" */
+		break;
+	case LOFC_BLOB_NONE:
+		return "blob:none";
+	case LOFC_BLOB_LIMIT:
+		return "blob:limit";
+	case LOFC_TREE_DEPTH:
+		return "tree";
+	case LOFC_SPARSE_OID:
+		return "sparse:oid";
+	case LOFC_COMBINE:
+		return "combine";
+	case LOFC__COUNT:
+		/* not a real filter type; just the count of all filters */
+		break;
+	}
+	BUG("list_object_filter_choice_name: invalid argument '%d'", c);
+}
+
 /*
  * Parse value of the argument to the "filter" keyword.
  * On the command line this looks like:
diff --git a/list-objects-filter-options.h b/list-objects-filter-options.h
index 73fffa4ad7..01767c3c96 100644
--- a/list-objects-filter-options.h
+++ b/list-objects-filter-options.h
@@ -17,6 +17,12 @@ enum list_objects_filter_choice {
 	LOFC__COUNT /* must be last */
 };
 
+/*
+ * Returns a configuration key suitable for describing the given object filter,
+ * e.g.: "blob:none", "combine", etc.
+ */
+const char *list_object_filter_config_name(enum list_objects_filter_choice c);
+
 struct list_objects_filter_options {
 	/*
 	 * 'filter_spec' is the raw argument value given on the command line
-- 
2.27.0.225.g9fa765a71d
Previous: Taylor BlauNext: Taylor Blau
Message 2 of 25 in “upload-pack: custom allowed object filters”
  1. 0/4 upload-pack: custom allowed object filtersTaylor Blau, Jul 2, 2020
  2. 1/4 list_objects_filter_options: introduce 'list_object_filter_config_name'Taylor Blau, Jul 2, 2020
  3. 2/4 upload-pack.c: allow banning certain object filter(s)Taylor Blau, Jul 2, 2020
  4. Jeff KingJul 8, 2020
  5. Taylor BlauJul 20, 2020
  6. SZEDER GáborJul 15, 2020
  7. Jeff KingJul 15, 2020
  8. Taylor BlauJul 20, 2020
  9. Jeff KingJul 20, 2020
  10. SZEDER GáborJul 22, 2020
  11. Taylor BlauJul 22, 2020
  12. Junio C HamanoJul 23, 2020
  13. Taylor BlauJul 23, 2020
  14. SZEDER GáborJul 22, 2020
  15. Taylor BlauJul 22, 2020
  16. SZEDER GáborJul 23, 2020
  17. Taylor BlauJul 23, 2020
  18. 3/4 upload-pack.c: pass 'struct list_objects_filter_options *'Taylor Blau, Jul 2, 2020
  19. 4/4 upload-pack.c: introduce 'uploadpack.filter.tree.maxDepth'Taylor Blau, Jul 2, 2020
  20. SZEDER GáborJul 15, 2020
  21. Jeff KingJul 8, 2020
  22. Taylor BlauJul 20, 2020
  23. Junio C HamanoJul 21, 2020
  24. Taylor BlauJul 21, 2020
  25. Junio C HamanoJul 21, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.