W Gentoo narzędzie do zarządzania wywołanymi przez pakiet zmianami w / etc (zwanym dispatch-conf) obsługuje rcs do śledzenia zmian, ale to nie jest tak naprawdę potężne.
Mam tendencję do wersjonowania mojego / etc poprzez git
, szczególnie, że używając różnych gałęzi mogę utrzymać mój / etc tak podobny, jak to możliwe, w różnych dystrybucjach, jak to możliwe, jednocześnie utrzymując jak najwięcej rzeczy w jednym miejscu, jak to możliwe (dla niektórych obszarów, które najwyraźniej zawodzą, konfiguracja apache na przykład różni się w zależności od dystrybucji). Działa to tak:
Mam moje master
repozytorium z moimi domyślnymi plikami konfiguracyjnymi. Teraz nawiązuję kontakt z nową dystrybucją, więc tworzę nową gałąź na podstawie mojej master
gałęzi na podstawie nazwy dystrybucji (w tym przykładzie debian). Debian przechowuje plik konfiguracyjny w innej lokalizacji niż moja, master
więc robię git mv file new_loc
. I wszystko w porządku. Przełączam się z powrotem master
i zmieniam ten plik, ponieważ dodałem jakąś konkretną dyrektywę config, kiedy scalam master
z moją debian
gałęzią, przenoszony plik jest zmieniany, więc mogę w zasadzie po prostu zmienić większość rzeczy w moim master
oddziale i po prostu scalić zmiany w mojej „dystrybucji” gałęzie (zwykle są one raczej połączeniem gałęzi dystrybucji i gałęzi celu, serwer debian ma pewne różnice w stosunku do stacji roboczej debian, ale funkcje nadal działają).
Tak więc w zasadzie mam „ogólną konfigurację” master
i (mówiąc to w obiektowych terminach programistycznych) dziedziczę je do moich gałęzi (które również mogą dziedziczyć od siebie).
Poza tym git
mechanizmy zatwierdzania „cherry-pick” (w tym przypadku zmiany w / etc /) były dla mnie bardzo pomocne w czasach, gdy potrzebowałem tylko części określonej konfiguracji.
A teraz niektóre z twoich pomysłów:
- Gdybym potrzebował większej integracji z menedżerem pakietów, prawdopodobnie użyłbym do tego skryptów opakowujących (na razie nie).
- traktowanie wcześniejszych wersji jako gałęzi działałoby dobrze
git
, jest to po prostu kolejna gałąź, do której czasami się scalasz (częściowo)master
- Lista ignorowanych plików w git to plik .gitignore w repozytorium, który jest objęty.