To help support our clients and make our jobs easier, our support team creates and maintains a number of small (often < 50 line) proprietary scripts in a number of different languages to simplify normal tasks. These are currently stored in a number of places, from an internal wiki, to .txt files on people's own hard disks, on internal servers etc. and it's becoming difficult to track down the latest version of each one.
Really, these need to be kept separate and don't really relate to each other enough to be put into a shared source repository, but aren't significant enough to warrant creating a separate RCS repository for each.
Are you aware of any software or practices which would be suitable for managing a large number of these scripts? This would ideally provide the following functions:
- revision control
- web access (download single script over HTTP)
- authentication
- encryption
If there's no standard piece of software or standard practice for this, I guess it'll just come down to creating something simple myself.
I beg to differ about your point that scripts aren't significant enough for version control. They are often very important (logon scripts mapping network drives for example) and like you say also often just live on the server without any version history, so if you mess it up you're screwed.
We keep all our scripts in a Subversion repository, and that works very well for us. The benefits are pretty clear.
Version control systems are pretty lightweight, and you can either piggyback another system (if you have in house developers, create a repository on their server) or create a virtual machine running a lightweight Linux distro if you need to.
As an aside, there was a post on the Server Fault blog recently about just this. Check it out.
In similar situations in the past, I've created one repository in
$scm_of_choice
, with subdirectories for each related group (admin_scripts
,sql_scripts
, etc).Alternately, depending on how many scripts you're talking about, you could create one repository per problem domain.
since you want to track the version is natural to use a version control system - there are a few - svn, git etc.
for web access you may need to install some additional software but it can be done very easily.(for svn you may install an ssl enabled server, git uses ssh)