git-ecosystem / git-credential-manager

Secure, cross-platform Git credential storage with authentication to GitHub, Azure Repos, and other popular Git hosting services.
Other
6.74k stars 1.75k forks source link

Cannot render authentication prompt UI on Windows-arm64 #1539

Open kyle-rader-msft opened 7 months ago

kyle-rader-msft commented 7 months ago

Version

2.4.1

Operating system

Windows

OS version or distribution

Windows 11 Pro Arm 64

Git hosting provider(s)

Azure DevOps

Other hosting provider

No response

(Azure DevOps only) What format is your remote URL?

None

Can you access the remote repository directly in the browser?

Yes, I can access the repository

Expected behavior

There are 2 expected behaviors that are not happening.

  1. There should be no auth prompt in the first place. I have the following GCM config set:
    [credential]
    interactive = auto
    azreposCredentialType = oauth
    msauthUseBroker = true
    msauthUseDefaultAccount = true

    as well as

    [credential "azrepos:org/<ORG>"]
    username = me@contoso.com
    azureAuthority = <AUTHORITY_URL>

On this same machine, in this same state https://aka.ms/azureauth doesn't need to prompt and uses the current OS account without issue.

  1. GCM is launching an auth prompt, and that prompt should render an allow me to continue with the auth flow.

Actual behavior

  1. Silent auth via broker isn't happening.
  2. The prompt renders an empty window frame. The program icon is shown on the task bar, and the window frame outline is there, but the body is transparent and empty.

Logs

No response

mjcheetham commented 7 months ago

This is a known issue with some ARM graphics drivers and Avalonia UI. We added a workaround to use software rendering in newer versions of GCM.

https://github.com/git-ecosystem/git-credential-manager/blob/e51e1a4c4e03b3ef0690d83b1f994e525749f091/src/shared/Core/Settings.cs#L567-L581

If for some reason it isn't detecting ARM correctly, you can manually enable SW rendering to see if that helps.

https://github.com/git-ecosystem/git-credential-manager/blob/main/docs/environment.md#gcm_gui_software_rendering https://github.com/git-ecosystem/git-credential-manager/blob/main/docs/configuration.md#credentialguisoftwarerendering

kyle-rader-msft commented 6 months ago

Thanks @mjcheetham , I'll see if I can try that at some point. for the time being, I set GITASKPASS globally to a my azureauth git ask pass wrapper and haven't gotten a prompt since ;)

Hunv commented 6 months ago

A hint for Visual Studio 2022 users: run this to enable software rendering for git: C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw64\bin\git.exe config --global credential.guiSoftwareRendering true

And a hint for SourceTree users without Visual Studio: run C:\users\<username>\appdata\local\Atlassian\SourceTree\git_local\bin\git.exe config --global credential.guiSoftwareRendering true to enable the workaround. It seems like you have to run just one of the commands if you use both.

It is confirmed, that it is a bug in the driver by a Microsoft guy at https://github.com/AvaloniaUI/Avalonia/issues/10405. Maybe it will be fixed soon. The statement at time of writing is "fixed in the near future" (Status: Mid Dec. 2023).