diff --git a/README.md b/README.md index dc50343..8bf8ef9 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,10 @@ Running this script will convert an existing CentOS 8 system to Rocky Linux 8. Example script and configuration notes for keeping a public or private mirror in sync. +## [gcoarchive](./gcoarchive/) -- Mirrors git.centos.org and sources + +Scripts that help clone git.centos.org repos based on a list provided and its +accompanying dist-git sources. This assumes a /var/www/html/sources format for +sources. + +Only clones 8 and 9. Does not clone sig content. diff --git a/gcoarchive/gcoarchive_modules.sh b/gcoarchive/gcoarchive_modules.sh new file mode 100644 index 0000000..079a0f8 --- /dev/null +++ b/gcoarchive/gcoarchive_modules.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#set -x + +# Give it a git server as the first argument +# Give it a file path for the list as the second argument + +GITSERVER=${1} +LIST=${2} +TMPDIR=/var/tmp +for x in $(cat ${LIST}); do + pkgname="${x}" + echo "!!! ${pkgname}" + git clone --mirror "https://git.centos.org/modules/${pkgname}.git" "${TMPDIR}/${pkgname}.git" + git_ret_val=$? + if [ $git_ret_val -ne 0 ]; then echo "${pkgname}" >> /tmp/failures ; fi + pushd "${TMPDIR}/${pkgname}.git" || { echo "error"; exit 1; } + if git branch | grep -Eq '^ (c8|c9)'; then + git remote set-url origin "ssh://git@${GITSERVER}/modules/${pkgname}.git" + git push --mirror + ret_val=$? + if [ $ret_val -ne 0 ]; then echo "${pkgname}" >> /tmp/failures ; fi + fi + popd || { echo "error"; exit 1; } + if [[ -d "${TMPDIR}/${pkgname}.git" ]]; then + rm -rf "${TMPDIR}/${pkgname}.git" + fi + echo "sleeping..." + sleep 10 + unset pkgname +done diff --git a/gcoarchive/gcoarchive_rpms.sh b/gcoarchive/gcoarchive_rpms.sh new file mode 100644 index 0000000..01a1ea7 --- /dev/null +++ b/gcoarchive/gcoarchive_rpms.sh @@ -0,0 +1,40 @@ +#!/bin/bash +#set -x + +# Give it a git server as the first argument +# Give it a file path for the list as the second argument + +GITSERVER=${1} +LIST=${2} +TMPDIR=/var/tmp +for x in $(cat ${LIST}); do + pkgname="${x}" + echo "!!! ${pkgname}" + git clone --mirror "https://git.centos.org/rpms/${pkgname}.git" "${TMPDIR}/${pkgname}.git" + git_ret_val=$? + if [ $git_ret_val -ne 0 ]; then echo "${pkgname}" >> /tmp/failures ; fi + pushd "${TMPDIR}/${pkgname}.git" || { echo "error"; exit 1; } + if git branch | grep -Eq '^ (c8|c9)'; then + for tag in $(git tag | grep -E 'imports/c(4|5|6|7)'); do git tag -d "${tag}" ; done + for tag in $(git tag | grep -E 'imports/c(8|9|8s|9s)-sig'); do git tag -d "${tag}" ; done + for branch in $(git branch | grep -E 'c(4|5|6|7)'); do git branch -D "${branch}" ; done + for branch in $(git branch | grep -E 'c(8|9|8s|9s)-sig'); do git branch -D "${branch}" ; done + git remote set-url origin "ssh://git@${GITSERVER}/rpms/${pkgname}.git" + git push --mirror + ret_val=$? + if [ $ret_val -ne 0 ]; then echo "${pkgname}" >> /tmp/failures ; fi + pushd /var/www/html/sources || { echo "error"; exit 1; } + echo "${pkgname}: Pulling sources" + wget -q --accept-regex="/sources/${pkgname}/(c8|c9)" -r "https://git.centos.org/sources/${pkgname}/" -np --cut-dirs 2 -R "*.html*" + mv git.centos.org "${pkgname}" + popd || { echo "error"; exit 1; } + fi + unset branch + popd || { echo "error"; exit 1; } + if [[ -d "${TMPDIR}/${pkgname}.git" ]]; then + rm -rf "${TMPDIR}/${pkgname}.git" + fi + echo "sleeping..." + sleep 10 + unset pkgname +done