Skip to content

installer: refine git pull behavior text to prevent misconfiguration#682

Merged
dscho merged 2 commits into
git-for-windows:mainfrom
jzbakh:text-refactor-git-pull
Jun 18, 2026
Merged

installer: refine git pull behavior text to prevent misconfiguration#682
dscho merged 2 commits into
git-for-windows:mainfrom
jzbakh:text-refactor-git-pull

Conversation

@jzbakh

@jzbakh jzbakh commented Mar 13, 2026

Copy link
Copy Markdown
Contributor

Description

The previous phrasing of the git pull behavior defaults could lead to unintended configurations of the pull.rebase vs pull.ff parameters in the global .gitconfig. This PR refactors the text to introduce strict mechanical representations of the git state machine. The goal is to reduce ambiguity concerning commit graph resolution and align the UI text with current upstream defaults.

Technical Scope

  • Textual and UI Layout Update: This modification strictly targets the strings passed to the CreatePage and CreateRadioButton functions for the GP_GitPullMerge, GP_GitPullRebase, and GP_GitPullFFOnly options.
  • Added Label: A standard TLabel (LblInfo) was added at the bottom of the page to clarify how Git handles file conflicts.
  • Logic Intact: No underlying Pascal Script conditional logic, registry parsing (ReplayChoice), or silent install vectors were altered. The internal component IDs remain untouched.

Visual Regression Testing

Before After
git_pull_behavior git_pull_behavior_2

Signed-off-by: Jason Zbakh jzbakh@gmail.com

@jzbakh jzbakh closed this by deleting the head repository Apr 10, 2026
@jzbakh

jzbakh commented Apr 13, 2026

Copy link
Copy Markdown
Contributor Author

Reopened: head repository restored after accidental deletion.

@jzbakh jzbakh reopened this Apr 13, 2026
@dscho

dscho commented Jun 5, 2026

Copy link
Copy Markdown
Member

Hmm. I'm not sure that that wording is any clearer. Maybe a better idea would be to add a page on gitforwindows.org and then to add a footer to this installer page that links to that documentation? That way, there is a lot more space to work with.

@jzbakh

jzbakh commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

Makes sense. I'll write a doc page for git-for-windows.github.io and ping you on a draft PR.
For this one:

  • Let me know if I should keep any part, otherwise I'll close it.
  • Or leave it open, and I'll repurpose it later as a minimal PR with just a footer note like "Need help choosing? See [link to docs]." once the docs page lands.

@dscho

dscho commented Jun 5, 2026

Copy link
Copy Markdown
Member
  • Or leave it open, and I'll repurpose it later as a minimal PR with just a footer note like "Need help choosing? See [link to docs]." once the docs page lands.

I like this option a lot!

This commit adds a footernote to the `GitPullBehaviorPage` directing users to the guide on the Git for Windows website regarding the default behavior of `git pull`.

Signed-off-by: Jason Zbakh <jzbakh@gmail.com>
@jzbakh jzbakh force-pushed the text-refactor-git-pull branch from f0da980 to 2318f57 Compare June 10, 2026 20:31
@jzbakh

jzbakh commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

@dscho I'm currently working on the documentation page we discussed, and it got me thinking about the installer screen again.

I completely agree with your previous feedback: my first version with the diagrams and the note on conflicts was too dense and unclear.

However, I feel there are still a few issues with the current installer text:

  1. The option titles might imply that choosing "Rebase" prohibits fast-forwarding.
  2. The descriptions are very repetitive regarding the "fast-forward" concept. Option 1 explains it, and Option 2 (Rebase) tries to explain that it also fast-forwards when possible, but uses slightly confusing wording ("If there are no local commits to rebase, this is equivalent to a fast-forward").

Currently, the top of the screen displays two lines:

  • "Choose the default behavior of git pull"
  • "What should git pull do by default?" (which is quite repetitive).

This is exactly what initially prompted me to propose an improvement.

If we replace that second line with: "A pull always attempts a fast-forward first.", the context would become clearer, avoiding the need to explain fast-forwarding for each option.

We could then align the option titles with the internal variables (Merge, Rebase, FFOnly) and significantly simplify the descriptions:

  • Merge: Create a merge commit to combine branches. This preserves the exact history of parallel work.
  • Rebase: Rewrite your local commits on top of the remote branch, maintaining a single, linear timeline.
  • Fast-forward only: Safely abort if a fast-forward is not possible.

I just wanted to see if you agree with this approach. If so, I can use these exact headings and descriptions while writing the documentation page. What do you think?

@dscho

dscho commented Jun 16, 2026

Copy link
Copy Markdown
Member

@jzbakh sure, that sounds reasonable to me!

Update the labels and descriptions in the "Choose the default behavior
of `git pull`" setup dialog to improve clarity and user comprehension.

Changes include:
- Replaced the subtitle question with a clear statement that pulling
  always attempts a fast-forward first.
- Renamed "Fast-forward or merge" to "Merge", emphasizing that it
  preserves the history of parallel work.
- Simplified the "Rebase" description to clearly highlight the creation
  of a "single linear timeline".
- Renamed "Only ever fast-forward" to "Fast-forward only" and clarified
  that it safely aborts if a fast-forward is not possible.

These wording refinements reduce cognitive load and make the choices
more intuitive, especially for users less familiar with Git's mechanics.

Signed-off-by: Jason Zbakh <jzbakh@gmail.com>
@jzbakh

jzbakh commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

@dscho I've updated the PR and organized the changes into two distinct commits to keep the history clean and logical:

  1. installer: add documentation link to git pull behavior page: Adds the footer label that directs users to the external guide.
  2. installer: improve wording of git pull behavior options: Implements the simplified titles (Merge, Rebase, Fast-forward only), concise descriptions, and updates the top context line ("Pulling always attempts a fast-forward first.").

In parallel, the corresponding documentation page is now drafted and ready for review here: git-for-windows/git-for-windows.github.io#92

Let me know if this implementation aligns with what you had in mind :

Visual regression testing

After Commit 1 (Documentation link added) After Commit 2 (Wording improved - Final state)
1 2

@dscho dscho left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Comment thread installer/install.iss
Comment on lines +2560 to +2563
#ifdef HAVE_EXPERIMENTAL_OPTIONS
if (PageIDBeforeInstall=ExperimentalOptionsPage.ID) and IsHiddenExperimentalOptionsPageEmpty then
PageIDBeforeInstall:=PageIDBeforeInstall-1;
#endif

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a big fan of the principle to separate concerns into separate commits. In this instance, the change to allow for no experimental options is separate from the change to describe the git pull options better.

However, I don't want this split to be a blocker for this PR, so I'll merge it as-is.

@dscho dscho merged commit caa8f0a into git-for-windows:main Jun 18, 2026
44 of 45 checks passed
@dscho

dscho commented Jun 18, 2026

Copy link
Copy Markdown
Member

Sorry for missing -rc1 with this, but it'll be in -rc2!

@jzbakh

jzbakh commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@dscho Thanks for the merge and for getting this into -rc2!

Regarding the #ifdef lines: my mistake. My apologies for the extra noise !

@dscho

dscho commented Jun 18, 2026

Copy link
Copy Markdown
Member

Thanks for the merge and for getting this into -rc2!

Thank you for the contribution!

Regarding the #ifdef lines: my mistake. My apologies for the extra noise !

No worries, I could easily have fixed it if it had been important.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants