microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.2k stars 28.55k forks source link

[Firefox][SCM] "Staged changes" and "Changes" disappear when "Incoming/outgoing" appears #201647

Closed peat-psuwit closed 7 months ago

peat-psuwit commented 8 months ago

Steps to Reproduce:

  1. Open a directory with Git initialized.
  2. Make "Incoming/Outgoing" section in the SCM pane appear. Could be done by either:
    • Make sure the current branch has an upstream branch, then commit something. Or
    • Set scm.showIncomingChanges and scm.showOutgoingChanges to always.
  3. Refresh the page.
  4. Make a change to a file.
    • Expected result: the file appears under "Changes" section in SCM pane.
    • Actual result: the "Changes" section doesn't appear in SCM pane.
  5. Run git add <such file>
    • Expected result: the file appears under "Staged changes" section in SCM pane.
    • Actual result: the "Staged changes" section doesn't appear in SCM pane.

Happens on Firefox 121.0, Ubuntu 22.04. Doesn't seem to happen on Chromium 120 and WebKitGTK 2.42.3.

Expected behavior (Chromium 120) Actual behavior (Firefox 121)
Screenshot from 2024-01-01 02-11-12 Screenshot from 2024-01-01 02-15-01

Happens in GitHub Codespaces:

Version: 1.85.1
Commit: 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0
Embedder: codespaces

Also happens with code-server:

code-server: v4.20.0
Code: 1.85.1
Commit: 0b84523121d6302fbe30eda7899ec3b81810748e
Date: 2023-12-18T20:21:20.879Z
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0

Also happens with OpenVSCode Server insider:

Version: 1.86.0-insider
Commit: 54192b6218e127145f30f2d5194f4d8ec8db68e0
Date: 2023-12-29T23:13:22.924Z
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0
nicoboss commented 8 months ago

I'm experiencing the same or a very similar issue in latest code-server using Firefox. I can no longer open the repository in source control if there are any incoming/outgoing changes and instead am getting an ERR Invalid comparison: compare@https://srp.nico.re:8443/stable-0b84523121d6302fbe30eda7899ec3b81810748e/static/out/vs/workbench/workbench.web.main.js:2573:100714 exception in the browser console without the repository opening. Likely the reason the issue appears slightly differently for me is because I have multiple repositories in source control.

For anyone else affected the following settings are making this issue to not occur:

"scm.showIncomingChanges": "never",
"scm.showOutgoingChanges": "never"
martinog2 commented 8 months ago

Same here but not consistent:

Version: 1.85.1 (user setup) Commit: 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 Date: 2023-12-13T09:49:37.021Z Electron: 25.9.7 ElectronBuildId: 25551756 Chromium: 114.0.5735.289 Node.js: 18.15.0 V8: 11.4.183.29-electron.0 OS: Windows_NT x64 10.0.19045

lszomoru commented 7 months ago

@peat-psuwit, @nicoboss, @martinog2, could you please try VS Code Insiders and see if you are still able to reproduce the problem? I have fixed couple of issues in this area and it would be great if you could try Insiders to make sure that this issue is covered by my fixes as well. Thanks!

peat-psuwit commented 7 months ago

Tested with OpenVSCode-server insiders, which is rebased on top of commit 48905201c0ae ("Sanity Bounds for "window.zoomLevel" (fix #152028) (#202682)") [1]. The issue still exists. code-server doesn't release insider builds, and I don't know how to test insider builds of GitHub codespaces' web UI, so I can't test those.

(Off topic, but does GitHub codespaces provide an insider build for web interface by any chance?)

[1]:

Version: 1.86.0-insider
Commit: 6f047b7a9a3b97fc67e82cc923774a709f48bffe
Date: 2024-01-17T23:13:45.240Z
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0
lszomoru commented 7 months ago

