From 9c4cce0f4e90d148fface82a53d776d15ce04d57 Mon Sep 17 00:00:00 2001 From: belliash Date: Sat, 21 Jan 2012 14:28:54 +0100 Subject: [PATCH] implement functions allowing to easily mirror repository; actually only git supported --- libraries/repositories | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/libraries/repositories b/libraries/repositories index 65c913c..76d9f28 100644 --- a/libraries/repositories +++ b/libraries/repositories @@ -3,6 +3,40 @@ # Distributed under the terms of the GNU General Public License v3 +#------------------------------------------------------------------------------- +# Creates a local mirror of specified GIT repository +# Parameters: %dest_directory% %address% [%username%] +#------------------------------------------------------------------------------- +function mirrorGit() { + local DIRECTORY="${1}" + local ADDRESS="${2}" + local USER="${3:-root}" + if [ -d ${DIRECTORY} ]; then + cd ${DIRECTORY} + run "su ${USER} -s \"/bin/sh\" -c \"git fetch -all\"" || return 1 + else + run "su ${USER} -s \"/bin/sh\" -c \"git clone --mirror --bare \ + ${ADDRESS} ${DIRECTORY}\"" || return 1 + fi + return 0 +} + +#------------------------------------------------------------------------------- +# Creates a local mirror of specified repository regardless its protocol +# Parameters: %dest_directory% %protocol% %address% [%username%] +#------------------------------------------------------------------------------- +function mirrorRepository() { + case "${2}" in + [Gg][Ii][Tt]) + mirrorGit "${1}" "${3}" "${4}" && return 0 + ;; + *) + printWarn "Tried to mirror data using unsupported protocol (${2})!" + ;; + esac + return 1 +} + #------------------------------------------------------------------------------- # Prepares SSH Wrappers for use with unknown hosts (requires key authentication) #-------------------------------------------------------------------------------