diff --git a/backup_am_github_repos_and_issues.sh b/backup_am_github_repos_and_issues.sh index 87b8c26a3051c6674b9a20af3c92b6830050886a..b2fbbfe177fd7b1600897fc21444358167e30229 100644 --- a/backup_am_github_repos_and_issues.sh +++ b/backup_am_github_repos_and_issues.sh @@ -72,11 +72,21 @@ until [ ${page} -gt ${maxpage} ]; do echo "############" if [[ -d "./${repo_name}" ]]; then echo "update repo: ${repo_name}" - cmd="git -C ./${repo_name} pull --recurse-submodules" # update local repo + backup_date="$( date +%d-%m-%Y_%k-%M-%S )" + cp -r ./${repo_name} ./${repo_name}.backup_${backup_date} + git -C ./${repo_name} fetch + if git -C ./${repo_name} merge; then + rm -rf ./${repo_name}.backup_${backup_date} + else + rm -rf ./${repo_name} + echo "clone repo : ${repo_name}" + cmd="git clone --recurse-submodules ${repo_url}" # create local repo + fi + # cmd="git -C ./${repo_name} pull --recurse-submodules" # update local repo else echo "clone repo : ${repo_name}" cmd="git clone --recurse-submodules ${repo_url}" # create local repo - fi + fi ${cmd} || fails+=("${cmd}") # remember fails fi done < <(curl -sS "${orgs_base_url}${org}/repos?page=${page}&per_page=${perpage}" | grep -e 'clone_url.*' | cut -d \" -f 4 | xargs -L1 echo) # HINT: use process substitution to remember $fails