From 90fa620147476b9215eed17da53b156e395ec144 Mon Sep 17 00:00:00 2001 From: Mark Longair Date: Thu, 19 Sep 2013 11:05:37 +0100 Subject: Deal with ../logs existing, and log not being a symlink The rails-post-deploy script would error if the log directory existed (rather than being a symlink to another directory, for example) and the ../logs directory also existed. This commit changes this behaviour to move the existing log directory out of the way in this case. In addition, this commit switches from removing the old symlink and creating a new one (which creates a gap in time during which the log directory doesn't exist) to using "ln -snf" to just overwrite any existing symlink or file. (Note that this is still not an atomic operation, but it's bound to leave less time between removal and creation.) --- script/rails-post-deploy | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'script/rails-post-deploy') diff --git a/script/rails-post-deploy b/script/rails-post-deploy index bf639855b..c09868347 100755 --- a/script/rails-post-deploy +++ b/script/rails-post-deploy @@ -35,8 +35,13 @@ fi if [ -e $TOP_DIR/../logs ] then # mySociety servers have logs dir in level above - rm -f log - ln -s $TOP_DIR/../logs log + if ! [ -h log ] && [ -d log ] + then + # If log is a directory rather than a symlink, move that + # directory out of the way: + mv log log.original + fi + ln -sfn $TOP_DIR/../logs log else # otherwise just make the directory if [ -h log ] -- cgit v1.2.3