How I use Git
I host a few git
repositories on my own personal gitea
instance. The ones I use the most are...
bin
, for my scripts (including my.bash_profile
scriptcfg
, for my configuration filesNotes
, or my Obsidian notesOrchestration
, for my container and virtual machine solutions
There are also a few projects that I build myself...
neovim
multibg-wayland
Anyway, there's lots more repositories and not all of them are required on all of my machines. While i'm working on a machine i'll make changes in oneor many repositories, so before I shut that machine down i need to git add
, git commit
and git push
.
How This Script Helps
In my .bash_profile
script i set the environment variable REPO_CFG
to point to my repo.yaml
file (which is in my cfg
repository by the way). I also add this jdownie/repo
folder to my PATH
. There is an example of a repo.yaml
in this folder. For each repository, there's a code, a url and a local path to clone the repository into. There's also a list of hostnames that the repository is wanted on (which can be an empty list if the repository is wanted on all hosts; like bin
and cfg
for example).
With all of that in place, i can run the following commands across all of my repositories...
repo status
, list each repo with a count of "dirty" files against eachrepo lc
, stage and commit all files in each repo with a generic commentrepo fetch
,repo pull
andrepo push
repo sync
, pulls and pushes all repositories
This script makes it easy for me to run repo lc
and repo sync
before i shut a machine down. On my next machine I can run repo sync
to get my changes on the new machine.
If I want to remove a repo from a host. I can remove the hostname from that repositorie's hosts
list. Then i run repo prune
which does a lc
, a sync
and then removes the cloned folder.
Alternatively, i might move a repository. I change the url in repo.yaml
, and then run repo align
to update that repository's remote url.