I am hoping to find an easy tool or method, that allow's managing our code deployment.

Here are the features I hope this solution has:

  1. Either web-based or batch file, that given a list of files, will communicate to our production server, to backup those files in different folders, and zip them and put them in a backup code folder.

  2. Then it records the name, date/time, and purpose of the deployment.

  3. Then it sends the files to their proper spot on the production server.

I don't want too complex an interface to doing the deployment's because then they might never use it.

Or is what I am asking for too unrealistic?

I just know that my self-discipline isn't perfect, and I'd rather have a tool I can rely on to do what needs to be done, then my own memory of what exact steps I have to take every time.

How do you guys, make sure everything get's deployed correctly, and have easy rollback in case of any mistakes?

  • Subversion and a post commit hook? Have the server with a working copy, commit to the repo, have the post commit hook to update the server working copy.
    – Vitor Py
    Mar 4, 2011 at 14:50
  • We're not using subversion, something called QVCS by Qumasoft.
    – crosenblum
    Mar 4, 2011 at 14:58
  • Can you guys suggest something not based on us changing what source control we use?
    – crosenblum
    Mar 4, 2011 at 14:59
  • With Capistrano you could write your own QVCS driver.
    – Htbaa
    Mar 4, 2011 at 15:28
  • And I aplogize, if I didn't make this clear, I need a solution in windows os.
    – crosenblum
    Mar 4, 2011 at 15:30

3 Answers 3


All this can be done by a batch file. The following are the basic steps need to happen in batch file:

  1. Get current date time in a variable.
  2. Make copies of the production directory into folders with the current date time. Zip the folder if you want.
  3. Replicate the build dropping folder to production directories. You can also skip some files you don't want to overwrite (like web.config). Both xcopy and robocopy allow skipping files.

Except the first step, the other two steps are very basic command line operations. Regarding the first one, the following code shows how to get a directory with date time:

for /f "tokens=1-3 delims=/ " %%A in ("%DATE%") DO (
  set DATESTR=%%C%%A%%B

for /f "tokens=1-3 delims=:." %%F in ("%TIME%") DO (
  set TIMESTR=%%F%%G%%H


:: now you can use the date time in a folder name:
xcopy /e \\production1\site1 \\backup\site1\backup-%CURRENTDT%\

Sounds like a job for Capistrano with the Railsless-Deploy plugin.

  • I was going to say Capistrano too. If nothing else, looking at what Capistrano offers you is a great way to get an idea of what is available to you.
    – glenatron
    Mar 4, 2011 at 15:16
  • Is Capistrano only for Linux?
    – crosenblum
    Mar 4, 2011 at 15:30
  • Ruby runs on Windows, but 1.5 year ago I couldn't get it to run on Windows. So instead I downloaded the free VMWare Server edition and installed a Ubuntu virtual server and configured it for Capistrano. Perhaps Windows support has improved now.
    – Htbaa
    Mar 4, 2011 at 15:34

I'm pretty sure you could do this with TFS--if you are working with the MS development stack


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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