I’m mostly a Windows user but I do most of my development (essentially web development) using unix tools and software. I’ve been going back and forth between using a dedicated lubuntu virtual machine on Virtualbox and using some tools directly in windows (msgit, python, django), but none of these approaches is entirely satisfactory.
I’d like to hear of ways other devs use to better integrate a unix workflow into windows. For instance tighter integration between a linux and vm and windows. The vagrant demo showed how a VM could work off of a windows project folder and I found that nice. I’d like to hear of other tools and tips that would help mimic the workflow one can find on OS X (of course I understand that it cannot be as tightly integrated on Windows as it doesn’t have the same unix underpinnings).
PS: I have tried cygwin as well
EDIT for clarifications about What I find lacking (thanks to axblount for pointing that out) :
unix tools like msys et al do not work as well as their native unic counterparts. Many scripts, installers require further configuration or do not work at all. For instance getting virtualenvwrapper to work is not very straightforward.
virtualbox: ideally I would like to use windows software (photoshop, sublime text 2) seamlessly with linux. I mostly use a FTP client atm to move over files edited on the windows side which is a tedious process.
SUMMARY:
It seems there are no established solutions. As a temporary solution I will probably try to use the native versions of frameworks and libraries through the windows command line when possible and switch to a tool like vagrant for incompatible programs.
MORE INFO FROM REPLIES AND COMMENTS:
The case-sensitivy issue seems to work against windows as pointed out by @GlenPeterson
6
Most of your development (essentially web development) use unix tools and software.
You have tested different alternatives to use those tools in Windows but as of now, you haven’t found one that works as well as the real thing.
Then you should really consider migrating yourself to Linux as your desktop OS, and virtualize Windows for everything else.
Believe me, you will not regret it. Your desktop will be faster, more secure, no-virus and you will have all the tools you need for your development projects.
EDIT:
Accommodating for a great comment from @GlenPeterson:
If you are deploying to Unix/Linux then you should be working on a case-sensitive OS. Windows’ case-insentiveness can cause you problems someday.
8
If you’re deploying your software on Linux servers, you should practice deploying your software on a Linux server (even in a VM). Make your deployment process automatic. The most important part is code distribution and deployment. You must consistently build and deploy on your target system type.
Find yourself a good terminal and learn to use it. I use Putty and have found it to be a lot better than cygwin and msys.
Some continuous integration systems allow you to run and test code remotely before it is allowed to be committed to your VCS. Using this functionality on your target system type can prevent a lot of problems.
1
If you’re running a recent version of Windows, take a look at SUA, the Subsystem for Unix Applications. It has a shell (ksh) and supports over 300 common Unix commands and utilities. Most of the docs talk about Server 2003 R2, but it installs on Windows 7 too.
1