@peat-psuwit, if you open a GitHub Codespace, you can click on the "Gear" icon in the activity bar, and there is a menu item to switch to VS Code Insiders. You can try that out and let me know if you are still able to reproduce the issue. Thank you!

peat-psuwit commented 7 months ago

Thank you. Tested with the GitHub Codespaces + VSCode insiders [1], the issue can still be reproduced.

Interestingly, if I change the scm.show{Incoming,Outgoing}Changes to never and then to always again, the "Source control" pane essentially freeze: the "Incoming/Outgoing" section doesn't comeback, and further changes to the working directory is not shown anymore (like, if you add another file, it doesn't show up, even after I click "Refresh" button).

[1]

Version: 1.86.0-insider
Commit: 800e60abdfb1675a59520bac6a9473bc380d49ea
Date: 2024-01-23T06:18:07.155Z
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0
lszomoru commented 7 months ago

@peat-psuwit, thanks for trying this out. Could you please confirm that this indeed can only be reproduce in Firefox and everything works as expected in a Chromium based browser (ex: Chrome, Edge, etc)?

Could you please the developer tools console and see if there are any relevant errors there? Could you also invoke the "Git: Show Git Output" command and send me the contents of it?

peat-psuwit commented 7 months ago

@peat-psuwit, thanks for trying this out. Could you please confirm that this indeed can only be reproduce in Firefox and everything works as expected in a Chromium based browser (ex: Chrome, Edge, etc)?

Yes. This only happens in Firefox. It doesn't happen in Chromium [1], and Gnome Web (WebKit-based) [2].

[1]
Version: 1.86.0-insider
Commit: 800e60abdfb1675a59520bac6a9473bc380d49ea
Date: 2024-01-23T06:18:07.155Z
Browser: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
[2]
Version: 1.86.0-insider
Commit: 800e60abdfb1675a59520bac6a9473bc380d49ea
Date: 2024-01-23T06:18:07.155Z
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15

Could you please the developer tools console and see if there are any relevant errors there?

There seems to be. As soon as I change scm.showIncomingChanges to always, this error pops up in the brower's console. And it seems to pop up every time I press "Refresh" in the source control pane too.

Uncaught (in promise) Error: Invalid comparison
    compare scmViewPane.ts:1184
    K asyncDataTree.ts:1082
    K asyncDataTree.ts:1390
    z asyncDataTree.ts:911
    w async.ts:27
    F asyncDataTree.ts:911
    E asyncDataTree.ts:865
    D asyncDataTree.ts:848
    C asyncDataTree.ts:834
    B asyncDataTree.ts:804
    z asyncDataTree.ts:556
    updateChildren asyncDataTree.ts:542
    Cc scmViewPane.ts:3145
    a async.ts:239
    promise callback*queue async.ts:239
    Cc scmViewPane.ts:3136
    queue async.ts:216
    Cc scmViewPane.ts:3135
    W scmViewPane.ts:2723
    y event.ts:1127
    fire event.ts:1158
    z event.ts:152
    y event.ts:1127
    z event.ts:1138
    fire event.ts:1162
    Lb configurationService.ts:1114
    wb configurationService.ts:813
    reloadLocalUserConfiguration configurationService.ts:654
    Hb configurationService.ts:1040
    updateValue configurationService.ts:361
    updateValue configurationService.ts:361
    Pc settingsEditor2.ts:1106
    Mc settingsEditor2.ts:1015
    b async.ts:349
    promise callback*trigger async.ts:343
    Mc settingsEditor2.ts:1015
    Lc settingsEditor2.ts:912
    ge event.ts:169
    y event.ts:1127

Could you also invoke the "Git: Show Git Output" command and send me the contents of it?

Here it is. Although, I'm not sure how useful it is.

