Hey guys I made a CLI tool that might help you if you have a lot of git repositories in your computer.
The Problem
I recently got a new laptop which meant I had to move the 100+ repos I had in my old laptop. I couldn't simply move or copy all the repos because my old laptop was really slow. I thought I might as well just push all the repos to their remotes and then clone them from my new laptop, but then I realised it would be really tedious to cd
into each one of the repos, figure out which repo is clean or dirty, which repo is synced to its remote, and so on. So I decided to create a script to help me.
Enter sirup
sirup
will show you a JSON summary of all your git repositories. You could analyse the JSON using any standard tool to figure out the status of each repo. This helps you know which repos will need to be cleaned up. I personally like to use the interactive Node.js shell for this. Then you could move this JSON to another computer and generate the git repositories over there. In the process, you could also tweak this JSON so that in your destination computer, sirup
would pick up these tweaks and behave accordingly.
Here's the project on GitHub:
sirup
Summarise a directory of git repos. Regenerate them from the summary.
Requirements
- Python 3 at
/usr/bin/python3
- Git 2.22 or above
- Ensure that
~/.local/bin/
is in your$PATH
environment variable -
jq
(optional) so you can use some handy recipes shown below
Installation
Install and update
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mebble/sirup/main/scripts/install.sh | sh
Remove
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mebble/sirup/main/scripts/remove.sh | sh
Usage
Print the usage instructions by running:
sirup help
Output:
Usage: sirup <command> <args>
Commands
help Print these usage instructions
sum Summarise git repos and print the summary in JSON to stdout
--repos ./repos/dir The directory containing the git repos
--log [optional] Will output logs to stdout
gen Generate git repos from a summary file
--from ./sum/file Path to the summary file
--to ./dest/dir The destination directory where you want
…Hope this helps anyone who runs into a similar situation.
Top comments (1)
Damn that's a lot of repos! Nice little tool you made to help you out. I've never had this problem myself, but I've always been involved in fairly long lived projects so I'll only have a few active repos going at most at one time.
Interesting to see the pains other developers deal with and resolutions to them.