Synchronize VScode projects between linux and windows with WSL - linux

I'm new to WSL and got the advice to store my VScode projects on Linux for better performance.
The thing is, I would like to keep an automatic sync between these files stored on Linux and a folder stored on Windows since I would like these projects to be stored in my onedrive.
What would be the easiest option to do this?
I'm new to WSL and got the advice to store my VScode projects on Linux for better performance.
The thing is, I would like to keep an automatic sync between these files stored on Linux and a folder stored on Windows since I would like these projects to be stored in my onedrive.
What would be the easiest option to do this?
EDIT: I made a symlink in Windows from the folder on Linux. Will synchronization with onedrive work correctly? (I'd like to be able to use those files again if I change computer). I heard I might get troubles with syncing those files (because of formating, versionning, ...), is it true in this case?

Related

PhpStorm: How to automatically download files that have been created on remote/mounted drive

The question:
Is there any possibility to "watch" specific folders on my workspace for new files and automatically download them to my local project folder?
I would prefer a solution using only PhpStorm, if that's possible, but I am also fine with a Linux one!
The situation:
I work with PhpStorm 2016.1.1 for Windows 8.1 on several different projects. Some of these projects are developed using Laravel, a very nice PHP framework.
All of my projects are cloned to an Open SUSE workspace server in my LAN by Git.
I import every project by using the "Create Project from existing Files" functionality and choosing the option "Files are accessable via network share or mounted drive".
I created the mounted drive using Samba.
As long as I keep developing in PhpStorm, everything works like a charm. Saved files are uploaded to my workspace automatically so I can debug my PHP projects in the browser very easily.
The problem:
Laravel offers a very nice command line tool to use called "artisan". This tool can, amongst other functionality, create specific classes for your projects like events, jobs, migrations, seeds, and so on.
This files created on the command line are, of course, not visible to me in PhpStorm because they are not in my local project folder until I manually start downloading from my workspace.
I do not know if it will help you but there is a Ticket from PhpStorm for a similiar function: WI-1284
It is about 6 Years old so i donĀ“t think that this is coming soon. Perhaps there is another solution for it.
This could help for synchronisation of a remote host: configuring-synchronization-with-a-web-server

What to do if files content is the same and nothing else has been changed?

I'm working in a environment where files are at Windows side (because I like to work with phpStorm from that side) and Linux side (because I've a Virtual Machine running CentOS 6.6 and there is where LAMP environment is). The phpStorm project is a remote files one. This are the steps I followed to create the project:
Clone the repo at Windows directory
Copy the files to Linux using WinSCP
Create the remote project using phpStorm and this step copy the whole files from Linux to Windows.
I'm using SmartGit to manage my repos and do GIT/SVN tasks (the easy way). But surprise, files hasn't been changed but SmartGit says it does, but waits? How is that possible if the only steps I did was the one described above? Even if you try to open a file SmartGit will said that the content is the same? So, how to avoid this behavior? How to not to commit the whole files? If I made a commit already, how do I dismiss it? Is not the first time I'm running this problem but before repos was mine and I can lose every but now is a serious project and I take care for not damage others work. Any advice? Help? What you can do in this case?
See this pic:
There you can see what I'm talking about.

Sync Android Studio projects across multiple workstations

I want to be able to work across multiple workstations synchronously jumping from one to the other without having to worry about committing.
I have windows personal and work desktop and a Mac OSX laptop. At the moment, I point my project to a cloud directory and have the local install of Android Studio pointing to a gradle offline cache in another cloud directory. This keeps failing as it tells me that the path to gradle is invalid. Which I understand because gradle is referenced in different locations on different machine (considering the differing file management system in MACOSX and Windows7).
Edit: When I try to open the project, it brings up the "Import Project from Gradle" screen. To which it has the option for me to select "Use local gradle distribution" and select the Gradle home directory. I pointed it to the cache directory, and it tells me:
Cannot Save Settings
Gradle location is incorrect.
Location:C:/Users/Username/.gradle
All my research (include these answers here, and here) suggest that VCS is the way to go. However, I don't see this as a solution to my problem. I'm not looking to version control, I'm looking to transition seamlessly across workstations. Of course I will still use Version Control System for the purpose of saving a working version of my code, or sharing it with other developers, but there has to be a better way when I simply just want to keep all workstations synced.
I come from web development, and I synchronise local environment on AMPPS across multiple computers without any issue. This meant I can transition from my personal desktop, laptop, and work desktop instantly. It frustrates me if I have to remember to commit every time I move around. If I have to do this 20 times a day, and it takes about a minute to do this, that's 20 minutes that could have been spent writing a couple of functions. And what if I forget to commit, then I get to work, or home, that would be a day wasted because I won't actually have the current up to date code...
So the question remains, is there a way to instantly synchronise Android Studio projects? How do I keep all my code base (ie gradle) in sync?
Ok thanks to the comments above which pointed me in the right direction.
Android Studio create some local files that are specific to the machine that you are on. Following on this principle, to sync the "source" files (files that are specific to your application only), you must ignore all these local files. This is similar to what you would store on github. I followed the answer for this question to apply the ignore rules.
Having ignored all the "local files", when I create a new project, the source files are synchronised across all my workstations. In order to establish a local version, I need to "import" the project first. Once it has been imported, "local files" will be created for that particular machine. From then on, I can "open" the project locally.
To summarise:
Set your sync to ignore files as per .gitignore or refer to this question.
Create a project on one of your workstation and save it in the cloud.
When you are ready to work on the project for the first time on another workstation, "import" the project.
Once the project has been imported, all local files should have been created.
From then on, use the "open" option to continue working on the project.
I hope this helps somebody else, saving hours on googling.