2024-01-23 10:40:31.442 [info] Log level: Info
2024-01-23 10:40:31.442 [info] Validating found git in: "git"
2024-01-23 10:40:31.442 [info] Using git "2.43.0" from "git"
2024-01-23 10:40:31.442 [info] > git rev-parse --show-toplevel [126ms]
2024-01-23 10:40:31.442 [info] > git rev-parse --git-dir --git-common-dir [9ms]
2024-01-23 10:40:31.442 [info] Open repository: /workspaces/core-base
2024-01-23 10:40:31.442 [info] > git config --get commit.template [78ms]
2024-01-23 10:40:31.442 [info] > git rev-parse --show-toplevel [65ms]
2024-01-23 10:40:31.481 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) refs/heads/main refs/remotes/main [22ms]
2024-01-23 10:40:31.483 [info] > git rev-parse --show-toplevel [5ms]
2024-01-23 10:40:31.501 [warning] ENOENT: no such file or directory, open '/workspaces/core-base/.git/refs/remotes/origin/main'
2024-01-23 10:40:31.523 [info] > git rev-parse --show-toplevel [5ms]
2024-01-23 10:40:31.523 [info] > git rev-parse refs/remotes/origin/main [23ms]
2024-01-23 10:40:31.630 [info] > git status -z -uall [89ms]
2024-01-23 10:40:31.631 [info] > git rev-parse --show-toplevel [70ms]
2024-01-23 10:40:31.674 [info] > git rev-parse --show-toplevel [18ms]
2024-01-23 10:40:31.675 [info] > git config --get commit.template [4ms]
2024-01-23 10:40:31.716 [info] > git rev-parse --show-toplevel [26ms]
2024-01-23 10:40:31.718 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) refs/heads/main refs/remotes/main [12ms]
2024-01-23 10:40:31.736 [warning] ENOENT: no such file or directory, open '/workspaces/core-base/.git/refs/remotes/origin/main'
2024-01-23 10:40:31.755 [info] > git rev-parse refs/remotes/origin/main [20ms]
2024-01-23 10:40:31.784 [info] > git merge-base refs/heads/main refs/remotes/origin/main [30ms]
2024-01-23 10:40:31.855 [info] > git status -z -uall [84ms]
2024-01-23 10:40:31.863 [info] > git rev-list --count --left-right refs/heads/main...refs/remotes/origin/main [17ms]
2024-01-23 10:40:33.111 [info] > git config --local branch.main.github-pr-owner-number [138ms]
2024-01-23 10:40:33.111 [warning] git config failed: Failed to execute git
2024-01-23 10:40:49.678 [info] > git config --get commit.template [2ms]
2024-01-23 10:40:49.709 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) refs/heads/main refs/remotes/main [5ms]
2024-01-23 10:40:49.732 [warning] ENOENT: no such file or directory, open '/workspaces/core-base/.git/refs/remotes/origin/main'
2024-01-23 10:40:49.733 [info] > git rev-parse refs/remotes/origin/main [1ms]
2024-01-23 10:40:49.768 [info] > git status -z -uall [9ms]
2024-01-23 10:40:49.854 [info] > git merge-base refs/heads/main refs/remotes/origin/main [2ms]
2024-01-23 10:40:49.873 [info] > git rev-list --count --left-right refs/heads/main...refs/remotes/origin/main [2ms]
2024-01-23 10:41:41.011 [info] > git config --get commit.template [15ms]
2024-01-23 10:41:41.012 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) refs/heads/main refs/remotes/main [3ms]
2024-01-23 10:41:41.026 [warning] ENOENT: no such file or directory, open '/workspaces/core-base/.git/refs/remotes/origin/main'
2024-01-23 10:41:41.029 [info] > git rev-parse refs/remotes/origin/main [2ms]
2024-01-23 10:41:41.049 [info] > git status -z -uall [7ms]
2024-01-23 10:41:41.112 [info] > git merge-base refs/heads/main refs/remotes/origin/main [2ms]
2024-01-23 10:41:41.131 [info] > git rev-list --count --left-right refs/heads/main...refs/remotes/origin/main [3ms]