2 minutes
Navigating repositories with myrepos-utils
I’ve been using myrepos for a while - as someone who juggles a lot of repositories, both for personal projects and as a Fedora and CentOS packager, a ~/.mrconfig
synced via Nextcloud really makes checking out repositories consistently, on different computers, straightforward.
As the number of tracked repos grow, however, trying to remember where each repo is checked out gets a bit time consuming – and also, keeping the configuration file organized as well; mr register
on an existing repo would add the entry for that repo at the end of the file, and I was previously resorting to editing the file by hand to get it sorted - with a varying degree of success.
Here’s a very simplified version of how my repositories are organized:
tree ~/src/
/home/michel/src
├── fedora
│ └── folly
├── github
│ └── folly
├── gitlab
│ └── blog
└── sourcehut
└── ansible
Note that there are two repositories named folly
: one for the upstream source code, and one for the Fedora dist-git
repo that controls its packaging.
After one too many times finding myself doing grep repo ~/.mrconfig
, I decided to write a tool to help. It’s reasonably simple, thanks to myrepos
using an INI file for its configuration that Python’s configparser
handles perfectly fine.
Behold myrepos-utils; it currently provides two commands:
find
takes a query consisting of one or more strings and spit out the repositories matching themsort
sorts~/.mrconfig
so it’s easier to read (as a byproduct it also reindents it)
So with our example layout,
$ mr-utils find folly
/home/michel/src/fedora/folly
/home/michel/src/github/folly
$ mr-utils find fed folly
/home/michel/src/fedora/folly
$ cd $(mr-utils find git folly)
$ pwd
/home/michel/src/github/folly
Hey presto!
Chain-loading multiple .mrconfig
files not supported yet, and conversely, filtering out repositories that are not checked out yet is also not supported yet (but trivial to add). But so far this has really simplified my daily workflows!
Coming soon to a Fedora mirror near you.
This post is day 18 of my #100DaysToOffload challenge. Visit https://100daystooffload.com to get more info, or to get involved.
Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~michel-slm/public-inbox@lists.sr.ht [mailing list etiquette]
Posts are also tooted to @michel_slm@floss.social
Comments
You can use your Mastodon account to reply to this post.
Reply