Die preserve ggg
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest4 patches 4 repliesIn review
- v13 patches 22 repliesSuperseded
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | rebase.c: state preserve-merges has been removedbuiltin/ | +2 | 0 replies | |
| 2/4 | rebase: help users when dying with `preserve-merges`builtin/ | +4 | 0 replies | |
| 3/4 | rebase: note `preserve` merges may be a pull config optionbuiltin/ | +3 | 4 replies | |
| 4/4 | rebase: translate a die(preserve-merges) messagebuiltin/ | +2 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 0/4] Die preserve ggg
This [2] short series is a follow up to GitGitGadget "Update the die() preserve-merges messages to help some users (PR #1155)" [1].
Since v1: Additional patch to translate the user facing die message. Bring the --abort preclusion to the start of the if && condition for clarity. Clarify that the pull.rebase config is complementary to this particular 'die'. Updates to the commit messages.
v0: The first patch is a tidy up of the --preserve option to highlight that it is now Deleted, rather than Deprecated.
In response to Avar's comments that the former error message merely 'tantilised without telling' the user what to do, it became obvious that the underling problem was that the user was unable to git rebase --abort which was also fatal, when a preserve-rebase was in progress.
Thus the main update is to allow the rebase --abort command, even when a --preserve is in progress, to proceed. The --abort code was unchanged by the removal of the preserve option, as the resetting and clean up of internal state is common to the other rebase options.
The user facing fatal message now simply advises to abort, or downgrade to a version that has preserve-merges to complete the rebase.
The final patch highlights that some IDEs still allow the setting of the preserve-merges option as a pull config setup.
Philip Oakly
[1] GitLore ref [email protected]
https://lore.kernel.org/git/[email protected]/
[2]
https://lore.kernel.org/git/[email protected]/t/#u
Philip Oakley (4):
rebase.c: state preserve-merges has been removed
rebase: help users when dying with preserve-merges
rebase: note preserve merges may be a pull config option
rebase: translate a die(preserve-merges) message
builtin/rebase.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
base-commit: c4f0e309ae745751d08727f24e8ff55e56355755
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1242%2FPhilipOakley%2Fdie_preserve_ggg-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1242/PhilipOakley/die_preserve_ggg-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1242
Range-diff vs v1:
1: 0a4c81d8caf ! 1: d60ec67cb06 rebase.c: state preserve-merges has been removed
@@ Commit message
Since feebd2d256 (rebase: hide --preserve-merges option, 2019-10-18) this option is now removed as stated in the subsequent release notes.
- Fix the option tip.
+ Fix and reflow the option tip.
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
parse_opt_interactive),
OPT_SET_INT_F('p', "preserve-merges", &preserve_merges_selected,
- N_("(DEPRECATED) try to recreate merges instead of "
-+ N_("(REMOVED) try to recreate merges instead of "
- "ignoring them"),
+- "ignoring them"),
++ N_("(REMOVED) was: try to recreate merges "
++ "instead of ignoring them"),
1, PARSE_OPT_HIDDEN),
OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
+ OPT_CALLBACK_F(0, "empty", &options, "{drop,keep,ask}",
2: d0fb5410594 ! 2: 47f27187529 rebase: help users when dying with preserve-merges
@@ Metadata
## Commit message ##
rebase: help users when dying with preserve-merges
- Git will die if a "rebase --preserve-merges" is in progress.
- Users cannot --quit, --abort or --continue the rebase.
+ Git would die if a "rebase --preserve-merges" was in progress.
+ Users could neither --quit, --abort, nor --continue the rebase.
Make the rebase --abort option available to allow users to remove traces of any preserve-merges rebase, even if they had upgraded during a rebase.
- One trigger was an unexpectedly difficult to resolve conflict, as
+ One trigger case was an unexpectedly difficult to resolve conflict, as
reported on the git-users group.
(https://groups.google.com/g/git-for-windows/c/3jMWbBlXXHM)
- Tell the user the options to resolve the problem manually.
+ Other potential use-cases include git-experts using the portable
+ 'Git on a stick' to help users with an older git version.
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
strbuf_addf(&buf, "%s/rewritten", merge_dir());
- if (is_directory(buf.buf)) {
- die("rebase -p is no longer supported");
-+ if (is_directory(buf.buf) && !(action == ACTION_ABORT)) {
++ if (!(action == ACTION_ABORT) && is_directory(buf.buf)) {
+ die("rebase --preserve-merges (-p) is no longer supported.\n"
+ "Use git rebase --abort to terminate current rebase.\n"
-+ "Or downgrade to v2.33, or earlier, to complete the rebase.\n");
++ "Or downgrade to v2.33, or earlier, to complete the rebase.");
} else {
strbuf_reset(&buf);
strbuf_addf(&buf, "%s/interactive", merge_dir());
3: ece3eecdc4d ! 3: fe000f06207 rebase: note preserve merges may be a pull config option
@@ Metadata
## Commit message ##
rebase: note preserve merges may be a pull config option
- The --preserve-merges option was removed by v2.35.0. However
- users may not be aware that it is also a Pull option, and it is
- still offered by major IDE vendors such as Visual Studio.
+ The --preserve-merges option was removed by v2.34.0. However
+ users may not be aware that it is also a Pull configuration option,
+ which is still offered by major IDE vendors such as Visual Studio.
Extend the --preserve-merges die message to also direct users to
- the use of the preserve option in the pull config.
+ the possible use of the preserve option in the pull.rebase config.
+ This is an additional 'belt and braces' information statement.
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
if (preserve_merges_selected)
- die(_("--preserve-merges was replaced by --rebase-merges"));
+ die(_("--preserve-merges was replaced by --rebase-merges\n"
-+ "Your pull configuration, may also invoke this option."));
++ "Note: Your pull.rebase configuration may also be set to 'preserve',\n"
++ "which is no longer supported; use 'merges' instead"));
if (action != ACTION_NONE && total_argc != 2) {
usage_with_options(builtin_rebase_usage,
-: ----------- > 4: ae02c6d5a6e rebase: translate a die(preserve-merges) message
Signature · 1 line
gitgitgadget