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


2

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

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

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

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

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

Ответы:


0

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

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

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

/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

2
Пожалуйста, поместите соответствующие части руководства прямо в ваш ответ. Это так, что ответ все еще может помочь, если исходная ссылка больше не будет доступна. Дело в случае: на момент написания этого я не могу добраться до гида из-за 403 Запрещено ошибка. (Что в этом случае, по-видимому, сделано для предотвращения прямых ссылок с внешних страниц. Чтобы получить руководство, скопируйте URL-адрес вместо щелчка или перейдя к нему с главной страницы).
Adaephon

0

Я решил это, поместив (большинство) моих файлов точек в ~/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 пока клонирую.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.