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