views:

80

answers:

1

I've got a lot small projects (at home as well as at work). I'm writing a script to automate releases. I'm doing it in my free time to learn Python.

Actually it does a pretty easy job:

For each given project:

  1. Export a svn repository folder
  2. Create an archive (tar.gz, zip, etc) with it
  3. Upload it on a public ftp server

It can handle trunk and tags (i.e. export the current directory OR export every folder in a given directory). It as multiple repository support.

However I am not an experienced programmer and since it approximately works I'm asking some serious questions:

  • Is it the best way to manage releases (or tags, whatever you call it)?
  • Could this project be useful to anyone but me?
  • Is this project worth it or should I fall back in writing some shell lines in a crontab to do the same work?

Thanks.

+1  A: 

Personally, I think that's a great way to use Python (or any programming language, for that matter): you're using it for a pragmatic purpose that has an immediate payoff, and you gain value right from the first line of code. It's always worth it to see how a language can solve your practical, everyday problems, instead of the theoretical toy examples that tutorials usually have.

Is it the best way to manage releases (or tags, whatever you call it)?

Releases are typically done manually, in the sense that a human makes the decision about when to release. But the actual release process is definitely something that should be automated -- the human shouldn't do much more than push a button to get things moving. This will be great if you graduate at any point to a continuous integration system.

That said, there are a couple of existing build managers which already automate the process of doing releases, and that's probably the place that someone would go first if they had to do this themselves. But who knows -- maybe people will prefer your version for its simplicity and non-bloat.

Could this project be useful to anyone but me?

Definitely! Even if it you don't think it is, put it on Github (or wherever) anyway, and it can be part of your software portfolio.

John Feminella