JohnstonCode / svn-scm

SVN support for VS Code
MIT License
208 stars 87 forks source link

Diff in gutter appears after files are committed #483

Closed jacobweber closed 7 months ago

jacobweber commented 5 years ago

Issue

The diff in the gutter of an editor sometimes appears, even after all changes have been committed.

Steps to Reproduce

Doesn't always happen, but when it does:

  1. Commit some changes
  2. Open one the changed files. The gutter to the left of the editor still shows colors indicating diffs, and they can be clicked to show the committed changes.

Running svn stat shows nothing, so I'm sure the files have been committed.

SVN Output

When I open the file:

svn info --xml /path/to/file.php

Screenshots

sample

JohnstonCode commented 5 years ago

Suspect some encoding issue. I'm getting it occasionally.

Yanpas commented 5 years ago

Me too with unicode symbols. E.g. insert the following ¯\_(ツ)_/¯ to any utf8 file and you will notice gutter.

VS Code treats such file as CP1252 (see https://github.com/Microsoft/vscode/issues/33720), encoding detection should be fixed. So I guess it's vscode problem, particularly see my comment.

image

My bug is different

JohnstonCode commented 5 years ago

I'm getting it with ×

jacobweber commented 5 years ago

In my original example, there were no non-ASCII characters in the file. So I don't think it's an encoding issue (although I can also see that issue). In my case, the diffs show actual SVN diffs, but for changes that have already been committed. In fact, one file is showing diffs from multiple previous commits.

JohnstonCode commented 5 years ago

:tada: This issue has been resolved in version 1.47.4 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket:

jacobweber commented 5 years ago

This is still happening for me, using svn-scm 1.47.5. It wasn't the encoding issue in my case.

edgardmessias commented 5 years ago

How this extension work for diff gutter:

edgardmessias commented 5 years ago

We need this to better work: Microsoft/vscode#824

jacobweber commented 5 years ago

@edgardmessias But I’m not seeing the diffs on non-ASCII characters; I’m seeing them on lines that were changed and committed. Maybe the diff info is cached somewhere?

edgardmessias commented 5 years ago

Maybe, your file contains "\r\n" and "\n", yum can check with "notepad++" with show symbols

JohnstonCode commented 5 years ago

Yes there is a cache for the diff. Maybe this should be cleared on commits.

jacobweber commented 5 years ago

@edgardmessias I just checked one of the files that has the diffs, and it uses CR everywhere; there's no LF.

edgardmessias commented 5 years ago

You can check the svn cat output?

Em ter, 19 de mar de 2019 8:51 PM, Jacob Weber notifications@github.com escreveu:

@edgardmessias https://github.com/edgardmessias I just checked one of the files that has the diffs, and it uses CR everywhere; there's no LF.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/JohnstonCode/svn-scm/issues/483#issuecomment-474628970, or mute the thread https://github.com/notifications/unsubscribe-auth/ABdcdUvNbdn0SFZkjfi5Phd_FwWF7Kjaks5vYXgOgaJpZM4bGVQy .

JohnstonCode commented 5 years ago

@jacobweber If you make changes to the open file and commit does the gutter stiff show the changes made? Also if you go to a different window and back are they still there?

jacobweber commented 5 years ago

It's sporadic, so I'll answer you the next time it happens.

But in the past, it would show diffs from multiple already-committed versions of the file. And they'd still be there after closing/opening the window.

jacobweber commented 5 years ago

OK, I just saw it on a file, with the gutter showing changes from several already-committed revisions.

I verified that the file only uses UNIX line endings, and has no non-ASCII characters.

I still see the gutter after closing and re-opening the file, or going to a different window and back.

If I make changes to the file, they're added to the existing changes in the gutter.

But I don't see them anymore after closing and re-opening the project containing that file.

brainz80 commented 5 years ago

Not sure, but I'd guess this issue is related to https://github.com/microsoft/vscode/issues/824. Unfortunately there seems to be some reluctance to fix the issue

edgardmessias commented 5 years ago

After some tests, the problem occurs after convert EOL of file from CR to LF But, when open another file and back, working fine (On windows machine)

JohnstonCode commented 5 years ago

:tada: This issue has been resolved in version 1.50.3 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

jacobweber commented 5 years ago

Bad news...I still see it. I installed 1.52.2 yesterday, and have restarted since then.

I just committed a change, and still see the diffs for it. Then I committed another change to the same file, and I see the diffs for both changes.

The file I'm seeing it on has all UNIX line breaks (LF), and I don't think that has changed recently.

edgardmessias commented 5 years ago

@jacobweber, small test, try open another file and back. My opinion is a bug on VSCode.

jacobweber commented 5 years ago

I can close this file and re-open it, and it still shows the diffs.

edgardmessias commented 5 years ago

@jacobweber, the problem of cache are fixed on 1.50.3, and 1.52.2 it is released today

jacobweber commented 5 years ago

Sorry, you're right. But I installed 1.50.3 as soon as it was released, and have restarted since then.

edgardmessias commented 5 years ago

@jacobweber, this line is called on each file is opened: https://github.com/JohnstonCode/svn-scm/blob/f16c9f45f4b0b3f900854e514398e7ecc8c60fa1/src/svnContentProvider.ts#L97

See in you log, each time you open another file and back, a svn cat command is called. Please, open another file and back, after, paste log here

jacobweber commented 5 years ago

OK. I just restarted, so I'll get the logs when it happens again.

jacobweber commented 5 years ago

Saw it again, and closed the file. Any time I reopen it now, I just see an info command in the log:

[myProject]$ svn info --xml /path/to/myProject/src/myFile.js

But if I open a different file, I see an info and a cat:

[myProject]$ svn info --xml /path/to/myProject/src/myOtherFile.js
[myProject]$ svn cat src/myOtherFile.js
jacobweber commented 5 years ago

FYI, after I open the file with the problem, and I make a change to it, I get this in the logs:

[myProject]$ svn stat --xml --no-ignore --ignore-externals
[node_modules]$ svn info --xml
[config.json]$ svn info --xml
[node_modules]$ svn info --xml
[node_modules]$ svn: warning: W155010: The node '/path/to/myProject/node_modules' was not found.
[node_modules]$ svn: E200009: Could not display info for all targets because some targets don't exist[node_modules]$ svn: warning: W155010: The node '/path/to/myProject/src/node_modules' was not found.
[node_modules]$ svn: E200009: Could not display info for all targets because some targets don't exist

config.json and node_modules are non-versioned files, which aren't open. So this may be normal.

edgardmessias commented 5 years ago

The svn info --xml if called by "Tree View", and svn cat by diff gutter.

edgardmessias commented 5 years ago

@jacobweber, try reproduce same problem with GIT

jacobweber commented 5 years ago

I'll try if I get some time, but I don't work regularly with git.

FYI, I'm seeing this with other projects, and the behavior is the same -- when I open the file with problems, it shows a "svn info" but no "svn cat" command.

jacobweber commented 5 years ago

Could we re-open this? I'm seeing it a lot still.

JohnstonCode commented 5 years ago

Is the encoding you see for the file in vscode correct? image

jacobweber commented 5 years ago

@JohnstonCode I'm seeing it now on one file that I just committed. The encoding in the status bar says UTF-8 and LF. I verified that the file has no non-ASCII characters (using file -I), and has only LF for line endings (using dos2unix -i), so it seems correct.

I also see the same behavior as above, where when I open this one file, the SVN shows a "svn info" but no "svn cat" command.

JohnstonCode commented 5 years ago

How are you committing? The extension or cli?

jacobweber commented 5 years ago

The extension.

JohnstonCode commented 4 years ago

@jacobweber can you send me some sample files that this is happening with?

jacobweber commented 4 years ago

Will do, next time it happens. Although I have a feeling it’s about the timing or environment, rather than the file contents.

jacobweber commented 4 years ago

Here's one (inside sample.zip).

Doing "svn diff" or "svn stat" on the file shows no changes. It has only Unix line feeds, and no non-ASCII characters.

JohnstonCode commented 4 years ago

Thanks