When I fork a repo, I checkout out my fork as origin and add a remote for the upstream repo as upstream. I hate having a fork where the default (usually called master) branch is way out of date, though. So this gets run from a scheduler to walk through checked out repos under a couple of directories in $HOME/dev
, figure out the default branch, and sync that with the same-name branch in my fork.
The main interesting thing it does is to use a worktree. So it doesn't need to check out the whole repo again, but also doesn't disturb my main working repository. It also uses a unique temporary directory and a branch with the same name to do the sync, as I couldn't get it to work properly without creating a branch. I could swear I had made that work before (completely avoiding a branch name), but I can't for the life of me remember how. :D The tempname should be unique enough.