Fork me on GitHub

darcspublish

easily publish repositories and websites.

darcspublish is a shell script that allows you to easily share your darcs repository between different computers, to give read access to the world, or to publish a website that is backed by a darcs repository on your computer. It should work with any bourne shell and only needs darcs and sitecopy to work.

News

2008-02-11

The darcs repository is gone for a while, but darcspublish is available via git now. Yes, that's right. See below!

Getting darcspublish

Grab the very outdated version 1.0, or do a git clone http://darcs.burningsoda.com/darcspublish to get both—the old shell script version and the newer Ruby version that features template processing and supports git repositories and even plain directories which will eventuelly become version 2.0!

Documentation

SYNOPSIS

darcspublish [PROFILE]...

DESCRIPTION

darcspublish reads it's configuration from the file .darcspublish in your home directory or _darcs/prefs/darcspublish in your darcs repository. Should you need different darcspublish “profiles” for one repository you can create different config files named _darcs/prefs/darcspublish.profile and when calling darcspublish you can name one or more profiles to upload as command line arguments. Should there exist more than one profile and you do not specify any profile, darcspublish will execute every one of them in alphabetical order.

The configuration file is a simple shell script that get's sourced by darcspublish. You can set the following variables:

SERVER

The server to connect to.

Example: SERVER=ftp.burningsoda.com

USER

The user name to use when connecting to the server.

Example: USER=rob

PASSWORD

The password to use for authentication when connecting to the server. As sitecopy (and therefore darcspublish) will use a password given in the ~/.netrc file, this setting is optional. In fact, UPLOADSTATE only works if is not set in the darcspublish configuration.

Example: PASSWORD=myverysecretsecret

DIR

The directory to upload the contents of the repository into. This has to be an absolute path name and there's no excuse about it. If your omit DIR, darcspublish will assemble it from BASEDIR and the basename of the working directory.

Example: DIR=/var/darcs/myproject

BASEDIR

The name of the destination directory's parent directory. This is useful to set in your ~/.darcspublish if you don't want to configure every single of your repositories and they all share the same base dir on the destination server.

Example: BASEDIR=/var/darcs

PRISTINE

Only upload the pristine tree. This is useful for deploying websites.

Example: PRISTINE=YES or PRISTINE=

EXCLUDEPRISTINE

Do not include the pristine tree when copying the repository. To save space on the destination site you may exclude the pristine tree, if the resulting repository will not be used as a working directory. (You probably will want to set this to YES)

Example: EXCLUDEPRISTINE=YES or EXCLUDEPRISTINE=

EXCLUDE

List of files or directories to exclude from uploading.

Example: EXCLUDE="data _compile/* _cache/*" will not upload the directory (or file) “data” and will also exclude the complete contents of the directories “_compile” and “_cache” (but these directories will be created on the destination site).

UPLOADSTATE

A metadata file will be saved at the destination site, which will allow you to upload from different locations. Before each sync darcspublish will check for a metadata file which will help darcspublish noticing which file is out of sync and needs to be updated.

Example: UPLOADSTATE=YES or UPLOADSTATE=
CAREFUL

Ask before uploading.

Example: CAREFUL=YES or CAREFUL=

License

darcspublish is released under the following license:

Copyright© 2007–2008 Robert Lillack, burningsoda.com
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.