Używam Gentoo Linux i ma dość złożoną konfigurację. Moje pytanie, czy mądrze jest używać git do kontroli wersji plików konfiguracyjnych?
Mam kilka repozytoriów git w moim domu, domyślam się, że jeśli wstawię / home / ** do mojego .gitignore, nie spowodują one problemów.
Aktualizacja wyjaśnienia:
Czy to mądra metoda używania git do kontroli wersji plików konfiguracyjnych na poziomie systemu w katalogu głównym „/”?
Odpowiedzi:
Krótka odpowiedź na twoje pytanie brzmi: tak .
Nie zawahałbym się polecić Git (lub innego oprogramowania do kontroli wersji) do śledzenia plików konfiguracyjnych. Od tego czasu byłem bardziej produktywny (szczególnie przy konfigurowaniu nowych instalacji) i mam większe zaufanie do moich plików konfiguracyjnych. Z kontrolą wersji, mam zapis tego, co dokonano zmian i popełnić wiadomość zapewnia powód dlaczego zmiana została dokonana. Jeśli zmiana ma niezamierzone skutki uboczne, mogę łatwo przejrzeć dziennik / historię, aby zobaczyć, jakie zmiany spowodowały te skutki.
Osobiście uważałbym, aby nie śledzić wszystkich plików w
/
katalogu głównym. Lista ścieżek do zignorowania może stać się duża i niewygodna. Wolę przechowywać każdy logiczny zestaw plików we własnym repozytorium.Ręcznie używam Git do śledzenia moich osobistych plików konfiguracyjnych / startowych, np. Konfiguracji Vima, funkcji Bash, aliasów itp. - podobnie do podejścia wymienionego w Jak śledzić $ HOME za pomocą git . Trzymam każdy zestaw plików we własnym repozytorium i używam dowiązań symbolicznych do katalogu domowego.
W przypadku plików konfiguracji systemu używam Git z Etckeeper do śledzenia plików w moim
/etc
katalogu.Wady
Jedną z kwestii, na którą należy uważać, jest to, że śledzone pliki zawierają twarde linki . Gdy Git jest używany do sprawdzania plików lub modyfikowania drzewa roboczego w inny sposób, odłącza pliki, a następnie ponownie je tworzy . Pełniejsze wyjaśnienie znajdziesz w Git, Dotfiles i Hardlinks .
Etckeeper
Etckeeper może być używany do przechowywania pełnej historii zmian dokonanych w / etc. Śledzi metadane plików, których systemy kontroli wersji zwykle nie obsługują, ale jest to ważne dla
/etc
, na przykład dla uprawnień/etc/shadow
.Łączy się z menedżerami pakietów, takimi jak apt i yum, i (w domyślnej konfiguracji) uruchamia przed i po instalacji, aby wszystkie zmiany
/etc
były śledzone.Jeśli pakiet zostanie zainstalowany lub usunięty, wszystkie niezatwierdzone zmiany w / etc zostaną zatwierdzone przed operacją pakietu, tak aby były dwa zatwierdzenia:
Użyłem go z dystrybucjami opartymi na Debianie i Red Hacie i wiem, że obsługuje zarządzanie pakietami Arch. Nie mogę powiedzieć, ile automatyzacji dodałoby to do systemu Gentoo, ale dostępny jest pakiet .
Obsługuje także wypychanie plików konfiguracyjnych do zdalnego repozytorium (które oczywiście powinno być prywatne).
Konfiguracja
Po zainstalowaniu pakietu może być konieczne jego skonfigurowanie (
/etc/etckeeper/etckeeper.conf
), np. W systemach Ubuntu domyślny system kontroli wersji zmienia się z Git na Bazar. Możesz także chcieć wyłączyć codzienne automatyczne zatwierdzanie .Codzienne automatyczne zatwierdzanie
Zmiany mogą być automatycznie zatwierdzane przez codzienne zadanie CRON . Może to być denerwujące, ponieważ repozytorium może być zaśmiecone wieloma automatycznymi komunikatami zatwierdzania.
Odkomentuję odpowiednią linię w
/etc/etckeeper/etckeeper.conf
:Zignoruj określone pliki
Edytować
/etc/.gitignore
aby określić pliki, które nie powinny być śledzone.Pierwszy bieg
Po skonfigurowaniu uruchom następujące polecenia:
Jeśli masz bieżący katalog
etc
, możesz uruchamiać regularnegit
polecenia, np.źródło
etckeeper
podczas codziennego zatwierdzania faktycznie sprawdzi najpierw, czy/etc
jest „nieczysty”, tzn. Czy ma nieprzypisane pliki. Jeśli nie, to się nie zatwierdzi. Więc jeśli twój dziennik zatwierdzeń jest pełen dziennych zatwierdzeń, są szanse, że istnieją pliki, które zmieniają się codziennie, których nie dodałeś do.*ignore
pliku :-)bzr init
--__-- ... Polecam zawsze działaćetckeeper uninit -f
po instalacji.Korzystam z git, aby śledzić określone obszary mojego katalogu domowego. Osobiście nie podążałbym ścieżką śledzenia katalogu głównego, ale muszę powiedzieć, że podziwiam twoje ambicje. :)
Być może ta kolekcja doświadczeń może dać ci lepsze pojęcie o tym, w co się pakujesz:
efekty zainicjowania repozytorium git na głównym katalogu Linux 3 :)
Przepraszam za „odpowiedź”, zamiast po prostu zamieścić link w komentarzu; jednak za mało powtórzeń, ale chciałem wejść.
Edytować
Łał! Bardzo ładna odpowiedź autorstwa @AnthonyGeoghegan. Wierzę, że nie jest to tak trudna walka, jak ją pierwotnie przewidywałem.
źródło
Używam również
git
do przechowywania i konserwacjidotfiles
, ale wgit bare repository
. Szczegółowy przewodnik można znaleźć tutaj . Korzystam z dwóch repozytoriów, jednego dla moich plików dotfiles o nazwiemyconf
i jednego dla plików dot o nazwie rootrootconf
.Ponadto możesz używać obu konfiguracji na wielu komputerach, różnych dystrybucjach systemu Linux lub maszynach wirtualnych: po prostu utwórz nową gałąź dla odrębnej konfiguracji. Następnie unikasz pomieszania kodu w tym samym pliku (np.
.bash_alias
): Nie irytujesz, jeśli chcesz sprawdzić bieżącą maszynę; nie potrzebujesz żadnych linków!źródło