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 masterrepozytorium z moimi domyślnymi plikami konfiguracyjnymi. Teraz nawiązuję kontakt z nową dystrybucją, więc tworzę nową gałąź na podstawie mojej mastergałęzi na podstawie nazwy dystrybucji (w tym przykładzie debian). Debian przechowuje plik konfiguracyjny w innej lokalizacji niż moja, masterwięc robię git mv file new_loc. I wszystko w porządku. Przełączam się z powrotem masteri zmieniam ten plik, ponieważ dodałem jakąś konkretną dyrektywę config, kiedy scalam masterz moją debiangałęzią, przenoszony plik jest zmieniany, więc mogę w zasadzie po prostu zmienić większość rzeczy w moim masteroddziale 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ę” masteri (mówiąc to w obiektowych terminach programistycznych) dziedziczę je do moich gałęzi (które również mogą dziedziczyć od siebie).
Poza tym gitmechanizmy 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.