About Archive Tags RSS Feed

 

Exporting github repositories to myrepos

16 January 2020 19:19

myrepos is an excellent tool for applying git operations to multiple repositories, and I use it extensively.

Given a configuration file like this:

..

[github.com/skx/asql]
checkout = git clone [email protected]:skx/asql.git

[github.com/skx/bookmarks.public]
checkout = git clone [email protected]:skx/bookmarks.public.git

[github.com/skx/Buffalo-220-NAS]
checkout = git clone [email protected]:skx/Buffalo-220-NAS.git

[github.com/skx/calibre-plugins]
checkout = git clone [email protected]:skx/calibre-plugins.git

...

You can clone all the repositories with one command:

mr -j5 --config .mrconfig.github checkout

Then pull/update them them easily:

mr -j5 --config .mrconfig.github update

It works with git repositories, mercurial, and more. (The -j5 argument means to run five jobs in parallel. Much speed, many fast. Big wow.)

I wrote a simple golang utility to use the github API to generate a suitable configuration including:

  • All your personal repositories.
  • All the repositories which belong to organizations you're a member of.

Currently it only supports github, but I'll update to include self-hosted and API-compatible services such as gitbucket. Is there any interest in such a tool? Or have you all written your own already?

(I have the feeling I've written this tool in Perl, Ruby, and even using curl a time or two already. This time I'll do it properly and publish it to save effort next time!)

| 2 comments

 

Comments on this entry

icon Paul Wise at 02:52 on 17 January 2020
https://bonedaddy.net/pabs3/

Once you have released it, please send a patch for the myrepos homepage to mention the software. I'd love to see it packaged for Debian too. If it were written in Perl we could probably have put it into myrepos instead btw :)

https://myrepos.branchable.com/

icon Steve Kemp at 07:30 on 17 January 2020
https://steve.fi/

I'll update here too, I guess tonight/tomorrow. Have some issues with it not working on my personal gitbucket installation but I think I know why now.