Switching $FAI_CONFIG_SRC
Michael Goetze
mgoetze at mgoetze.net
Mon Mar 14 00:04:21 CET 2011
Hi FAI folks,
while trying to add a git+ssh:// handler and switch to it from git://
(in between softupdate runs), I noticed that switching $FAI_CONFIG_SRC
seems to be poorly supported right now. For instance, get-config-dir-git
currently includes
if [ -d $FAI ]; then rmdir $FAI; fi
but this will fail if $FAI is not empty. Other methods, such as
get-config-dir-svn, don't even bother to check whether anything is in
place before trying a checkout, and in general, none of the revision
control methods checks whether the current contents of $FAI is from the
same source as the present $FAI_CONFIG_SRC.
(Oh and incidentally get-config-dir-nfs doesn't even bother to check
whether the mountpoint exists.)
Here's my current working copy of get-config-dir-git. My question is
whether it's OK to just clobber $FAI with rm -rf.
#!/bin/bash
# (c) 2002-2006 Henning Glawe <glaweh at debian.org>
# (c) 2007 Holger Levsen <holger at layer-acht.org>
# (c) 2011 Michael Goetze <mgoetze at mgoetze.net>
### BEGIN SUBROUTINE INFO
# Provides-Var:
# Requires-Var: $FAI_CONFIG_SRC $FAI $LOGDIR
# Suggests-Var:
# Short-Description: get $FAI from a git repository.
### END SUBROUTINE INFO
# matched string: "git://gitpath"
protocol=$(expr match "$FAI_CONFIG_SRC" '\([^:]*\)://')
gitpath=$(expr match "$FAI_CONFIG_SRC" '[^:]*://\([^[:space:]]\+\)')
case $protocol in
git)
giturl="git://$gitpath"
;;
git+http)
giturl="http://$gitpath"
;;
git+ssh)
giturl="ssh://$gitpath"
;;
*)
echo "get-config-dir-git: protocol $protocol not implemented"
exit 1
;;
esac
export GIT_DIR="$FAI/.git"
if [ -d "$GIT_DIR" ] && [ `git remote show -n origin | egrep -m1 -o
'[^[:space:]]+://.+'` == "$giturl" ]; then
echo "Updating git copy in $FAI"
git pull
task_error 701 $?
else
echo "Checking out from git"
# cloning into an existing directory is not allowed
if [ -d $FAI ]; then rm -rf $FAI; fi
git clone $giturl $FAI
task_error 702 $?
fi
Regards,
Michael
More information about the linux-fai-devel
mailing list