Я делал это некоторое время, просто используя git. Я не отслеживаю весь домашний каталог, только части, которые я активно изменяю. Это включает мой каталог home / bin, который содержит множество маленьких скриптов, мой каталог .vim и некоторые более крупные проекты в других каталогах. Также есть несколько конфигураций для терминалов и openbox, а также различных других приложений, добавленных в репо.
Это работает достаточно хорошо, так как все эти вещи имеют одинаковый набор разрешений, и меня не волнует исходная временная метка. Дошло до того, что я планирую разбить некоторые из них на подмодули, используя git filter-branch
. Это немного хитро, хотя, поскольку существуют взаимозависимости между файлами в разных подкаталогах (например, некоторые сценарии .vim могут вызывать сценарии из моего каталога bin ... не очень хороший пример, но, надеюсь, вы поймете это).
Я не нашел более комплексных решений, но также не изучал никаких, включая git-home-history. Кажется, что было бы довольно сложно поставить весь домашний каталог под контроль версий, и было бы много переменных. Например, если вы поставите свои профили Firefox под контроль версий, вы в конечном итоге соберете огромное количество двоичных различий. Также есть такие вещи, как ssh-ключи, которые часто лучше потерять, чем дублировать.
Если вы хотите отслеживать права доступа (кроме исполняемого бита, который git уже отслеживает), очевидно, есть ловушка , которая сделает это. Это упомянуто в этой ветке об ошибках сервера .
filter-branch
его клон «в процессе разработки» в подкаталоге ~. Похоже, что это в целом полезная стратегия: я ожидаю, что аналогичным образом будет полезно клонировать все мое домашнее репозиторий dir, а затем тестировать сценарии после установки $ HOME в каталог clone. Я не уверен, насколько универсально соблюдается эта переменная среды, но я посмотрю.Вы можете использовать git в своем домашнем каталоге, затем использовать подмодули git или пересмотреть дерево для внешних проектов git, над которыми вы работаете.
источник