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:
#!/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 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:
param ( [Parameter(Mandatory=$true)] [string]$gitRepoUrl ) function Test-Url($url) { $regex = "(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]" return $url -match $regex } $basename = Split-Path $gitRepoUrl -Leaf $reponame = [System.IO.Path]::GetFileNameWithoutExtension($basename) $headers = @{ 'accept' = 'application/json' 'Content-Type' = 'application/json' } $body = @{ 'clone_addr' = $gitRepoUrl '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 } | ConvertTo-Json Invoke-RestMethod -Uri 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' -Method POST -Headers $headers -Body $body -SkipCertificateCheck
Nice! You are a person of many talents