implement functions allowing to easily mirror repository; actually only git supported

This commit is contained in:
belliash 2012-01-21 14:28:54 +01:00
parent 916260efa9
commit 9c4cce0f4e
1 changed files with 34 additions and 0 deletions

View File

@ -3,6 +3,40 @@
# Distributed under the terms of the GNU General Public License v3 # 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) # Prepares SSH Wrappers for use with unknown hosts (requires key authentication)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------