Robię to przez jakiś czas, używając git. Nie śledzę całego katalogu domowego, tylko te części, które aktywnie zmieniam. Dotyczy to mojego katalogu domowego / bin, który zawiera wiele małych skryptów, mojego katalogu .vim i kilku większych projektów w innych katalogach. Istnieją także konfiguracje terminali i Openbox, a także różne inne aplikacje dodane do repozytorium.
Działa to wystarczająco dobrze, ponieważ wszystkie te rzeczy mają ten sam zestaw uprawnień i nie dbam o oryginalny znacznik czasu. Dochodzi do momentu, w którym planuję rozbić część z nich na podmoduły za pomocą git filter-branch
. Jest to trochę trudne, ponieważ istnieją zależności między plikami w różnych podkatalogach (np. Niektóre skrypty .vim mogą wywoływać skrypty z mojego katalogu bin ... niezbyt dobry przykład, ale mam nadzieję, że masz rację).
Nie znalazłem żadnych bardziej kompleksowych rozwiązań, ale tak naprawdę nie zajrzałem do żadnej, w tym do historii git-home. Wydaje się, że byłoby dość skomplikowane poddanie całego katalogu domowego kontroli wersji i byłoby wiele zmiennych. Na przykład, jeśli poddasz swoje profile firefox pod kontrolę wersji, ostatecznie zgromadzisz ogromne ilości różnic binarnych. Są też rzeczy takie jak klucze ssh, które często są lepiej zgubione niż zduplikowane.
Jeśli chcesz śledzić uprawnienia (inne niż bit wykonywalny, który git już śledzi), najwyraźniej istnieje taki haczyk . Jest wspomniany w tym wątku błędu serwera .
filter-branch
i skonfigurowaniu jego klonu „w toku” w podkatalogu ~. Wydaje się, że jest to ogólnie przydatna strategia: spodziewam się, że podobnie przydanie się do klonowania całego mojego domowego repozytorium dir, a następnie testowania skryptów po ustawieniu $ HOME w katalogu klonowania. Nie jestem pewien, jak powszechnie przestrzegana jest ta zmienna środowiskowa, ale zobaczę.Możesz użyć git w swoim katalogu domowym, a następnie użyć podmodułów git lub drzewa zmian dla zewnętrznych projektów git, nad którymi pracujesz.
źródło