Packaging an exe to have one file, similar to on mac with .app

I am trying to create a standalone app with a resources folder that is writable. I would like to include this in the exe, similar as to how it is done on OSX with an .app. Is this possible?
Thanks!
Assuming that you're talking about a modern Windows OS you're probably going to have problems with this even if you could come up with a solution. Most apps gets put under the Program Files directory and by default only Admins have write permissions there so it's generally seen as a bad thing to store anything the app needs to write to next to the executable in Windows.

How to keep an eclipse workspace synchronized among two machines?

I have nearly identical Linux (Fedora) machines at home and at work and I keep my files on both machines synchronized using the excellent Unison program. I have been trying to keep an eclipse workspace synchronized across the two machines but this has failed. I tried both:
Synchronize just the /workspace directory, badness due to plugin upgrades
Synchronize both /workspace and my .eclipse/ director.
What happens is that I work in one machine, create new projects on eclipse, etc. Then unison. Then when I go to the other machine the projects will sometimes not appear, sometimes they will appear but eclipse cannot find the files, and sometimes (rarely) it works.
I don't understand why eclipse gets so confused since I have identical workspaces, eclipse versions, and even .eclipse directories.
Have considered going through a source control repository? If privacy is a concern, there are private SVN spaces available (e.g. assembla).
I understand this technique will (at least) make it possible to synchronize the projects but probably not all the settings related to a workspace. It might be an option, no?
Take a look at Pulse. It's an Eclipse distribution that can handle synchronization of workspace preferences across users and machines. It might be what you need.
I have been using dropbox to synchronize my workspace. I have been able to work on 3 different computers so far without any issues.
I used to store my workspace(s) and sometimes the eclipse installation itself on a USB stick drive and use that for project portability from windows machine to windows machine. You can then just run Eclipse from the stick and mount the workspace on the same stick.
I have also heard that drop box (http://getdropbox.com - they have a 2gb free plan) is useful for this, though I have not tried it.
It's odd that it does not work with your sync software.
I've ad issues with unison and eclipse and have them mostly worked out though it still needs to refresh the entire workspace when I switch systems.
There are two issues I've discovered that need to be configured before it is at all happy:
1) sync your workspace, your eclipse install and ~/.eclipse
2) Specify "ignorenot" rules in your unison "prf" files to not ignore any files in these directories. This is necessary because, by default, unison excludes files it thinks are built unsing rules similar to CVS which causes issues.
for example:
path = eclipse
path = workspace
path = .eclipse
ignorenot Regex eclipse/.*
ignorenot Regex workspace/.*
ignorenot Regex .eclipse/.*
Have you considered setting up a network drive and installing Eclipse on that drive (along with your workspace)? That way, when you open Eclipse on either machine, it will be pointing at the network path for your workspace. I've successfully used this solution in the past.
I used the Mercurial DVSC on a USB stick as the transfer between home and work. I had three Mercurial repositories: one on the USB stick, one at home and one at the office sharing the same space as my Subversion checkout. If you're up-to-speed with DVSC concepts, I'd push/pull changes from office->USB->home.
It worked fine, but the first check-in was a pain as USB flash writes have crappy speeds. Pushing/pulling deltas was fairly quick afterwords.
I believe the Mozilla guys use a similar hybrid approach of SVN for the 'official' repository, but the developers use Mercurial for their development environment.

Resources