#!/bin/bash
if [ -z "$1" ]
then
echo "Please provide git repository url as an argument for this script."
exit 1
fi
regex='(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]'
if [[ $1 =~ $regex ]]
then
basename=$(basename $1)
reponame=${basename%.*}
curl -X 'POST' 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' \
--insecure \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{ "clone_addr": "'"$1"'", "issues": false, "labels": false, "lfs": false, "mirror": true, "mirror_interval": "96h0m0s", "private": false, "repo_name": "'"$reponame"'", "pull_requests": true, "releases": true, "repo_owner": "githubpublic", "service": "git", "wiki": true}'
else
echo "Invalid URL"
exit 1
fi
You can adjust it as needed and as for why I have --insecure flag, I have a direct network cable between my PC to the server, so encryption or HTTPS is not needed here. This is probably my favorite command, because I would write above as .sra.sh in home directory and then alias the .bashrc to make a sra command by adding alias sra=/home/{your user account}/.sra.sh in .bashrc and from there, anytime I have an interesting repository that I want to archive, I simply run sra {git url} and that's it. It also specify the mirror interval manually for 4 days interval rather than every 8 hours that would've needlessly spam the git server.
This is something I rely on everyday both as developer and system admin, I would maintain a different supply chain and prevent a supply chain attacks by generating my own package feeds/registry automatically from Gitea/Forgejo.
Edited to Add:
I noticed this community is Powershell, here the powershell version of above:
Probably this script:
You can adjust it as needed and as for why I have
--insecure
flag, I have a direct network cable between my PC to the server, so encryption or HTTPS is not needed here. This is probably my favorite command, because I would write above as.sra.sh
in home directory and then alias the.bashrc
to make asra
command by addingalias sra=/home/{your user account}/.sra.sh
in.bashrc
and from there, anytime I have an interesting repository that I want to archive, I simply runsra {git url}
and that's it. It also specify the mirror interval manually for 4 days interval rather than every 8 hours that would've needlessly spam the git server.This is something I rely on everyday both as developer and system admin, I would maintain a different supply chain and prevent a supply chain attacks by generating my own package feeds/registry automatically from Gitea/Forgejo.
Edited to Add: I noticed this community is Powershell, here the powershell version of above: