Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am one of two developers for some internal software (written in python) in my company. Software is a server application designed to run on a dedicated Linux box. Currently, we have one box holding our SVN repository and this box is also used for testing. The problem is that I am developing it on my workstation using Eclipse on Windows and this app can't run on Windows.

How to properly organize such environment so that you can don't lose valuable time on transferring the project and code around so that you can test it?

Currently I am doing svn checkout, change some code and then upload it to the development server for testing (not via svn). Test it on the server, change something, test it again etc. After all of that comes the commit. This constant uploading and testing is driving me crazy. I've tried to keep the project on the server (checkout to home dir) but this causes a whole lot of problems with Eclipse.

Obviously I don't have a lot of experience in this, so I am asking what are the best practices concerning this kinds of problems?

share|improve this question

5 Answers 5

up vote 13 down vote accepted

Mount the folder on the Linux box. That way you can interact directly with the code. Works a charm!

share|improve this answer
    
This is the right answer. Especially if you can run Cygwin on your windows box; you can use Cygwin to display the Linux X-Windows (Gnome, KDE, Whatever the cool kids are using these days) back to your windows box. You can program in Eclipse directly on the Linux box and immediately test it. –  Kristofer Hoch Aug 2 '11 at 13:17
3  
Just beware of the differences in file systems. Windows doesn't support case-sensitive filenames (where "filename" and "FILENAME" are two different files), some chars as a filename (i.e. "/"), or soft links. –  Levinaris Aug 2 '11 at 13:23
    
Agree, this is the most useful and easiest option to implement. Configuring a VM the way I want it would require too much time. –  c0ldcrow Aug 2 '11 at 20:05
    
@c0ldcrow: Other than the file system issues, just be aware that depending on what you are doing, accessing files across a network to do dev work can be prohibitively slow. In particular, I've noticed that some version control systems are very slow when used on a network drive, though this particular case shouldn't be an issue for you (do all your source control stuff locally). –  Matthew Scharley Aug 2 '11 at 22:59

I managed to write c#/mono code in Visual Studio, and remotely debug on a Linux box from within VS using a GDB remote debugger plugin. Worked amazingly well. I imagine it'd be faster if your Linux install is in a local VM (there's a nice VMWare Ubuntu appliance available on the web), but I needed a set of Tesla GPU cards that weren't installed in my laptop.

Look for WinGDB. Its not free, but works incredibly well.

share|improve this answer

If you're using eclipse, there's a perfect plugin for you : Filesync I use it all the time and i'm sure you'll love it.

Here is what I usualy do as I'm working in the same conditions than you.

I checkout the project from SVN using Eclipse in my machine. Then I sync my local project to the remote dev|test server excluding files like .project and such. I recommend you also put your SSH key to the remote server to speed up the connection.

And voilà! Now you can work localy and eclipse will automaticaly sync any changes you do on the remote server. When all is well tested and ready to be delivered, you can commit using eclipse too! No need for putty!

Hope it helps!

share|improve this answer

Suggestion 1: work in Linux directly, if you have time to learn it. Learning how another operating system works is really great for your personal experience, and adding to your CV that you know how to use Linux doesn't hurt. Also, Eclipse exists in Linux, so you don't lose anything vs. Windows.

Suggestion 2: install Linux on a virtual machine locally. It will allow you to test the application without having to publish it to a distant server every time.

Note: how can you possibly write an application which targets Linux if you work with Windows? It's a nightmare!

share|improve this answer
    
Even if you do have testers, you have to do some limited testing on your own work, even if it's just to make sure it actually compiles/runs at all. If you are developing on a Windows box but you are a developing a Linux application, then this becomes a little harder. On the note of how can you do it, it's easy enough to do with the right setup. I use VM's extensively in my own work (PHP/MySQL targeting a Linux end server) and it actually works really well, expecially if you have 2+ monitors to work with. –  Matthew Scharley Aug 2 '11 at 13:04
    
I am already very good with Linux (I've set up the test and SVN server). I also do Windows coding (need Visual studio) and generally I like Windows more :) Software development is not the core businesses for my company, computer security is, this is just some internal app that we need. I think I can accept installing Linux in a VM –  c0ldcrow Aug 2 '11 at 13:07
    
@Matthew Scharley: I agree. Removed my second note. –  MainMa Aug 2 '11 at 13:09
    
@c0ldcrow: so it must not be a problem for you to have a virtual environment just to develop this application (or only to test it, while writing code in Windows). –  MainMa Aug 2 '11 at 13:09

The best solution in my opinion would be to use a virtualized environment for testing, if your local PC has the resources to run one.

For some recommendations on specific products, you can see my answer to a question on StackOverflow, but in general, what this means is you will have a second Linux PC running inside your current one. I use this for PHP development on Windows all the time and it works really well for me. You can share your codebase with either SSH/ExpanDrive or if you are using VirtualBox then check out shared folders.

share|improve this answer
    
+1 only way to handle this. –  user1249 Aug 2 '11 at 18:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.