Some of my favorites:
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
Edited to Add: I noticed this community is Powershell, here the powershell version of above:
Nice! You are a person of many talents
The Cisco and Fortinet Ansible galaxy collections.
Documentation is top notch too.
Documentation is top notch too.
Nothing will make me love a solution more than it being well documented. Sounds simple, but saves so much time.
I’ve been a huge winget fanboy for a while now. I liked chocolatey prior to that, but it works so well with the os - which makes sense cuz it’s from Microsoft.
I love WinGet but I just wish there was support for Windows Server, without having to do a bunch of hacks
That’s a very good point. Must my dev work doesn’t involve a Windows server except for interacting with AD, I forget winget has that limitation. Hopefully they add that feature soon!