Я пишу скрипт python, чтобы обновлять мои dotfiles с помощью репозитория на GitHub. Он копирует файлы точек в отдельный каталог (~/dotfiles
), так что мой домашний каталог не является репозиторией git. Перед копированием файлов он делает filecmp.cmp(fileInLocalRepo,fileInHomeDir)
, чтобы узнать, изменился ли файл с момента последнего копирования в локальное репо. Как только все файлы будут обновлены, если произошли какие-либо изменения, измененные файлы будут перенесены в GitHub.Лучший способ сравнить удаленные версии файла git с локальными версиями файлов?
Это работает нормально, пока я не начну обновлять файлы точек с более чем одного компьютера, а старые файлы могут потенциально перезаписать мои удаленные. Если я сначала вытащил файлы до моего локального dotfiles
репо, filecmp.cmp()
все равно скажет, что файлы разные, и скрипт перезапишет вытащенный файл локальным, а затем нажмите, потому что он считает, что произошли изменения.
Есть ли способ узнать, какой файл на самом деле новее? Я знаю, что git не сохраняет время обновления в свойствах файла, поэтому я не могу это использовать. Как я могу вытащить файлы из GiHut в локальное репо (~/dotfiles
), а затем сравнить их с теми же точечными файлами, которые находятся в моем домашнем каталоге, чтобы узнать, какой из каждого файла на самом деле новее?
Спасибо! Я пошел с сохранением временных меток в файле. Мне нравится идея symlink, но мне также хотелось бы, чтобы этот скрипт был чем-то, что любой мог загрузить и использовать, чтобы обновлять свои dotfiles, если они этого захотят. Имея это в виду, я не думаю, что перемещение чей-то точечных файлов и их символическое связывание является самым безопасным вариантом в случае, если что-то произошло. – PseudoPsyche