#!/bin/bash . "$(dirname $0)/config" . "$(dirname $0)/db-functions" if [ $# -lt 3 ]; then msg "usage: ${0##*/} ..." exit 1 fi args=(${@}) repo_from="${args[0]}" repo_to="${args[1]}" ftppath_from="${FTP_BASE}/${repo_from}/os/" ftppath_to="${FTP_BASE}/${repo_to}/os/" if ! check_repo_permission $repo_to || ! check_repo_permission $repo_from; then die "You don't have permission to move packages from ${repo_from} to ${repo_to}" fi # TODO: this might lock too much (architectures) for pkgarch in ${ARCHES[@]}; do repo_lock ${repo_to} ${pkgarch} || exit 1 repo_lock ${repo_from} ${pkgarch} || exit 1 done msg "Moving packages from [${repo_from}] to [${repo_to}]..." declare -A add_pkgs declare -A remove_pkgs for pkgbase in ${args[@]:2}; do tag_list="" for pkgarch in ${ARCHES[@]} 'any'; do pkgfile_from="${GITREPO}/${pkgarch}/${repo_from}/${pkgbase}" pkgfile_to="${GITREPO}/${pkgarch}/${repo_to}/${pkgbase}" if ! [[ -e "${pkgfile_from}" ]]; then continue fi version="$(cat "${pkgfile_from}")" cd "${GITREPO}" mkdir -p "${pkgfile_to%/*}" git mv -f "${pkgfile_from}" "${pkgfile_to}" tag_list="$tag_list, $pkgarch" done tag_list="${tag_list#, }" git commit -m "db-move: ${repo_from} -> ${repo_to} (${tag_list}): ${pkgbase} " done for tarch in ${ARCHES[@]}; do if [ -n "${add_pkgs[${tarch}]}" ]; then arch_repo_add "${repo_to}" "${tarch}" ${add_pkgs[${tarch}]} arch_repo_remove "${repo_from}" "${tarch}" ${remove_pkgs[${tarch}]} fi done for pkgarch in ${ARCHES[@]}; do repo_unlock ${repo_from} ${pkgarch} repo_unlock ${repo_to} ${pkgarch} done