Re: [GSOC PATCH 1/2] environment: remove the global variable 'merge_log_config'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ayush

On 29/07/2025 22:16, Ayush Chandekar wrote:
On Wed, Jul 30, 2025 at 12:37 AM Phillip Wood <phillip.wood123@xxxxxxxxx> wrote:

Hi Ayush

On 29/07/2025 17:19, Ayush Chandekar wrote:

@@ -26,14 +26,7 @@ static struct string_list suppress_dest_patterns = STRING_LIST_INIT_DUP;
   int fmt_merge_msg_config(const char *key, const char *value,
                        const struct config_context *ctx, void *cb)
   {
-     if (!strcmp(key, "merge.log") || !strcmp(key, "merge.summary")) {
-             int is_bool;
-             merge_log_config = git_config_bool_or_int(key, value, ctx->kvi, &is_bool);
-             if (!is_bool && merge_log_config < 0)
-                     return error("%s: negative length %s", key, value);
-             if (is_bool && merge_log_config)
-                     merge_log_config = DEFAULT_MERGE_LOG_LEN;
-     } else if (!strcmp(key, "merge.branchdesc")) {

In the old code if both "merge.log" and "merge.summary" are set in the
config file the last one wins

+void adjust_shortlog_len(struct repository *r, int *shortlog_len)
+{
+     const char *keys[] = { "merge.log", "merge.summary", NULL};
+
+     if (*shortlog_len >= 0)
+             return;
+
+     for (const char **key = keys; *key; ++key) {
+             int is_bool, value;
+             if (!repo_config_get_bool_or_int(r, *key, &is_bool, &value)) {
+                     if (!is_bool && value < 0) {
+                             error("%s: negative length %d", *key, value);
+                             return;
+                     }
+                     *shortlog_len = (is_bool && value) ? DEFAULT_MERGE_LOG_LEN : value;
+                     return;

In the new code "merge.log" is always used in preference to
"merge.summary" even if "merge.summary" appears later in the config
file. When you have two keys setting the same variable I think the only
way to preserve the last one wins behavior is to keep using a callback
that updates the value as the config files are parsed.


Sorry for not mentioning this in the commit message.

I had looked at the documentation which says:

Documentation/git-fmt-merge-msg.adoc
merge.summary::
Synonym to `merge.log`; this is deprecated and will be removed in
the future.

So I thought that I should give precedence to "merge.log" as
"merge.summary" is deprecated.

If it is deprecated we still need to support it until it is removed (maybe we should do that in Git 3.0?). We cannot change the behavior just because a setting is deprecated.

Thanks

Phillip

Thanks

Phillip


Thanks
Ayush






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux