Vscode: Provide support to synchronize settings across machines

Created on 5 Feb 2016  ·  129Comments  ·  Source: microsoft/vscode

There are quiet some extensions out there to handle setting synchronization between multiple computers. And in my opinion they are very important: Since vscode is very customizable with settings, keyboardshortcuts and extension it is very hard to synchronize those things between multiple workstations. And all those extensions are not really clean solutions, because vscode does nearly nothing to support them (for example the paths vscode uses are not exposed, see #2741).

So here some ideas to make synchronization clean and extensible:

  • add a contribution point for synchronization extensions

    • Those extensions should not have to gather all the files that have to be synced. vscode should do this and then pass them to the extensions

    • Such an extension's job is only to upload/download the files, passed to them (so we can have the gist upload/svn upload/git repo upload/dropbox/filesystem/onedrive/ftp/other services.

    • Or maybe gather all settings into one big json object and pass that.

    • Support versioning and non versioning extensions

  • add a remote_settings.json to build on top of the workspace-settings/user-settings stack.
  • allow automatic and user triggered synchronization

Ok... just some ideas :smile:

config plan-item settings-sync

Most helpful comment

Settings Sync Design Proposal:

We are planning to built settings sync inside VS Code as follows:

  • VS Code would provide the UI and feature to sync settings, keybindings, extensions & snippets.
  • VS Code talks to a service end point to read and write the data

VS Code Settings Sync Service End Point

  • Provides ReST API to read and write data (backend)
  • Provides authentication mechanism for users to log in.

All 129 comments

Related: https://github.com/Microsoft/vscode/issues/679

This is my solution for syncing keybindings and settings on Linux and Windows if you're interested. I haven't looked too deeply at doing it with extensions yet but I did file https://github.com/Microsoft/vscode/issues/691 some time ago to help with this.

The plugin Sync Settings for Atom uses GitHub Gist to backup/sync:

  • Settings
  • Packages
  • Keymap
  • _(Styles)_
  • _(Init)_
  • Snippets

Atom also supports starring packages directly in Github and then easily install them using apm stars --user thedaniel --install.

Imo this is a pretty low priority because most of the time settings are overwritten by workspace settings that are synced with version control anyway.

@felixfbecker Extensions are however one of those things that doesn't version control. Neither is keymap.

@csholmq That is a seperate issue though. For example, there could be a .vscode/extensions.json that specifies which extensions should be installed for this project, like editorconfig or a specific debug adapter, with a semver version constraint like a package.json.

This is not related to the original API request raised in this issue, but there is a sync extension that is using Gists. https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync

@egamma Exactly the functionality I sought after. But as @felixfbecker mentioned, perhaps this issue is a separate one.

It might also be nice to install an extension once on one machine, and have your other machines either prompt or automatically install the same extension everywhere else.

Atom had an online package browser with "stars", and there was a command you could run to install everything you'd starred. Still not automatic, but it was a start.

I know others might object, but I personally have no problem having to log in to VSCode with my Microsoft account once per machine, if it facilitated this level of convenience. Maybe a synchronisation framework or something could be offered, so that provider-specific extensions could implement authentication and cloud-persistence (e.g. one for Microsoft, one for Google Drive, Dropbox, etc).

I wrote an extension a while ago (here, also hasn't been updated in a while) that tried to help sync extensions between computers using file synchronization services. Originally I only supported syncing themes because syncing extensions seemed somewhat messy.

I think this should be the right way to maintain extensions between computers. Keep a list of what extensions are installed where, be able to pick and choose what extensions should be installed on which computer and then only manage syncing settings for those extensions. I assume the recommended way for extensions to manage settings is through this?

Very much agree with you, Add features--Account & Synchronization, handling setting synchronization and extensions synchronization(Mark extensions owned), what will make it much easier to install and to synchronize VS code between multiple computers.
Another extensions that syncs extensions: https://marketplace.visualstudio.com/items?itemName=golf1052.code-sync

Addition to this idea should be considered. Separating global extensions & settingsfrom a project's specific ones. Same as npm global packages from projects' dependencies.

@felixfbecker , it is a good solution, but why the Shift + Alt + U is not unresponsive? My computer system is Mac and vscode version is 1.18.0. Thank you very much.

@chenxiaochun conflict with other hot key in your computer, maybe system hot key, but mostly like conflict with hot key of the application you installed in your own Mac. Ctrl + Shift + P( show all command, mine is windows, you can check it in Mac), exctute sync by selecting command in the list. another method, you can modify the hot key in vscode or find the application and modify the hot key.

I want the extensions which I have installed. I have around 30 extensions how can I export them to multiple pcs?

as there's no official implementation of such feature in vscode - I use an extension called 'settings sync' which syncs settings and extensions

still no support for this? :/
I would love to have auto-sync VS Code settings/extension with my Microsoft Account

I think it should be given more priority. Many user have multiple machines or dual-boot or vscode setup on work machine and home machine.

True, it should be a mandatory feature in such apps nowadays

Another vote for this.

upvote

I don't want to see another 'upvote' comment. Upvote original issue post on top instead. Please do not clutter discussion with upvote comments.

I hoped that something like this was available right now, as I was backing my un-synced stuff up, preparing for a format. Even if there is no sync, there should at least be something for export whole profile thing, that I can import later after format, or to another computer. My current solution is:

  • code --list-extensions to get a list of extensions, paste it onto a .txt on a synced folder.
  • Copy and paste the user settings JSON to a .txt file on a synced folder.
  • Copy and paste the key bindings JSON to a .txt file on a synced folder.

Not terribly bad, but sloppy still. I am not 100% sure that I have backed up everything regarding VScode, for one thing.

Edit: Noticed I missed one, luckily before I began formatting. Added the third item to the list.

Why not just simlink the two dirs containing settings extensions etc with dropbox? I have done this with atom for years with no problems. Is there a reason this would fail with vscode?

@backspaces extensions can have native modules within them, so sharing extensions between Linux and Windows (for example) might not work
Better to share just the list of extension IDs (rather than the extensions themselves), so that Code (or something else) can install them

Plus it would be a much much better experience if you simply login in VSCode and just check a few checkboxes when it prompts you: "Please check what would you like to import/sync:"

[x] extensions
[x] themes
[x] settings

Agreed! :)

Please make this happens. Today we have settings sync extension but it is just really hard to setup with gist and so on. Something integrated in VScode out of the box would be so much better and we could benefit from this without worrying about installing the correct extension

@antoninadert well said

Please use the thumbs-up button if you agree with a comment/issue. Most of us subscribe to issues so we can be notified of progress and announcements, and receiving emails with bump comments is irritating at best.

It would be nice to know whether Microsoft has this on their roadmap. I imagine it's tricky because it'll mean including some proprietary code and the open-source community will crap themselves when a part of the code goes dark. But maybe this isn't the case and MS could include it using open code. Either way, an update, on this much requested feature, would be nice.

The solutions that are currently out there (e.g. Settings Sync, CodeSync) don't work well when uninstalling extensions due to this issue: https://github.com/Microsoft/vscode/issues/14444
I suppose if that is fixed, the community solutions will be less buggy but still convoluted.

Does anyone know if MS have a roadmap for Code anywhere?

No matter, I found it: https://github.com/Microsoft/vscode/wiki/Roadmap

And it doesn't look like anything to do with syncing settings is mentioned. Fingers crossed for next year. However we all remember the brown logo; maybe, with enough upvotes, they'd take a look at this issue sooner.

I mentioned the dropbox solution earlier and agree there are reasons against it.

BUT: assuming the two computers I'm synching are both macs of the same OS version, is there any reason not to use the dropbox approach?

And I noticed the code cli even has a way to change the extension folder, so it could be directly in dropbox without symlinks.

As an author of "Settings Sync" i agree with the actual post of this thread.

Rather then providing the end to end sync solution by Microsoft itself.
It would be great to provide ways to allow extensions to get the required information.

For example:

  1. Allow extension authors to read any files inside User directory. They will manage themselves to make wrapper either with GitHub, Google Drive, OneDrive, GitLab etc.
  2. Create more customized API to allow events on certain points, like currently Settings Sync lacks auto upload on any extension download. I have opened issue and have over 800+ Votes https://github.com/Microsoft/vscode/issues/14444 but its still pending.
  3. Allow extension authors to enable / disable extensions - https://github.com/Microsoft/vscode/issues/15466 and https://github.com/Microsoft/vscode/issues/37620

P.S I'm always looking to improve Settings Sync - Feel free to discuss and send me a PR or improve the Public Wiki

52739 is my request. While marked as a duplicate (I'm ok with that), I think it important to note that the primary difference between this request and mine is that this one argues for better Extension support (better) while I argue for built-in support (best) as is done in Visual Studio since 2013.

I totally agree with @Chiramisu : We don't want better extension support. We want built-in sync.

A syncing extension defeats the purpose of sync by adding a lot of overhead. This is the current workaround we have.

How amazing would it be to log in to visual studio and instantly download your profile, projects, extensions, settings? on any machine (personal, work).

Well it is what google does with Chrome : they auto sync extensions, credentials, favorites... when you log in.
This is a killer feature if you ask me.

@antoninadert I'd prefer VSCode exposing APIs for extensions to do the syncing, and sure one of them could be from Microsoft itself using OneDrive or GitHub. I just don't see a reason there should be built-in sync favoring one cloud provider.

@gandalfsaxe For the obvious reason that you could have it on a fresh install of Visual studio, on every machine, and without any configuration.

If these advantages do not speak to you I'm clueless...

@antoninadert I certainly wouldn't protest if they did this, and I'd see it as better than nothing, but I'd still prefer the API/extension way for two closely related reasons:

  1. If they do it built-in, we might not get an API extension for it as well, so could be stuck with the built-in solution for some time without alternatives. Could in principle be a security issue for various companies if the only option was OneDrive or GitHub.
  2. Not favoring one cloud storage/solution over another. Wouldn't mind a well-supported Microsoft-developed extension though.

But if they provide both build-in functionality and API for other extensions to do sync at the same time, that'd be great as well.

I'm still thinking that a sync api is the way to go. And yeah, as @gandalfsaxe suggested, a well-supported Microsoft-developed sync extension would be nice, too. I also wouldn't mind that extension being preinstalled either. That would be the perfect compromise between convenience and extensibility.

I'd find it weird to start having pre-installed extensions though. I think that VSCode should still come with zero extensions out of the box. If it's important / universal enough, it should be built-in. Otherwise it should be on the marketplace like everything else. Would be weird to have one sync extension as the singular exception 🙂

But if they provide both build-in functionality and API for other extensions to do sync at the same time, that'd be great as well.

I also think this would be the perfect solution, so if someone has a better solution than the native one, they could use it.

But having it built-in is still the most important option if you ask me

@gandalfsaxe

  1. If they do it built-in, we might not get an API extension for it as well, so could be stuck with the built-in solution for some time without alternatives. Could in principle be a security issue for various companies if the only option was OneDrive or GitHub.

Built-in doesn't mean "OneDrove opinionated. It should offer options.

  1. Not favoring one cloud storage/solution over another. Wouldn't mind a well-supported Microsoft-developed extension though.

I think having the following flow is much more important: 1) install VSCode; 2) Sign In; 3) that's it
So there has to be a built-in solution.

@MrCroft Sure that'd be awesome if the VSCode team could prioritize built-in support for 3-10 cloud services. My suggestion was from my assumption that the VSCode team doesn't have this issue as a particular high priority one.

In my view the solution could be made in two steps:

  1. Solution now: Expose relevant APIs so an extension could sync all the relevant stuff using arbitrary cloud service.

  2. Long-term solution: 1) install VSCode; 2) Sign In.

I'd be happy with any solution though. Using VSCode multi-platform is a little cumbersome right now.

@gandalfsaxe I totally see your point (and that of others) regarding the API argument, and I agree in many respects. Either way, I would personally much prefer to have a Microsoft option since I sync with my Microsoft account and therefore inherently trust them with that data. Nonetheless I'm all for people having options. Let the best extension win.

Syncing environments is a substantial value added to me because I have both VSCode and VSCode Insiders installed on no fewer than two devices and 3-4 total environments including local VMs (Windows & Linux).

I tried using Shan Khan's otherwise promising Setting Sync extension, but it's not compatible with the portable version of VSCode. Why not? I think because he's waiting for VSCode to provide an API to expose file paths so he can do it safer, and doesn't have to hard code various paths.

Currently there is no identifier for extension to know either Code is running as portable mode.
To support portable mode, Settings Sync needs to know either the code is running on it ( https://github.com/Microsoft/vscode/issues/54824 ) and various paths even user has changed ( https://github.com/Microsoft/vscode/issues/2741 ) as @GandalfSaxe mentioned.

@shanalikhan Could a manual switch between portable/non-portable solution be a temporary provisional solution?

please integrate with microsoft account or/and github to sync all stuffs. :)

s2 Vscode! the best ide ever made!

If vscode integrated with Microsoft accounts or Github there could be improvements to the extension viewer such as the ability to review an extension from Code. There could also be an option to report issues which automatically generate extension information.

Since Microsoft owns Github, it would also be profitable since it would encourage people to keep their Github accounts. The superior git integration would really motivate people to leave other text editors behind and adopt Code.

I'm thinking maybe altering the activity setting view so it acts like an account manager? It could list your notifications, account settings, and more. It would essentially just replace the context menu, creating a more streamlined interface.

I would really just prefer vscode to look for a .vscode folder in my home directory and load settings from there if it exists. This would let me decide what service I decide to sync it with and how that happens completely external from the application itself. If I want to use git: I make .vscode a git repo, if I want to use dropbox: I can symlink it, etc...

Many editors support dotfiles from atom to vim and everything in-between. Many of these tools even look for dotfiles on Windows, so I don't see why this pattern would be ignored here.

@fishpen0 How would that work for the portable version?

If there is a .vscode directory in the same path as the executable, load that with the highest preference.

@fishpen0 I think this is a good idea: use the file in .vscode if it exists (maybe add a row to decide the priority: .vscode over sync, .vscode with sync (try to mix), .sync over .vscode)
So that we have best of both worlds

Some great stuff here.
I would be happy with a .vscode file containing all information I would like "portable"... this way I can keep that folder in a Git repository... slightly changing my preferred method in #56850, but acceptable.

Then it'd be something like:

  1. Install VSCode
  2. Clone .vscode Git repo to the .vscode location VSCode looks for.
  3. Restart VSCode, then watch it come back with all my settings, extensions installing, and Git repositories linked.

It's a huge pain setting up another instance of VSCode on another computer. There's too many extensions to reinstall, too many Git repos to re-clone, too many settings to redo.

Should be able to to at least export/import an extensions list, that should be easy enough to implement.

Wishing to add import&export settings or upload settings to Microsoft account.

If integrate with Microsoft account would be hard. Maybe it could be implemented at first like browser profiles do, separate all user config in a single folder only. Then, the user could create, for example, a git repository to sync it in other places. Sync is a thing that Git does well and it could be integrated with any cloud system like Bitbucket, Gitlab, etc.

Really surprised that account syncing wasn't built right into Code from day one. Seems like a no-brainer.

From @SrTobi

So here some ideas to make synchronization clean and extensible:

  • add a contribution point for synchronization extensions

YES!!! Makes it possible to be nice and clean.

I'd add one consideration. Inheritance of settings w/ overrides based upon source of setting. I don't want my configuration to be the same across all projects. When working in Vim, it is common to have project based configurations for macros/keybinding shortcuts, though Vim is a lot like the wild west in this regard, which is why I like your thought of making this possible through a contribution point. Eclipse allows this also for all kinds of settings, though its not very clean in eclipse.

+1

There are some features I would not trust any third-party extension for. Account syncing is definitely one of them!!

'Regular' Visual Studio has this feature: You log in with your Microsoft account and it syncs the settings. It's had it since at least Visual Studio 2015. Would be great to have this in VS Code too. I wonder if it could even reuse the same backend system?

From the perspective of setting up a new machine, that extension forces me to go through the process of installing that extension and adding github keys to vscode before I can seven sync my settings. At that point I might as well just be manually copying my settings from a file in dropbox or something anyways.

All I want is a directory I can drop my settings files and plugins in that vscode autoloads so I can manage it using whatever tool or process I want.

I'm going to reiterate my suggestion to use the dotfile folder in my home directory pattern that every editor I have ever used before (vim, sublime, atom, jetbrains, emacs) also supports.

I realize this pattern might be confusing or new for people coming from windows environments, but it is highly effective for solving this problem. Please take a look at https://dotfiles.github.io/ for hundreds of examples of people using dotfiles to manage their settings between machines and environments.

You're looking at a configuration lead time either way. I'm not saying "this idea sucks," I'm just making sure that those looking for this functionality are actually aware it exists via extension. It may not be enough for you; it may be enough for them.

I'd rather just log in to my MS account and have it sync everything like how Google Chrome syncs everything.


From: cmcit-bferg notifications@github.com
Sent: Wednesday, April 3, 2019 10:04:23 PM
To: Microsoft/vscode
Cc: tjgruber; Comment
Subject: Re: [Microsoft/vscode] Provide support to synchronize settings across machines (#2743)

You're looking at a configuration lead time either way. I'm not saying "this idea sucks," I'm just making sure that those looking for this functionality are actually aware it exists via extension. It may not be enough for you; it may be enough for them.


You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode%2Fissues%2F2743%23issuecomment-479638007&data=02%7C01%7C%7C56f78e59d2884cb592d308d6b86f9245%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636899186661366632&sdata=itS3%2B7c1ZmJWka4q1yS3O%2BfpoSl6sjCs7d4ERESn%2F%2Fk%3D&reserved=0, or mute the threadhttps://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAO2oZ6E6OqvvTlOgQKwld4j5RhDr9vtVks5vdQlHgaJpZM4HUeqZ&data=02%7C01%7C%7C56f78e59d2884cb592d308d6b86f9245%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636899186661376637&sdata=CQb0niUDYXXvo%2BcstXiyu5zxZ3h%2BHpFNV7%2BGbiM3WAA%3D&reserved=0.

I really hope you guys can support login. when I change my computer,I should rewrite my config.I hate this felling.

Settings Sync now provides GUI to seamlessly integrate and sync your settings in just a logging into the Github and selecting the GIST from the GUI Gist lists.

What do you guys think about it, how we can improve much further.

To those who continue to insist on using a THIRD PARTY extension, I think you're missing the point. Even if the API is safe, even if I review the source code at a fixed point in time to ensure no funny business is going on, I'm unlikely to continue doing so indefinitely.

Therefore, for any account I have with any service, I trust only that provider with my account related information. Indeed, they may also slip up, but I'd rather mitigate that risk by not introducing a third party extension as another variable and potential security vulnerability. When it comes to security,

I endeavor always to make wise and informed decisions, and using a third party app to sync data over my account would be quite the opposite.

I'm not feeling good for using any extension for synchronizing all of my settings. It must be a built-in feature from Visual Code. Login with GitHub or Microsoft account and saving all data like:

  • Extensions
  • Settings (Configurations)
    and etc.

I agreee. the extension does work well, however it seems like a missed opportunity to be much more user friendly by having everything linked to either Microsoft or GitHub

This is probably one of those things where Microsoft will be useless! It will be up to some devs to create an extension for this... it'll probably be completed much more quickly and of better quality.

Even if it's not synchronizing settings at least a reliable way to export all and import them all. I use different settings and extensions depending on if it's company related or personal, so for me export/import would be better than sync. But both would be nice!

To those who continue to insist on using a THIRD PARTY extension, I think you're missing the point. Even if the API is safe, even if I review the source code at a fixed point in time to ensure no funny business is going on, I'm unlikely to continue doing so indefinitely.

Therefore, for any account I have with any service, I trust only that provider with my account related information. Indeed, they may also slip up, but I'd rather mitigate that risk by not introducing a third party extension as another variable and potential security vulnerability. When it comes to security,

I endeavor always to make wise and informed decisions, and using a third party app to sync data over my account would be quite the opposite.

Exactly what I thought. I hardly understand why there is no a built-in syncing module in VSCode.

I just started keeping my settings and extension list in a repo (with a workstation setup script):

https://gitlab.com/aztek-io/vscode-settings

I totally agree though it would be nice to have vscode behave like Google Chrome where you just log in with your account and everything is the way you had it configured across a myriad of workstations.

Why doesn't someone just write an extension to automate managing your
settings in a Git repo, making commits and pushes/pulls whenever you
make a change? VSCode ships (or at least suggests the presence of) every
tool you'd need to build this. Then someone can sync settings wherever
they like, private or public, no Microsoft account needed. Sure we can
mostly do this ourselves, but I don't use VSCode enough to know what to
version and what is OS/platform-specific. So if someone could package
that knowledge up in an extension named something like the
search-friendly Git Settings Sync, I'd appreciate it greatly. :)

his seems easy enough, and I'm surprised it hasn't been done yet. Do we
not have the APIs/permissions needed to pull this off in an addon?

@ndarilek there is - it's called SettingsSync but we want this native in the application and not an extension

Doesn't that sync to a gist, which is a) public and b) GitHub-specific?
I remember it requiring a great deal of manual setup as well, though I
think that may have changed recently.

Most of us have access to some VCS or other, and even then to some
mechanism to host a private repo, even if it is via SSH on a cheap VPS.
Given that, I'm not clear why we'd need to tie sync to Microsoft,
GitHub, or even a specific VCS.

I'll probably look into doing this when VSCode becomes accessible under
Linux. As of now I'm not a VSCode user, but don't understand why this
isn't a viable option. Nothing against Microsoft, but settings sync
isn't particularly complicated, and I'd rather host that data myself.

Just a few data points:
1- Github is Microsoft
2- VSCode is on Linux
3- the issue with 3rd party extensions is trust when it comes to more
sensitive information such as logins that would be used to store the
necessary information.

On Thu, Sep 12, 2019 at 10:37 AM, Nolan Darilek notifications@github.com
wrote:

Doesn't that sync to a gist, which is a) public and b) GitHub-specific?
I remember it requiring a great deal of manual setup as well, though I
think that may have changed recently.

Most of us have access to some VCS or other, and even then to some
mechanism to host a private repo, even if it is via SSH on a cheap VPS.
Given that, I'm not clear why we'd need to tie sync to Microsoft,
GitHub, or even a specific VCS.

I'll probably look into doing this when VSCode becomes accessible under
Linux. As of now I'm not a VSCode user, but don't understand why this
isn't a viable option. Nothing against Microsoft, but settings sync
isn't particularly complicated, and I'd rather host that data myself.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vscode/issues/2743?email_source=notifications&email_token=AAFNROZZY2TJGCV2GS7XBI3QJJH33A5CNFSM4B2R5KM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6SDL6Q#issuecomment-530855418,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAFNRO547VFY2VLO6BH7WQLQJJH33ANCNFSM4B2R5KMQ
.

  1. I know. Point being, we have the capability to have third-party sync
    with no external accounts/providers involved, save for something as
    minimal as SSH access somewhere. Microsoft or non-Microsoft is only a
    factor in so far as they're a provider of an account. I'd feel the same
    about tying sync to GitHub as I would to GitLab, Google, or Owncloud.
    And folks have versioned editor settings via Git for years, as has
    already been pointed out. I just wondered how we might capture that
    knowledge into an extension, because right now I'd have to google how to
    set something up and do the work myself. Capturing that
    knowledge/process into an extension would save time.

  2. It may be on Linux, but I'm blind and Electron apps are mostly
    inaccessible at this time. Hence the "I'm not working on this now but
    would love it if someone else could" weasel wordery--I only use VSCode
    in Windows VMs for certain tasks, and the latency kills it for just
    about anything else. Electron/Chromium accessibility is coming, but IIRC
    Microsoft has modified Electron some. If that is true, hopefully the
    fork can capitalize on the current upstream work happening in
    Chromium/Chrome.

  3. Fair point, though if the issue is lack of trust in the extension
    mechanism, then why concern yourself about sync-related attack vectors?
    What about exfiltrating code or other files by literally any other
    extension you've installed? Or if you're worried about settings
    specifically, couldn't I write a non-settings-related extension that
    uploaded your settings to my own server? Genuine non-trolling
    question--I don't know how the extension mechanism works, but I don't
    think it sandboxes anything, does it?

Thanks.

Just fyi @ndarilek Settings Sync can sync to a private gist, you just need to provide it an access token. It's simple to use. But your concerns around trust are valid, and it would be ideal if vscode added its own federated settings sync functionality

Settings Sync Design Proposal:

We are planning to built settings sync inside VS Code as follows:

  • VS Code would provide the UI and feature to sync settings, keybindings, extensions & snippets.
  • VS Code talks to a service end point to read and write the data

VS Code Settings Sync Service End Point

  • Provides ReST API to read and write data (backend)
  • Provides authentication mechanism for users to log in.

Kamino cloned this issue to ChaseKnowlden/vscode

@sandy081 is the design proposal going to support syncing to/from a Microsoft Account?

Hi VSCode Team,

Since this is going to be a thing, I would love to suggest that Azure AD and Personal Microsoft accounts have the ability to authenticate.
Other OAuth providers would also be appreciated (e.g. Google, GitHub, etc.)

Thanks!

Perhaps you could even sync these settings to Visual Studio Online! My 2 cents :-)

I just saw the preview and wanted to input that syncing snippets should also be included.

Syncing snippets and global state is planned for March milestone - https://github.com/microsoft/vscode/issues/86678

All, As you know from our latest release that Settings Sync feature is previewed in insiders. So, please try out the feature using our insiders and provide us with the feedback - https://code.visualstudio.com/insiders/

<3 Wish this features come stable

Before spending time to make an extension that syncs everything, I think it'd be more beneficial to spend some time curating what would be the best .gitignore files to include by default in the VS Code folders, then people can start initializing git repos and committing things confidently.

Right now, I basically commit everything in my ~/.vscode folder, including extensions and caches, because honestly I don't know what not to commit.

We should not have to commit all extensions. As an example, like @felixfbecker mentioned, it'd be great if there was a extensions.json file inside the user VS Code folder so we can commit that instead of committing all extensions. With this in place, VS Code team would simply need to ship a nice .gitignore file (that ignores extensions but not extensions.json, etc), and then all of us will be on our merry ways.

After this basic version control stuff is in place, then it will be a lot easier to build "sync" extensions on top of it.

@sandy081 Does this allow sync settings to github for people who do not have a MS account?

You can also use your GitHub account to login but it will sync data to MS Azure backend. See doc here - https://code.visualstudio.com/docs/editor/settings-sync#_enabling-settings-sync

@sandy081 Still need to have an Azure or Outlook account.

Cannot we just use gist just like setting-sync? so users do not have to create new accounts.

Cannot we just use gist just like setting-sync? so users do not have to create new accounts.

No. Private Gists are unlisted, but public if you can guess the url. It's dangerous. Wouldn't want any credential-related preferences or tokens accidentally committed into a gist.

It would be convenient to use Github account, without MS Azure.

While I appreciate this feature, I'm honestly not interested in creating a MS account or using GitHub gists to keep my VSCode settings, extensions, etc. synced.

I've always kept my configuration for Sublime Text and Atom happily versioned and fully synced with Git in my dotfiles. While I already do this for VSCode, I haven't found a way to also sync extensions. In Atom, I used package-sync. This allowed me to keep the list of extensions in a packages.cson file. IIRC, Sublime Text did something similar out-of-the box.

I would be happy to see something similar built in VSCode, as this seems to me the sanest approach. But, if not likely to have this feature built-in, is there maybe an extension that does it and escaped my Google-fu skills?

Private gist has been working great for me using the Settings Sync addon by Shan Khan, as well as over 1.5 million other people. That one is good enough IMHO, need nothing else.

@OmeGak My script to sync extensions via bash/dotfiles:

https://github.com/ithinkihaveacat/dotfiles/blob/8a3c9b2cc0e88bcdc6d8c3e3faf47c6f3cc11d1c/update#L390-L399

Not the most easy-to-use approach but hey, it suits me. (And doesn’t require me to create an account.)

Again I am saying we need a way to sync settings without a MS account, (using already existing GH account)

I support having a first party sync option. I have been using settings sync by Shan Khan and while it is nice, I recently found two issues.

  1. Private gists are not locked behind authentication. If someone guesses your gist hash they can see your information.
  2. The extension recently started uninstalling the built-in TypeScript extension from my VSCode and I had to turn off the remove extensions option to fix it. This caused a couple hours of work disruption for me.

Will this feature be available on vscode OSS?
I‘m using a musl based Linux system and FreeBSD, and both don't have an official Electron release.

IMHO best way to sync settings is through a git repo
ex: Settings repository by JetBrains
Benefits

  • No new accounts needed, can use any git service (GitHub, Bitbucket, GitLab) which most devs already have
  • Can keep settings private by using a private repository

If privacy is a concern then all it really needs is an export/import feature (which really should be provided when it goes into stable),
as it doesn't need to store things on an external place. (which would include git if you'd use a remote server)

But if I want things synchronized I'd prefer to have it trough the company that build the application in the first place,
if I don't trust that one (at least to a degree), then why would I even consider using their application?

Not to mention that MS also owns github by now, so it really doesn't matter whether you use a MS account or a github one. (with gists, as mentioned being rather insecure, which is why I didn't use that yet and are eagerly awaiting this upcoming feature to be stable)

As @neico said also allow users to export, import their settings as a zip file.

I would recommend to create separate issues for separate requirements. Those might get untracked otherwise. So, please create separate issues for your wishes.

It would be convenient to use Github account, without MS Azure.

For developers in China, it's not convenient.

It would be convenient to use Github account, without MS Azure.

For developers in China, it's not convenient.

Why? I can use GitHub in China and it seems to be more stable than MS Azure.

@sandy081 Opened separate issues for

如果没有MS Azure,使用Github帐户会很方便。

对于中国的开发人员来说,这并不方便。

为什么?我可以在中国使用GitHub,它似乎比MS Azure更稳定。

在一些特殊时期会比较慢
MS Azure应该够了

I started using the settings sync from vscode-insiders. But I immediately ran into a problem. When I try to sync settings across vscode-wsl and visual studio online, I can't use an environment variable to fix folder names for certain workspace folders, such as leetcode. I tried setting "leetcode.workspaceFolder": "${env:HOME}/go/src/github.com/rafee/leetcode", but it doesn't work. This is previously referred at #2809

It is not recommended to sync path specific settings unless the extension owning this setting can handle them with env variables.

Will settings sync be able to sync ssh configuration files?

Not as of now.

which method is safe for now to sync

https://gist.github.com/wonderbeyond/661c686b64cb0cabb77a43b49b16b26e

or

https://mikefrobbins.com/2019/03/21/backup-and-synchronize-vscode-settings-with-a-github-gist/#comment-39448

I personally use this extension:
shan.code-settings-sync
It is super awesome and keeps my settings private on a private github gist.

@elliot-labs as discussed earlier in this thread, secret github gists are not private. Github documentation confirms as much https://docs.github.com/en/github/writing-on-github/creating-gists

I have used the same extension, but pulled some sensitive information out of my settings after finding out it wasn't private.

Oh crap! I missed that! 😬

@elliot-labs and @haugerbr
thanks,
I also don't know that gist is not private
so now I am thinking of writing some scripts for uploading settings to the cloud
and one script to download and install

I have also build a program that shows me scripts on startup
so I can put those script in there.

Guys, vscode-insiders's sync isn't an option?

I agree with @escape0707. Vs code insiders now has settings sync that will soon hit the public release. This is effectively a non problem and has been addressed.

@escape0707 @jakobhviid I'm aware of it and it's exactly what I'm planning on using once it moves to the normal VSCode builds. For now I'm still using settings sync while I wait.

Settings Sync (preview) feature has landed into stable (1.48), hence closing this.

Please create separate issues for other requests or bugs.

@sandy081 is having seperate profiles within the same account a feature that has been requested already? For example, if I want to use my github account for the authentication method but want seperate work/personal profiles. For now I use seperate accounts which I actually like better for personal/work separation but I can see a use case where people want multiple personal profiles. I will open up a feature request for it if it does not already exist.

Please go through the existing settings sync issues and create a one if does not exist.

Found it. Tagging it here in case anyone reading this thread is also interested in tracking it #92393

Please join me in a nice round of applause and show of great appreciation for adding this feature (as of 1.48). I am thrilled and elated! Thank you so much VS Code team!! 👏🏼👏🏼👏🏼

Excited Guy

However, if you could allow me just two minor gripes:

  1. I seem to have to re-authenticate after some very short timeout (a day perhaps?) and a restart of VS Code.
  2. Authentication takes place in a browser, and since I have tabitis and sometimes don't have my browser open, this becomes somewhat... irksome.

Thanks.

I would suggest to open new issues for the problems you are facing with steps to repro.

Was this page helpful?
0 / 5 - 0 ratings