Etckeeper to świetne narzędzie do śledzenia zmian w plikach konfiguracyjnych w /etc
. Wyróżnia się kilka kluczowych rzeczy. Może być używany z szeroką gamą VCS: git, mercurial, darcs lub bzr. Automatycznie zatwierdza także codziennie i za każdym razem, gdy instalujesz, usuwasz lub aktualizujesz pakiet. Śledzi także uprawnienia do plików i metadane własności użytkowników / grup.
Chciałbym również trzymać moje „pliki kropkowe” w moim katalogu domowym również pod kontrolą wersji, najlepiej bazar. Czy ktoś wie, czy do tego celu istnieje narzędzie takie jak etckeeper?
Najgorszy przypadek, wyobrażam sobie, że proste zadanie cron działa bzr add && bzr ci
raz lub dwa razy dziennie wraz z dodawaniem ~/Documents
, ~/Music
itp do .bzrignore
Ktoś już robi coś podobnego w skrypcie?
Chociaż wolałbym bazar, inne opcje mogą być interesujące.
źródło
bzr
z pewnością nie jest to dobra droga w 2015 r.Odpowiedzi:
Nie wiedziałem, czy coś takiego to zrobiło, więc pobrałem trochę kodu, aby osiągnąć dokładnie to, czego chcesz, korzystając z mojego repozytorium tutaj: http://github.com/robertmassaioli/config-files
Mam plik z informacją, gdzie należą wszystkie pliki, a program generator_links po prostu je tam umieszcza. Jeśli wiesz, co robisz i potrafisz skompilować kod Haskell, jest to naprawdę proste i łatwe. Ostrzegam jednak, że tak naprawdę powstał na własny użytek.
źródło
Cóż, poszedłem dalej i zrobiłem to ręcznie, dopóki nie znajdę lepszego rozwiązania. Równie dobrze mógłbym wyjaśnić, co zrobiłem.
Najpierw zrobiłem
bzr init ~
, ale następną rzeczą byłobzr ignore "*"
. Zdecydowałem, że nie chcę mieć kontroli nad wersją. To po prostu nie było tego warte, szczególnie gdy weźmiesz pod uwagę, że istnieją pewne rzeczy, których naprawdę nie powinieneś trzymać w VCK jak klucze. Więc musiałem miećbzr add
określone pliki, które chciałem. Możesz także dodać wyjątki do.bzrignore
. Przydatne są tam również wyrażenia regularne w języku Python. Na razie utrzymuję ją dość szczupłą. Jeśli wszystko pójdzie dobrze, dodam wszystko~/.config
i~/.gconf
zbyt.Napisałem też szybki skrypt, który uruchamiam jako zadanie crona. Sprawdza, czy pliki się zmieniły, a jeśli tak, następuje automatyczne zatwierdzenie:
źródło
Zamieniłem cały
~
katalog w repozytorium Bazaar. Przechowywanie metadanych nie stanowi problemu dla plików w katalogu domowym: wszystko jest własnością tego samego konta i grupy ibzr
już przechowuje bit wykonania.Ręcznie dodaję do niego „interesujące” pliki (nie chcę, aby moja kolekcja muzyki lub pamięć podręczna firefox była pod kontrolą wersji), ale jeśli chcesz zautomatyzować to za pomocą skryptu, myślę, że jest to proste rozwiązanie wykonywanie
bzr add && bzr ci
wybranych katalogów lub danych wyjściowychfind
polecenia wystarczy do wykonania zadania.źródło
Trzymam moje pliki zsh i vim w git, umieszczam na github, w różnych repozytoriach:
na przykład dla zsh utworzyłem „.zsh” i wstawiłem do niego zshrc i zshenv, a także skrypt, który łączy zshrc z ~ / .zshrc i zshenv z ~ / .zshenv, coś takiego.
ja również
dla .vim jest prawie taki sam, z tym wyjątkiem, że używam submodułów do wtyczek z patogenem, więc dodałem to w init.sh
a kiedy chcę dodać wtyczkę vima, robię to
na przykład.
ok, wymagałoby to trochę pracy, jeśli masz więcej niż kilka kropkowych katalogów, którymi chcesz zarządzać, ale nic nie stoi na przeszkodzie, aby umieścić je wszystkie w tym samym katalogu lub oddzielić od działań (włączone dla wszystkich edytorów graficznych, jeden dla działania w sieci…) lub mniej więcej. zresztą tak właśnie zrobiłem, więc tylko moje dwa centy :).
źródło
Używam rozwiązania, które nie jest automatyczne, jak etckeeper (muszę ręcznie zatwierdzić), ale działało dobrze dla mnie. Nie jest tak rozwinięty, jak lubię, ale działa.
Napisałem własne narzędzie podobne do GNU Stow , ponieważ stow nie zrobił wszystkiego, co chciałem. Nazywam to Stow in Home . Po uruchomieniu szuka katalogu o nazwie „HOME”. Następnie bierze wszystko z tego katalogu i dowiązuje symbolicznie do odpowiedniej lokalizacji w $ HOME, tworząc w razie potrzeby katalogi. Przetłumaczy także nazwy plików - jeśli plik zaczyna się od „_”, zostanie zastąpiony przez „.”. Zrobiłem to, ponieważ ładniej jest edytować moje pliki kropek, gdy nie są ukryte (domyślnie zobacz je na listach katalogów). Następnie umieściłoby je w nazwie, której oczekuje ich aplikacja.
Mam więc kilka repozytoriów git dla mojej konfiguracji. Umieszczam w nich tylko pliki kropkowe, które osobiście edytuję. Zaletą tego jest to, że mogę mieć repozytorium plików kropek, które mogę udostępniać innym (takim jak moja konfiguracja Emacsa) i jedno dla innych, które są prywatne (powiedzmy, moja konfiguracja ssh, z nazwami hostów i takimi do pracy). Łączenie symboliczne z funkcją chowania w domu stawia wszystko we właściwym miejscu, ale kontrola źródła dla każdego może być osobna.
To zadziałało dla mnie dobrze. Naprawdę nie ma powodu, dla którego nie mogłem skonfigurować czegoś, aby automatycznie wykonywać zatwierdzenia. Lub przenieś wszystkie pliki kropek do odpowiednich repozytoriów i nadal używaj stow w domu. Ale tak właśnie robiłem.
źródło
Nie możesz dodać
dot files
do repozytorium używanego w Etckeeper?źródło
/etc
?Zrobiłem to, kopiując wszystkie moje pliki dot, które lubię mieć pod kontrolą źródła do folderu o nazwie „dotfiles” w moim katalogu / home /. Oczywiście oznacza to przechowywanie duplikatów i kopiowanie tam, gdzie to konieczne, ale uważam, że jest to dla mnie najłatwiejsze rozwiązanie.
źródło
Trzymam moje pliki w podkatalogu i tworzę dowiązania symboliczne. Mam skrypt, który to automatyzuje. Możesz to sprawdzić na stronie http://code.google.com/p/samking-config-files/source/browse/
źródło