Re: [PATCH v3 0/2] merge-tree: add new --dry-run option
On Wed, May 14, 2025, at 02:24, Elijah Newren via GitGitGadget wrote:
Show 28 quoted lines
> Changes since v2:
>
> * Converted locations missed in v1 in changing --mergeability-only ->
> --dry-run
>
> Changes since v1:
>
> * Renamed --mergeability-only flag to --dry-run, as per suggestion from
> Junio
> * added some commit message clarifications
>
> This adds a new flag, --dry-run, to git merge-tree, which suppresses all
> output and leaves only the exit status (reflecting successful merge or
> conflict). This is useful for Git Forges in cases where they are only
> interested in whether two branches can be merged, without needing the actual
> merge result or conflict details.
>
> The advantage of the flag is two fold:
>
> * The merge machinery can exit once it detects a conflict, instead of
> continuing to compute merge result information
> * The merge machinery can avoid writing merged blobs and trees to the
> object store when in the outer layer of the merging process (more details
> in the first commit message).
>
> Elijah Newren (2):
> merge-ort: add a new mergeability_only option
> merge-tree: add a new --dry-run flag
All I can say is that this looks good considering the comments on v2.
Interdiff:
```
diff --git a/Documentation/git-merge-tree.adoc b/Documentation/git-merge-tree.adoc
index 7dcc1780619..74716b91019 100644
--- a/Documentation/git-merge-tree.adoc
+++ b/Documentation/git-merge-tree.adoc
@@ -65,11 +65,11 @@ OPTIONS
default is to include these messages if there are merge
conflicts, and to omit them otherwise.
---mergeability-only::
+--dry-run::
Disable all output from the program. Useful when you are only
interested in the exit status. Allows merge-tree to exit
- early on the first conflict it finds, and allows it to avoid
- writing most objects created by merges.
+ early when it finds a conflict, and allows it to avoid writing
+ most objects created by merges.
--allow-unrelated-histories::
merge-tree will by default error out if the two branches specified
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index 579e81d5184..273ec171e98 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -596,13 +596,13 @@ int cmd_merge_tree(int argc,
if (dry_run && o.show_messages == -1)
o.show_messages = 0;
o.merge_options.mergeability_only = dry_run;
- die_for_incompatible_opt2(dry_run, "--mergeability-only",
+ die_for_incompatible_opt2(dry_run, "--dry-run",
o.show_messages, "--messages");
- die_for_incompatible_opt2(dry_run, "--mergeability-only",
+ die_for_incompatible_opt2(dry_run, "--dry-run",
o.name_only, "--name-only");
- die_for_incompatible_opt2(dry_run, "--mergeability-only",
+ die_for_incompatible_opt2(dry_run, "--dry-run",
o.use_stdin, "--stdin");
- die_for_incompatible_opt2(dry_run, "--mergeability-only",
+ die_for_incompatible_opt2(dry_run, "--dry-run",
!line_termination, "-z");
if (xopts.nr && o.mode == MODE_TRIVIAL)
```