Remote containers on Windows - how? - visual-studio-code

I have been playing around with the Remote containers feature of VS Code. If I have a .devcontainer directory inside my repo, VS code suggests to open the repo using a bind mount.
However, bind mounting to Windows seems to have two major drawbacks:
File permissions are all wrong. I am not sure what happens if I git commit such a file, maybe I will inadvertedly make non-executable files executable? I think this is a limitation in Docker for windows, but a problem nonetheless.
CRLF conversion is by default introducing whitespace diffs in all files (This is solved by .gitattributes though).
I saw that there is an option to clone the repo directly from Github to a named volume, but that does not respect the mount point set in the devcontainer.json file.
So I think my questions is really about: is remote containers at all usable on Windows for practical purposes and if so, how do I best set it up?

While it does work good for me in Windows 10 (2004 update), I recommend using devcontainer using WSL2 as it works "smoother".
The file permissions issue might be fixable using the remoteUser property in the devcontainer.json file. Just remove the comment and use the remoteUser value that is supplied by the template.

Related

Search in files broken on SSH remote target

I have several RaspberryPIs as remotes in VSCode via SSH.
In some of them at some point the "search in files" feature has stoped working.
It is only searching inside the opened files.
[EDIT]
After further investigation I found out that on all the Raspberrys where the error occurs I can not install ripgrep. (E: Unable to locate package ripgrep)
As VSCode is using ripgrep for searching this may be the cause but what is the solution then?
[EDIT2]
I built and installed ripgrep manuall. No success.
But maybe it is related to the debian version being 9.X
As several people have reported the same problem but the cirumstances are always different I tried the following solutions:
Make sure the "book" icon is not checked (some users had that problem)
Make sure it is not related to path lenght. Just one folder in ~ with file a.py and b.py (some user had that problem)
Made sure there is nothing in the .gitignore file (some user had that problem)
Made a new folder not inside a samba shared folder (some user had that problem)
Deactivated all exensions on the remote
Deactivated all non SSH related extensions on the PC
Compared the setting on the broken remote to a working one. They are completely the same.
deleted the .vscode-server folder on the remote to force VSCode to install it again

VS Code move Cache location in Windows

I am trying to use models from Hugging Face, but VS code always downloads them into my very limited C: drive; C:\Users\<user>\.cache.
How can I force it to cache to a different drive?
Things I've tried:
Googling: only seen threads for Linux, whose commands do not transfer over. Could not find clear equivalent commands for Windows.
Running a new instance from terminal code --user-data-dir E:/.cache
Fully un-installing VS Code, downloading a portable version, and making a data folder (following these instructions)
All of them still result in caching to C:\Users\<user>\.cache.
From some further research, it appears this is currently not possible.
However, I've found that symlinks is a great temporary workaround. In short,
Create a folder on a drive/partition with an abundance of space, i.e. E:\TempCache
Close any instances of VS Code, if any.
Navigate to C:\Users\<username>\.cache. If there's anything in it, cut them over to E:\TempCache, and delete the whole .cache folder.
Open cmd with admin rights, and enter mklink /J "C:\Users\<name>\.cache" "E:\TempCache". This will re-create an empty .cache folder.
Next time VS Code is ran, it will automatically detect and use the .cache folder on the C drive like nothing changed.

How can you sync/share files from one computer to another in VS Code?

I am using 2 computers to code in VS Code, but I want to sync a specific file when I edit it in both computers. Do you have any extensions, or servers that allows it to sync?
I tried looking in Google, some said try FTP, and some said use "Settings Sync". (I installed Settings Sync, but I don't really know if it can sync my files.)
Option 1
Use vscode remote development.
Select main machine which would host all the files and use SSH to access the files from the other machine.
Option 2
Rsync is a standard linux tool which can be used.
Use can use vscode rsync extension for syncing the files from one machine into the other.
I think that the closest experience to what you have in mind that you can get currently on VSCode is Visual Studio Live Share. This is an official extensions suite that lets you share your screen with multiple hosts, it also shares most of your current VSCode editor features (like intellisense) and can be enabled with voice and text chats. I would also suggest to set up a git repository for the files you are going to work with, so that hard copies of all your files will be avaialble to all your users.

options "--read-only" Ipython Notebook

I can't run my ipython notebook with the --read-only option.
It says :
[NotebookApp] CRITICAL | Unrecognized flag: '--read-only'
It's weird because I've seen several blog mentionning it.
I'm running with the 1.1 version of ipython.
Do you know if this option was removed or moved elsewhere?
There is a super easy way to do what you're trying to do I think though--simply use OS security.
Do this:
When you're ready to deploy to read only, make a special folder
for your read-only work, and copy your *.ipynb files into that.
Make the *.ipynb files read-only at the Linux level: chmod 444
*.ipynb.
Run iPython Notebook from that directory. Use a different port
so that it won't conflict.
Send the URL to everyone using the URL that has the read-only
port.
They can then read it all, even run code, but they will not be
able to save changes.
They cannot navigate anywhere outside that directory. E.g. the
little home icon only brings them to the folder with your read-only
content.
Thus they have full access to the page and its functionality, but
cannot mess it up on anyone else. And all you need is a cp and a
chmod. Profit!
At least this solved my need. I have my regular port with write authority for all my development, then I copy it over, chmod it, and let people at it. Works just fine for me.
Hope this helps others!
Yes the option was removed, it might be re-introduced in another form later when nbconvert/nbviewer is refined, but you better run your own local instance of nbviewer to this effect.

How do I configure Eclipse's Subversion config file to use my private-key?

I'm using Eclipse and the Subversive for SVN control, in Windows. I've also installed TortoiseSVN. The SVN repository I'm using is utilizing a svn+ssh scheme, and there is no way to change that.
Now, there's a file in %APPDATA%\Subversion\config that I need to edit to perform SVN interaction in Eclipse without typing in the password every time. The line in this config file reads now (default):
ssh = $SVN_SSH ssh -o ControlMaster=no
I've read a bit on the web that the $SVN_SSH is an environmental variable in Windows, and in this case it points to TortoiseSVN\bin\TortoisePlink.exe, which is correct.
What is the additional parameteres to append this config to make it take my private key? I've updated the "authorized_keys" file on the server (in my .ssh folder) with my public keyphrase, and I've tested and confirmed that logging in to the SVN server outside Eclipse works like it should with my private/public key pair.
The problem here is to make it all work inside Eclipse, and it's quite frankly a small nightmare :/ If anyone has experienced the same, or knows any remedy, I'd appreciate any help.
If you set the 'SVN_SSH' environment variable the rest of the line is ignored, so you should either replace '$SVN_SSH ssh' with the path to the program, or move the required arguments to the end of the SVN_SSH environment variable.