Dotfile Management Tool, um zu steuern, welche Dotfiles bei der Arbeit und zu Hause sind

Ich habe mehrere verschiedene Umgebungen, in denen ich arbeite, und mehrere verschiedene Sätze von Punktdateien, die ich in jeder verwende.

Anwendungsfall

Betrachten Sie das Beispiel (vereinfachtes Szenario). Ich habe 3 Umgebungen:

  • Arbeitsplatz
  • Arbeitsserver
  • Home-Desktop

und ich habe einige Punktdateien, die ich in verschiedenen Umgebungen replizieren möchte.

  • .tmuxrc--> Work-Desktop , Work-Server , Home-Desktop
  • .fish/--> Home-Desktop
  • .subversion/--> Arbeitsplatz , Arbeitsplatzserver
  • .zshrcJeweils unterschiedlich für Work-Desktop , Work-Server und Home-Desktop
  • eine .vimrcfür Work-Desktop und Work-Server und eine .vimrcfür Home-Desktop

Später möchte ich die Sache vielleicht so ändern, dass ich eine .vimrcfür überall habe (wenn ich mein Homeone aktualisiere, um Vundle zu verwenden, und vims Python-Kompatibilität bei der Arbeit unbreake).


Anforderungen:

  • Muss die Angabe unterschiedlicher Dateien für unterschiedliche Umgebungen unterstützen

  • Muss einige Dateien unterstützen, die in einigen Umgebungen gemeinsam genutzt werden

  • Muss vermeiden, dass ich Dateien manuell kopieren und sie dann wieder symbolisch verlinken muss

  • Sollte bei Auslösung zur Versionskontrolle verpflichtet werden

  • Sollte aus der Versionskontrolle ziehen, wenn ein Update aufgerufen wird.

  • Sollte Git unterstützen

  • Wäre schön, wenn es andere Versionskontrollen unterstützen würde (wie SVN und Hg)

  • Wäre schön, wenn seine Konfigurationsdatei zum Festlegen, welche Dateien in welche Umgebungen gelangen, eine Liste von Hostnamen enthalten würde, aber es gibt andere Lösungen dafür.

  • Es ist egal , ob es von irgendetwas abhängig ist (Viele .dotfile-Verwaltungstools, die ich mir angeschaut habe, beworben, dass sie von nichts anderem als der Shell abhängig sind)

  • Muss auf allen Linux-Varianten funktionieren (aber ich interessiere mich nicht wirklich für Mac).

  • Muss kostenlos und Open Source sein.

Ich habe mir RCM genau angesehen , bin mir aber nicht sicher, ob es meine Anforderungen an die Versionskontrolle erfüllt. Ich habe mir auch GNU STOW und Dotbot kürzer angesehen .

Antworten (2)

Es gibt vcsh , das mit mehreren Git-Repos, die Ihr Zuhause als Arbeitsverzeichnis haben und deren Git-Verzeichnisse getrennt sind, eine verrückte Magie vollbringt. Aber es scheint zu komplex für meine Bedürfnisse zu sein, ich halte einfach ein Git-Repo an einer anderen Stelle auf meinem System und verlinke manuell, was ich brauche.

Das Arch-Linux-Wiki hat einen großartigen Artikel über Punktdateien .

Diese Antwort gibt keine direkte Antwort darauf, ob das Programm meine aufgeführten Anforderungen erfüllt oder nicht
Ich habe es nicht benutzt, aber es scheint mir, dass es würde. Sie müssten Ihre Dotfiles in verschiedenen Repositories organisieren, wie es in der Readme steht. Dann können Sie auswählen, welche Repos in welche Maschinen gehen. vcsh hilft Ihnen, Aktionen auf allen Repos auf einem Computer auszuführen, und vcsh pullaktualisiert so Ihre Punktdateien.
Die Readme enthält nur sehr wenige Informationen. Die Dokumentation macht es ein wenig klarer, wie man es benutzt.
hier auf Software Rec SE. Wir bevorzugen sehr stark Antworten, die aus Erfahrung stammen.
Hier im Internet bevorzugen wir nette Leute. Es ist, was ich habe. Wenn es dir nicht gefällt, geh weiter.
Hey Alter, entspann dich, ich dachte, du wärst neu und wusstest es nicht, also dachte ich, ich würde dich informieren (anstatt abzulehnen). Ich hätte die Meta-Links posten sollen, war aber in Eile. Erfahrung ist nicht erforderlich, wird aber bevorzugt. Siehe diese Beiträge: meta.softwarerecs.stackexchange.com/questions/86/… meta.softwarerecs.stackexchange.com/questions/326/… und immer: meta.softwarerecs.stackexchange.com/questions/356/… Ich will nicht beabsichtigen, offen schroff zu kommen (ich denke, ich habe es getan)

Warum nicht einfaches Bash- oder Python-Scripting verwenden? Sie könnten in Ihrem VCS jeweils eine und eine Variante jeder der .files haben , die Sie steuern home.müssen , alles in einem einzigen Verzeichnis, und zwei einfache Skripte save_env und set_env plus eine .env-Datei auf jedem System:wdesk.wserv.

  • set_envwürde die .env setzen und die .files mit der env überschreiben . Versionen und Sie möchten wahrscheinlich ein erneutes Einlesen von ihnen mit source oder dem Äquivalent für die betreffende Datei auslösen .
  • save_envwürde den .env -Wert verwenden, um die entsprechende env zu überschreiben . Dateien mit den aktuellen. Sie können dann alle Änderungen überprüfen und in Ihr VCS übernehmen.

Gehen Sie Ihre Anforderungen durch:

  • Unterstützt fast alle Dateien, die Sie benötigen
  • Unterstützt gemeinsam genutzte Dateien
  • Vermeidet 95% der manuellen Operationen
  • Kann bei Bedarf an VCS übergeben/pullen
  • Könnte eine Liste von Hostnamen aufnehmen
  • Funktioniert auf allen Linux-Varianten sollte auch auf Mac funktionieren
  • Kostenlos - Open Source, wenn Sie möchten.
  • Flexibel
  • Schnell
  • Einfach nicht schön und Sie müssen ein wenig mehr Arbeit machen, um es einzurichten.
Siehe Anforderung 3: Muss vermeiden, dass ich Dateien manuell kopieren und sie dann per Symlink zurückverlinken muss Eigene zu erstellen ist immer eine Option für fast alle Dinge, aber ich würde es lieber nicht tun.
manuell ein Skript, das es für Sie erledigt, ist nicht manuell - ein eigenes zu erstellen ist normalerweise der beste Weg, wenn Sie benutzerdefinierte Anforderungen haben.
Sie müssen dem Tool sowieso mitteilen, wo Sie welche Dateien haben möchten. Warum also nicht diese Informationen in ein Skript einfügen? Das ist ungefähr der gleiche Arbeitsaufwand.