myślę, co chcesz może być podobny do tego, co robiłem ...
Zrób katalog w domu nazywany .host_configs/
. To jest kontrolowana wersja. Lub w moim przypadku mieszka w specjalnym folderze na centralnym komputerze, a ja go wyrzucam na dowolnej nowej maszynie. Wewnątrz niego tworzysz folder dla każdego hosta, dla którego chcesz mieć różne konfiguracje. Folder dla każdego hosta powinien mieć nazwę po krótkiej nazwie hosta dla tego komputera. Więc w git repo masz:
.host_configs/
homecomp1/
girlfriendcomp1/
workcomp1/
workcomp2/
W każdym folderze konkretnego gospodarza, umieścić .vimrc, .irbrc, etc., pliki konfiguracyjne dla tego konkretnego pudełka. A także, w każdym folderze hosta utworzyć plik o nazwie .[SHORT_HOST]_rc
. Na przykład, jeśli twój komputer nazywa się "zdrowy", to plik o nazwie .sane_rc ... Ten plik będzie zawierał linie, które normalnie będą w .bashrc, które są unikalne dla tego hosta. Na przykład, jeśli jest to mac i potrzebuje alias ls='ls -GF'
zamiast alias ls='ls --color=auto'
, który działa dla większości maszyn nix dla ls
z kolorami, umieść tę linię w .[SHORT_HOST]_rc
dla tego komputera, wraz z wszelkimi specjalnymi funkcjami, deklaracjami itp., Które normalnie .bashrc lub .profile itd. (lub .zshrc, .tschrc, w zależności od przypadku). Zatem wersja kontrolowane ~/.host_configs/
folderu wygląda następująco:
.host_configs/
homecomp1/
.homecomp1_rc #special shell configs for this hostname
.vimrc #you know the rest
.irbrc
.Xresources
girlfriendcomp1/
.girlfriendcomp1_rc
.vimrc
.bubblebathrc
workcomp1/
.workcomp1_rc
.bashrc
.vimrc
workcomp2/
.workcomp2_rc
.bashrc
.vimrc
używam wszystko jedno Barebone $ HOME/.bashrc (lub ~/.tshrc etc) na wszystkich moich komputerach. Biorę tylko podstawowy, który pochodzi z danej dystrybucji i przenosimy całą konfigurację specyficzną dla hosta do pliku .host-configs/[SHORT_HOST]/.[SHORT_HOST]_rc
.
umieścić to na dole (z $HOME/.bashrc
):
export SHORT_HOST="sane"
for file in `find ~/.host_configs/$SHORT_HOST -name ".*"`
do
ln -s $file `basename $file`
done
source ~/`.$SHORT_HOST`_rc
(wyszukuje wszystkie z DOT-plików dla hosta i robi dowiązania w domu do folderu ~/.host_configs/foo_host
). Twoje pliki dot są w normalnym położeniu, ale są dowiązane symbolicznie do kontroli wersji. Powyższe źródła są również źródłem wszystkich linii w pliku [$SHORT_HOST]_rc
do .bashrc
Możesz cofnąć do git z folderu ~/.host_configs/
po każdej zmianie.
Tak właśnie wygląda w powłoce, co jest prawdopodobnie wszystkim, czego potrzebujesz, ale jeśli potrzebujesz innych funkcji, napiszę coś, co będzie korzystało z tych samych zasad (pozyskiwanie zewnętrznego pliku .rc do .bashrc i dowiązanie wszystkich konfiguracji pliki do folderu kontroli wersji strukturalnej) w coś bardziej uniwersalnego/mniej brzydkiego niż shell. Więc zamiast powyższego w .bashrc, nie może być:
export SHORT_HOST="sane"
ruby ~/import_conf.rb $SHORT_HOST
... i napisać import_conf.rb zrobić bardziej kompleksowe zarządzanie conf, jak umieszczenie konkretny plik konfiguracyjny w katalogu oprócz jakiegoś domu, lub obsługa folderu konfiguracyjnego, takiego jak .ssh /, .subversion/itd. To, co robię, jest dla mnie całkiem elegancka, ale mogą istnieć lepsze rozwiązania. Dropbox z kilkoma kreatywnymi dowiązaniami symbolicznymi to także doskonały pomysł, choć polegasz na stronie trzeciej i musisz być w środowisku graficznym. Zwróć też uwagę na niespójności między tym, co możesz zrobić za pomocą dowiązań symbolicznych + Dropbox w Linuksie i skrótów + Dropbox w Windows, jeśli zaimplementujesz coś, co chce grać w systemie Windows.
Przez golly , tak, ludzie z całą pewnością używają kontroli wersji dla plików konfiguracyjnych. Widzę to szczególnie dla plików konfiguracyjnych menedżera okien, ale po prostu wyszukuj w GitHub dla "config" i zobacz, co otrzymasz. –