While I was standardising my dotfiles I wanted to have an easy and quick way to update my projects so repositories weren't out of date when I wanted to use them (for example when being offline on the train), and I didn't want to go through them by hand every time. Same thing with new projects: I just wanted them to appear on my machines without having to think about cloning them everywhere.
The little script called
update_repos was born.
It takes a file
~/.git_repos which configures what repositories you want to follow. Yes, it's Git only at the moment, as I stopped using Mercurial (hg) for my own projects, and tmuxinator takes care of updating the projects at work when I open the relevant configuration (which automatically opens the files in vim, which completely replaced pycharm for my Python development needs).
A typical ~/.git_repos files looks like this:
# Homedir as workspace: workspace= group= ssh://myserver/srv/git/mydocs.git group=.dot email@example.com:aquatix/dotfiles.git ssh://myserver/srv/git/privdotfiles.git workspace=workspace/projects group=github firstname.lastname@example.org:aquatix/ns-api.git #email@example.com:aquatix/dotfiles.git firstname.lastname@example.org:aquatix/dammit.git
The first lines result in a repository
mydocs in ~/mydocs; the second group clones or updates
privdotfiles in ~/.dot It then continuous to a bunch of repositories in ~/workspace/projects/github. Comments can be added by a simple # at the start of the line. Workspaces and groups are parsed from top to bottom, so in the example above, the first two groups are in the same workspace (homedir root) and the third group in ~/workspace/projects; adding another group below would make another subdir inside ~/workspace/projects.
Running it looks like this:
When a repository has outstanding changes, a notification shows that status:
It's very useful to me, so I hope it's useful to some of you too :)