Myrepos: Alle meine Repositories
Table of Contents
Repository-Zentrale⌗
Dank VCSH habe ich all meine Dotfiles hübsch in Git-Repositories verpackt.
Das Einbinden eines einzelnen Repositories geht nun zwar schnell von der Hand,
aber wenn nun für vim
und mutt
und emacs
und und und … lauter
Repositories vorliegen wird es unbequem.
Auch das updaten (pull
) jedes einzelnen Repos ist sehr mühselig und damit
fehleranfällig.
Abhilfe schafft hier myrepos (kurz mr
),
dass es erlaubt Aktionen auf mehreren Repositories auszuführen.
Installation⌗
Wir installieren uns das Paket myrepos
via apt-get
oder yaourt
Installation unter Debian/Ubuntu:
sudo apt-get install myrepos
oder unter Arch Linux
yaourt -S myrepos
Basis-Konfiguration⌗
Wir legen eine Konfigurationsdatei mit dem Namen ~/.mrconfig
an mit folgendem
Inhalt:
[DEFAULT]
git_gc = git gc "$@"
jobs = 1
include = cat ~/.config/mr/config.d/*
Wenn nach allen Schritten die Konfiguration zuverlässig installiert können wir
die Anzahl der parallelen Jobs auf z.B. 4 erhöhen.
Nun legen wir folgende Verzeichnisse an:
mkdir -p ~/.config/mr/config.d
mkdir ~/.config/mr/available.d
In das Verzeichnis available.d
legen wir alle Konfigurationsdateien ab.
Eine solche Konfigurationsdatei enthält den Ort Zielort des Repositories
und auch die Anweisung, woher die Quelle kommt.
Die Datei für eine vim
-VCSH-Konfiguration könnte z.B. so aussehen:
Dateiname: vim.vcsh
[$HOME/.config/vcsh/repo.d/vim.git]
checkout = vcsh clone git@MEINGITSERVER:vim vim
Dabei kann myrepos vcsh oder direkt git oder auch subversion (u.v.m.) nutzen.
Nun linke (ln -s
) ich noch alle die Konfigurationsdateien nach available.d
,
die auch wirklich auf all meinen Systemen nutzen möchte.
Mit dem Aufruf
mr up
Aktualisiere (z.B. bei git: pull) ich nun alle Repositories, die ich via
myrepos verwalte. Somit kann ich beim Wechsel von Rechnern einfach meine
Konfiguration aktualisieren.
Auch pushen von allen Repositories ist möglich:
mr push
usw.
Myrepos in VCSH⌗
Auch die Konfiguration von myrepos selbst verwalte ich mit vcsh (und
wiederum mit Datei-Eintrag in myrepos), so dass sich auch beim Hinzukommen
von neuen Repositories ich diese auf meinen Geräten erhalte.
Neuer Rechner - einfacher Schritt⌗
Bei einem neuen Rechner sind nun extrem wenige Schritte notwendig:
- Installieren von vcsh und myrepos (gibt es zumeist im Paketmanager)
- Klonen des myrepos vcsh repositories (d.h.
vcsh clone git@MEINGITSERVER:mr mr
) - Klonen aller weiteren Repos via
mr up
Sonderfälle⌗
Auch einfache Programme (z.B. youtube-dl)
installiere (und update) ich via myrepos: Hierzu leg ich ich wieder eine
Konfigurationsdatei an (z.B. youtube-dl.git
) mit folgendem Inhalt:
[$HOME/.local/opt/youtube-dl.git]
checkout = git clone https://github.com/rg3/youtube-dl.git $HOME/.local/opt/youtube-dl.git
push = echo "No pushing to public repo"
Der push
Befehl wird hier explizit überschrieben und gibt bei mr push
einfach die
Nachricht aus, dass ich in dieses Repository nicht pushen möchte.
Fazit⌗
Myrepos ermöglicht das einfache und bequeme Verwalten und Nutzen von vielen
Repositories. Gerade das Updaten oder initiale Klonen wird damit deutlich
bequemer. Insbesondere im Zusammenspiel mit VCSH wird eine extrem komfortable
Verwaltung der eigenen Dotfiles (und mehr) möglich.