summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorSiddharth Asthana <siddharthasthana31@gmail.com>2025-11-06 00:46:01 +0530
committerJunio C Hamano <gitster@pobox.com>2025-11-05 13:34:55 -0800
commit336ac90c06ec757f613faae4ffc6c32578a99cd1 (patch)
treefe065373061025c775ba1535a215f9961f473a2f /builtin
parent15cd4ef1f495e51f7db39583b7f562e7170da3d2 (diff)
replay: add replay.refAction config option
Add a configuration variable to control the default behavior of git replay for updating references. This allows users who prefer the traditional pipeline output to set it once in their config instead of passing --ref-action=print with every command. The config variable uses string values that mirror the behavior modes: * replay.refAction = update (default): atomic ref updates * replay.refAction = print: output commands for pipeline Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Elijah Newren <newren@gmail.com> Helped-by: Christian Couder <christian.couder@gmail.com> Helped-by: Phillip Wood <phillip.wood123@gmail.com> Signed-off-by: Siddharth Asthana <siddharthasthana31@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/replay.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/builtin/replay.c b/builtin/replay.c
index 94e60b5b10..6606a2c94b 100644
--- a/builtin/replay.c
+++ b/builtin/replay.c
@@ -8,6 +8,7 @@
#include "git-compat-util.h"
#include "builtin.h"
+#include "config.h"
#include "environment.h"
#include "hex.h"
#include "lockfile.h"
@@ -298,6 +299,22 @@ static enum ref_action_mode parse_ref_action_mode(const char *ref_action, const
die(_("invalid %s value: '%s'"), source, ref_action);
}
+static enum ref_action_mode get_ref_action_mode(struct repository *repo, const char *ref_action)
+{
+ const char *config_value = NULL;
+
+ /* Command line option takes precedence */
+ if (ref_action)
+ return parse_ref_action_mode(ref_action, "--ref-action");
+
+ /* Check config value */
+ if (!repo_config_get_string_tmp(repo, "replay.refAction", &config_value))
+ return parse_ref_action_mode(config_value, "replay.refAction");
+
+ /* Default to update mode */
+ return REF_ACTION_UPDATE;
+}
+
static int handle_ref_update(enum ref_action_mode mode,
struct ref_transaction *transaction,
const char *refname,
@@ -332,7 +349,7 @@ int cmd_replay(int argc,
const char *onto_name = NULL;
int contained = 0;
const char *ref_action = NULL;
- enum ref_action_mode ref_mode = REF_ACTION_UPDATE;
+ enum ref_action_mode ref_mode;
struct rev_info revs;
struct commit *last_commit = NULL;
@@ -378,9 +395,8 @@ int cmd_replay(int argc,
die_for_incompatible_opt2(!!advance_name_opt, "--advance",
contained, "--contained");
- /* Parse ref action mode */
- if (ref_action)
- ref_mode = parse_ref_action_mode(ref_action, "--ref-action");
+ /* Parse ref action mode from command line or config */
+ ref_mode = get_ref_action_mode(repo, ref_action);
advance_name = xstrdup_or_null(advance_name_opt);