Я хочу синхронизировать каталог, содержащий git repo моих dotfiles на двух машинах. Обе машины внесут изменения в файлы в репо. Обычно я использую унисон для синхронизации каталогов, но в этом случае файлы в каталоге .git
расходятся, даже если содержимое каталога якобы одинаково. Унинон поднимает руки и уходит, когда видит это.Синхронизирующие каталоги, содержащие репозиторий git с unison
$ unison dotfiles
changed <-?-> changed .git/FETCH_HEAD
changed <-?-> changed .git/ORIG_HEAD
changed <-?-> changed .git/index
changed <-?-> changed .git/logs/HEAD
changed <-?-> changed .git/logs/refs/heads/master
changed <-?-> changed .git/logs/refs/remotes/origin/master
Байт в байт синхронизации здесь не работает, потому что даже с теми же файлами и состояние мерзавца внутренние файлы Git могут быть различными. Как синхронизировать эти каталоги? После синхронизации все не-git-файлы и git-состояние должны быть одинаковыми на двух машинах. По состоянию git я подразумеваю фиксацию истории и постановку, но не обязательно каждый байт каждого внутреннего git-файла (например, .gitignore, .git). Я не знаю достаточно о git, чтобы подробно рассказать о том, что я имею в виду, но если это неясно, просто комментарий.
Я не хочу делать какие-либо git-коммиты как часть синхронизации. Я вижу контроль версий и синхронизацию как два отдельных вопроса.
Ввод слов git и sync в google дает результаты, описывающие клонирование репо. Чтобы быть ясным, ни одно из применений «sync» выше не относится к git-действиям.
Вы говорите, что все это не работает для живой синхронизации? – Praxeolitic
@Praxeolitic не с git repo в любом случае. Git - это не значит, что вы живете sync'd, но его использовали для управления dotfiles. – VonC
Я должен был прояснить это изначально, но в реальном времени синхронизировать git-репо и все состояния git через машины по сути невозможны на данный момент?Под этим я имею в виду, что-то о git делает эту задачу самой нечувствительной или удовлетворительных решений просто не существует? Благодарю. – Praxeolitic