Как сохранить Dot-файлы в актуальном состоянии?

424
testname123

У меня есть два компьютера, один на работе и один дома. У рабочей есть виртуальная машина с Arch, а у домашней - Arch. Работа, которую обычно выполняют на работе, но с помощью git много чего толкает вперед и назад, поэтому, когда я работаю над чем-то в одном месте, я могу взять то, что остановил в другом.

Одна вещь, которую я делаю довольно часто, это настройка файлов конфигурации для таких вещей, как Vim, ZSH, i3, бла-бла-бла, и я очень устаю от того, что мне приходится вспоминать то, что я делал прошлой ночью, чтобы сохранить следующую машину. использую до скорости!

Я знаю, что это работа для Git, но как мне справиться с этим? Например, у меня есть куча точечных файлов по всему домашнему каталогу в разных подкаталогах. Мне нужно было бы не только отслеживать изменения, но и управлять расположением этих файлов относительно того, где они находятся в любом репозитории, который я мог создать.

Другое дело, что некоторые из этих точечных файлов потребуют установки программного обеспечения .... Итак, возьмем, к примеру, i3: я установил i3 на свой домашний компьютер и получил его по своему вкусу с помощью его конфигурационного файла ... Но, просто извлекать точечные файлы, когда я приступаю к работе, не имеет особого смысла, потому что на рабочем ноутбуке не будет установлен i3! Я должен был бы не забыть установить то-то и то-то. Еще один хороший пример этого - модули Python ... Иногда я что-то делаю и забываю точные имена модулей, которые я должен был установить как зависимости Python, чтобы запустить его. В этом случае простое извлечение файлов конфигурации - это только полдела ... Мне понадобится сценарий или что-то еще, чтобы убедиться, что серверная часть этих файлов конфигурации обновлена ​​и на месте.

Я знаю, что это не совсем конкретный вопрос, который люди хотели бы видеть здесь, но я также чувствую, что у этой проблемы есть большой объем документации, доступной для того, как пользователи Unix / Linux высшего качества справляются с этой, казалось бы, реалистичной задачей администрирования. Каждый предлагает что-то совершенно иное, и большинство проблем, похоже, связано с восстановлением после полного сбоя системы, а не просто с обновлением между двумя часто используемыми машинами.

2

2 ответа на вопрос

0
sitic

Я бы порекомендовал использовать Stow, следуя этому руководству .

При таком подходе все точечные файлы будут находиться в одной папке, которая может контролироваться версией / синхронизироваться. Он создает символические ссылки, так что точечные файлы могут легко обновляться.

Что касается установки необходимого программного обеспечения, самым простым способом было бы просто создать bash-скрипт или файл с примечаниями, что делать вместе с конфигурацией:

/home/user/ dotfiles/ bash/ .bashrc .bash_profile .bash_logout i3/ .config/ i3/ [...some files] i3.install.sh  $ cd ~/dotfiles $ stow bash $ ./i3.install.sh $ stow i3 
Пожалуйста, поместите соответствующие части руководства непосредственно в ваш ответ. Это так, что ответ все еще может помочь, если исходная ссылка больше не будет доступна. Суть дела: На момент написания этого я не смог добраться до гида из-за ошибки * 403 Forbidden *. (Что в этом случае, по-видимому, сделано для предотвращения прямых ссылок с внешних страниц. Чтобы получить руководство, скопируйте его, вставив вместо щелчка или перейдя к нему с главной страницы). Adaephon 7 лет назад 2
0
Gauthier

Я решил эту проблему путем размещения ( в большинстве случаев ) мои точечные файлы ~/dotfiles, что является мерзавец репо, что я регулярно толкать на GitHub .

В этом репозитории у меня также есть скрипт, который устанавливает ссылки в нужном месте:

#!/bin/bash for f in $(find -name ".*" -type f); do if [[ -e $HOME/$f ]]; then mv $HOME/$f $HOME/$f.old fi ln $f $HOME/$f done 

Пока что «правильное местоположение» только $HOME, но вы должны заставить скрипт создавать ссылки на другие места.

Я использовал жесткие ссылки, потому что git по умолчанию сохраняет символические ссылки как ссылки, но я уверен, что есть способ исправить это для символических ссылок.

В новой версии я расширил скрипт, чтобы удалить мешающие файлы конфигурации, такие как ~/.config/git/gitk. С таким же успехом я мог бы установить ссылки там, а не в $HOME.

Это звучит как то stow, что делает, просто показалось достаточно простым пропустить использование еще одного инструмента.


Я рассматриваю возможность размещения своих репозиториев .emacs.dи .xmonadрепозиториев в качестве субмодулей в моем dotfilesрепо ... Хотя, может быть, это не стоит хлопот, и я вряд ли забуду --recursiveвремя клонирования.

Похожие вопросы