Używam Gita głównie do celów programistycznych, ale właśnie zdałem sobie sprawę, że mogę go użyć do przechowywania wersji plików ustawień, które mam w mojej instalacji Ubuntu.
Moja proponowana konfiguracja to:
git init
repo w/
Dodaj
.gitignore
na/
który ignoruje wszystkie pliki z wyjątkiem określonych ustawień Chcę śledzić.Na przykład
.gitignore
może zawierać ( źródło ):## Ignore everything... * ## Except... !/etc/default/tlp !/etc/crontab
Ilekroć zmieniam te ustawienia niskiego poziomu, mogę je śledzić.
Czy jest coś, co może pójść nie tak z tą konfiguracją? Czy jądro zawsze musi /
mieć tylko określone foldery? Czy to zakłóci funkcjonowanie jakiejkolwiek aplikacji?
~
pliki ustawień katalogu domowego, a nie/
pliki/etc/crontab
na moim laptopie są zdecydowanie moje, ale rozumiem, co masz na myśli.etckeeper
i twórz kopie zapasowe.Odpowiedzi:
Odpowiedź na oba pytania brzmi: nie, możesz utworzyć dowolny katalog w
/
. jedyne, co może się zdarzyć, to pewne problemy z uprawnieniami z pewnymi ścieżkami przestrzennymi.Jednak lepiej jest przechowywać
.git
katalog gdzie indziej, coś wygląda jak:Przeczytaj tutaj .
źródło
Faktycznie, prawdopodobnie chcesz, aby pliki konfiguracyjne w kontroli wersji
/etc/
(nie dbają o wpisów z katalogu głównego/
, zwłaszcza jak katalogiproc
lubusr
lubbin
w/
), więc może chcesz zainstalowaćetckeeper
pakietMożesz także kontrolować wersję niektórych wybranych podkatalogów (jak
/usr/share/applications/
wspomniano).Jednak nie zadzieraj z systemem zarządzania pakietami Ubuntu . Być może najczęściej powinieneś wykonać kopię zapasową bieżącej listy zainstalowanych pakietów.
źródło
/usr/share/applications
ponieważ od czasu do czasu się z nimi bawię.Posiadanie repozytorium git w / działa dobrze, z tym wyjątkiem, że utrudnia to zauważenie, gdy masz problemy z repozytorium git na niższym poziomie, ponieważ będzie on odpowiadał na wszystkie z nich.
Uwaga: mniej pracy i prawdopodobnie bardziej użyteczne jest użycie „debsums”
Który pozwoli ci szybko wykryć (większość) zmian w plikach binarnych lub plikach konfiguracyjnych.
Przykładem zainstalowanych pakietów są te, które różnią się od pakietów nadrzędnych.
I możesz uzyskać listę zmienionych plików konfiguracyjnych za pomocą:
Zwróć uwagę, w jaki sposób przeglądarka chromowa jest niepoprawnie spakowana i zawiera plik na liście plików pakietu, który nie istnieje.
Wykorzystuje to dane dpkg i unika dużego katalogu / przepływu pracy.
źródło
/home/$USER
że.git
in/
odpowie na każde polecenie git podane dla repo in,/home$USER
a nie dla tego [.gir
pliku] w/home/$USER
....git
katalogu znajdującego się wyżej w drzewie, wystarczycd
przejść do niego lub do jego podkatalogu, który nie ma.git
folderu (to znaczy zwykłego katalogu)Zbadałem więc inne odpowiedzi i znalazłem procedurę, która działa dla mnie:
Zrób
.gitignore
co/
. Było to o wiele bardziej skomplikowane, niż się spodziewałem, ze względu na sposób, w jaki Git obsługuje pliki z białą listą w podfolderach. Użyłem tego i tego linku, aby mi pomóc.Idź do
/
i uruchomgit init .
Do tej pory nie byłem w stanie zapisać.git/
folderu w innym katalogu za pomocą linku wspomnianego przez @Ravexina .Uruchom
git add .
igit status
. Powinieneś otrzymać listę wszystkich plików ustawień, które śledzi Git.Zaangażuj się z
git commit -m "Initial settings files"
.Możesz śledzić zmiany za pomocą
git log -p -- path/to/file
lubgitk path/to/file
. Więcej dyskusji na ten temat tutaj .źródło
Jeśli zamierzasz przechowywać wrażliwe rzeczy (np.
/etc/shadow
) W repozytorium git, powinieneś upewnić się, że nie będą one czytelne dla wszystkich użytkowników, ponieważ domyślnie obiekty będą miały uprawnienia,444
a katalogi będą miały uprawnienia0755
. Możesz zmienić uprawnienia.git
do700
lub wprowadzić je/root
Innym problemem jest to, że git nie przechowuje uprawnień do plików, takich jak system plików, i nie przechowuje rozszerzonych atrybutów. W przypadku plików git przechowuje tylko to, czy można je wykonać. Więc jeśli chcesz przywrócić usunięty plik, jego właścicielem i grupą będzie root (jeśli robisz to jako root), a jego pozwoleniem będzie
644
lub755
. Może to być problematyczne w przypadku plików konfiguracyjnych usług, których właścicielem nie jest root.źródło