2

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

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

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

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

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

2 ответа2

0

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

0

Я бы порекомендовал использовать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .