aboutsummaryrefslogtreecommitdiffstats
path: root/ls-refs.c
diff options
context:
space:
mode:
Diffstat (limited to 'ls-refs.c')
-rw-r--r--ls-refs.c50
1 files changed, 23 insertions, 27 deletions
diff --git a/ls-refs.c b/ls-refs.c
index 697d4beb8d..0e49b932c3 100644
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -1,4 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "environment.h"
+#include "gettext.h"
+#include "hash.h"
+#include "hex.h"
#include "repository.h"
#include "refs.h"
#include "remote.h"
@@ -8,38 +12,32 @@
#include "config.h"
#include "string-list.h"
-static int config_read;
-static int advertise_unborn;
-static int allow_unborn;
-
-static void ensure_config_read(void)
+static enum {
+ UNBORN_IGNORE = 0,
+ UNBORN_ALLOW,
+ UNBORN_ADVERTISE /* implies ALLOW */
+} unborn_config(struct repository *r)
{
const char *str = NULL;
- if (config_read)
- return;
-
- if (repo_config_get_string_tmp(the_repository, "lsrefs.unborn", &str)) {
+ if (repo_config_get_string_tmp(r, "lsrefs.unborn", &str)) {
/*
* If there is no such config, advertise and allow it by
* default.
*/
- advertise_unborn = 1;
- allow_unborn = 1;
+ return UNBORN_ADVERTISE;
} else {
if (!strcmp(str, "advertise")) {
- advertise_unborn = 1;
- allow_unborn = 1;
+ return UNBORN_ADVERTISE;
} else if (!strcmp(str, "allow")) {
- allow_unborn = 1;
+ return UNBORN_ALLOW;
} else if (!strcmp(str, "ignore")) {
- /* do nothing */
+ return UNBORN_IGNORE;
} else {
die(_("invalid value for '%s': '%s'"),
"lsrefs.unborn", str);
}
}
- config_read = 1;
}
/*
@@ -74,7 +72,7 @@ struct ls_refs_data {
unsigned symrefs;
struct strvec prefixes;
struct strbuf buf;
- struct string_list hidden_refs;
+ struct strvec hidden_refs;
unsigned unborn : 1;
};
@@ -139,6 +137,7 @@ static void send_possibly_unborn_head(struct ls_refs_data *data)
}
static int ls_refs_config(const char *var, const char *value,
+ const struct config_context *ctx UNUSED,
void *cb_data)
{
struct ls_refs_data *data = cb_data;
@@ -157,9 +156,8 @@ int ls_refs(struct repository *r, struct packet_reader *request)
memset(&data, 0, sizeof(data));
strvec_init(&data.prefixes);
strbuf_init(&data.buf, 0);
- string_list_init_dup(&data.hidden_refs);
+ strvec_init(&data.hidden_refs);
- ensure_config_read();
git_config(ls_refs_config, &data);
while (packet_reader_read(request) == PACKET_READ_NORMAL) {
@@ -175,7 +173,7 @@ int ls_refs(struct repository *r, struct packet_reader *request)
strvec_push(&data.prefixes, out);
}
else if (!strcmp("unborn", arg))
- data.unborn = allow_unborn;
+ data.unborn = !!unborn_config(r);
else
die(_("unexpected line: '%s'"), arg);
}
@@ -196,21 +194,19 @@ int ls_refs(struct repository *r, struct packet_reader *request)
strvec_push(&data.prefixes, "");
refs_for_each_fullref_in_prefixes(get_main_ref_store(r),
get_git_namespace(), data.prefixes.v,
+ hidden_refs_to_excludes(&data.hidden_refs),
send_ref, &data);
packet_fflush(stdout);
strvec_clear(&data.prefixes);
strbuf_release(&data.buf);
- string_list_clear(&data.hidden_refs, 0);
+ strvec_clear(&data.hidden_refs);
return 0;
}
int ls_refs_advertise(struct repository *r, struct strbuf *value)
{
- if (value) {
- ensure_config_read();
- if (advertise_unborn)
- strbuf_addstr(value, "unborn");
- }
+ if (value && unborn_config(r) == UNBORN_ADVERTISE)
+ strbuf_addstr(value, "unborn");
return 1;
}
-0/+1 2018-06-27drm/sun4i: DW HDMI: Expand algorithm for possible crtcsJernej Skrabec1-1/+45 2018-06-27drm: of: Export and rename drm_crtc_port_mask()Jernej Skrabec2-4/+13 2018-06-27drm/sun4i: Add support for A64 HDMI PHYJernej Skrabec1-0/+12 2018-06-27drm/sun4i: Add support for second clock parent to DW HDMI PHY clk driverJernej Skrabec3-24/+73 2018-06-27drm/sun4i: DW HDMI PHY: Add support for second PLLJernej Skrabec2-5/+17 2018-06-27drm/sun4i: Don't change clock bits in DW HDMI PHY driverJernej Skrabec2-2/+12 2018-06-27drm/sun4i: Enable DW HDMI PHY clockJernej Skrabec1-1/+6 2018-06-27dt-bindings: display: sun4i-drm: Add description of A64 HDMI PHYJernej Skrabec1-1/+3 2018-06-27drm/sun4i: Add support for R40 mixersJernej Skrabec1-0/+24 2018-06-27drm/sun4i: Don't check for panel or bridge on TV TCONsJernej Skrabec1-3/+9 2018-06-27drm/sun4i: Don't check for LVDS and RGB when TCON has only ch1Jernej Skrabec1-15/+17 2018-06-27drm/sun4i: tcon: Generalize engine search algorithmJernej Skrabec1-4/+18 2018-06-27drm/sun4i: Don't skip TCONs if they don't have channel 0Jernej Skrabec1-17/+35 2018-06-27drm/sun4i: Add support for traversing graph with TCON TOPJernej Skrabec1-0/+24 2018-06-27drm/sun4i: Split out code for enumerating endpoints in output portJernej Skrabec1-38/+46 2018-06-27drm/sun4i: Fix releasing node when enumerating enpointsJernej Skrabec1-1/+2 2018-06-27drm/sun4i: Add TCON TOP driverJernej Skrabec3-1/+341 2018-06-27dt-bindings: display: sunxi-drm: Add TCON TOP descriptionJernej Skrabec2-0/+67 2018-06-27drm/tinydrm: new driver for ILI9341 display panelsDavid Lechner4-0/+250