Я экспортировал бы предпочтение прежде, чем изменить цвет, и затем после.
Тот путь, Вы были бы в состоянии изолировать определенные правила предпочтительного файла затмения в один меньший файл и:
Такая стратегия может быть далее усовершенствована в несколько маленьких файлов настроек (один для Java, один для JSP, HTML, CSS...), чтобы к лучшему анализу потенциальных побочных эффектов при переимпорте тех настроек.
На данный момент я использую клонированный репозиторий git. Чтобы упростить задачу, единственный файл, который должен различаться на разных машинах, - это .bashrc
. Хорошо, если может быть только одна версия этого файла, которая по-разному реагирует на разных машинах. Таким образом, в моем .bashrc
:
if [ $(hostname) == 'host1' ]; then
# things to do differently on host1.
elif [ $(hostname) == 'host2' ]; then
# things to do differently on host2.
fi
здесь явно есть некоторые ограничения (например, для .vimrc
или других конфигурационных файлов, требующих настройки, потребуется другой метод), но он работает довольно хорошо.
Если вы используете git, вы можете определить репозиторий "origin" как главный; а затем сделайте клон на каждом компьютере, на котором вы работаете. вы можете использовать ветку для каждого компьютера, чтобы иметь свой набор файлов конфигурации.
git
с ветками для пользовательских компьютеров, с автоматической синхронизацией при входе в систему, мне кажется хорошим решением.
Я использовал etckeeper
для управления версиями конфигураций, но на самом деле я никогда не расширялся до пользовательских конфигураций.
Я храню папку по адресу ~ / config /
, который является репозиторием bzr. Я подталкиваю / тяну репозиторий между моими компьютерами, чтобы синхронизировать его. У меня есть установочный сценарий, который я использую для создания символических ссылок на мой домашний каталог:
#! /bin/sh
# link all files to the home directory, asking about overwrites
cd `dirname $0`
SCRIPT_DIR=`pwd`
SCRIPT_NAME=`basename $0`
FILES=`bzr ls --versioned --non-recursive`
cd $HOME
for FILE in $FILES; do
ln --symbolic --interactive $SCRIPT_DIR/$FILE
done
rm $TARGET_DIR/$SCRIPT_NAME
Если вы хотите использовать git вместо bzr, вы можете вместо этого использовать:
FILES=`git ls-tree --name-only HEAD`
(мне пришлось попросить SO , чтобы выясни это)
РЕДАКТИРОВАТЬ: Я больше этим не занимаюсь,
С CfEngine вы можете управлять файлами конфигурации на разных машинах, а также делать многое другое! Кривая обучения, возможно, немного высока, но оно того стоит, если вам нужно регулярно управлять / обновлять / поддерживать пул компьютеров, на которых работает Linux.
Легко. Для этого используйте DropBox: http://www.nixtutor.com/linux/sync-config-files-across-multiple-computers-with-dropbox/
Этот вопрос возникает время от времени, и я никогда не видел инструмента для обработки этого распространенного варианта использования, поэтому я написал сценарий, который использует git и символические ссылки для управления этими файлами.
См. http://github.com/bstpierre/dotfiles
Это не идеально. В настоящее время существует ошибка, связанная с обработкой каталогов, и пока нет поддержки для разных компьютеров.
Перед использованием любого подобного инструмента убедитесь, что у вас есть хорошие резервные копии!
Я использую резерв в аналогичной ситуации. Slack позволяет определять роли / подроли, поэтому вы можете управлять файлами с небольшими вариациями через клонированный файл или патч. Затем в моем развертывании каталог slack управляется git.
Я думаю, что то, что вы хотите, может быть похоже на то, что я делал ...
Создайте домашний каталог с именем .host_configs /
. Это версия под контролем. Или в моем случае он находится в специальной папке на центральном компьютере, я скопирую его на любой новой машине. Внутри него создайте папку для каждого хоста, для которого вам нужны разные конфигурации. Папка для каждого хоста должна быть названа по короткому имени хоста для этого компьютера. Итак, в вашем репозитории git у вас есть:
.host_configs/
homecomp1/
girlfriendcomp1/
workcomp1/
workcomp2/
В папку для каждого хоста поместите файлы конфигурации .vimrc, .irbrc и т. Д. Для этого конкретного поля.
And also, in each host folder make a file called .[SHORT_HOST]_rc
. For instance, if your machine is name "sane" have a file named .sane_rc ... This file will contain the lines that would normally be in .bashrc that are unique to that host. For instance, if it's a mac and it needs alias ls='ls -GF'
instead of alias ls='ls --color=auto'
which works for most nix machines for ls
with colors, put that line in the .[SHORT_HOST]_rc
for that machine, along with whatever special functions, declarations, etc, that would normally go into the .bashrc or .profile etc. (or .zshrc, .tschrc, as the case may be). So the version controlled ~/.host_configs/
folder looks like:
.host_configs/
homecomp1/
.homecomp1_rc #special shell configs for this hostname
.vimrc #you know the rest
.irbrc
.Xresources
girlfriendcomp1/
.girlfriendcomp1_rc
.vimrc
.bubblebathrc
workcomp1/
.workcomp1_rc
.bashrc
.vimrc
workcomp2/
.workcomp2_rc
.bashrc
.vimrc
I use all the same barebones $HOME/.bashrc (or ~/.tshrc etc) on all of my machines. I just take the basic one that comes with the distro in question and move all of the host-specific configuration into the .host-configs/[SHORT_HOST]/.[SHORT_HOST]_rc
file.
Put this at the bottom (of $HOME/.bashrc
):
export SHORT_HOST="sane"
for file in `find ~/.host_configs/$SHORT_HOST -name ".*"`
do
ln -s $file `basename $file`
done
source ~/`.$SHORT_HOST`_rc
(Finds all of the dot-files for the host and makes a symlink in home to the~/.host_configs/foo_host
folder).
Ваши точечные файлы находятся в обычном месте, но они символически связаны с системой контроля версий. Вышеупомянутое также приводит все строки из вашего файла [$ SHORT_HOST] _rc
в .bashrc
. Вы можете выполнить фиксацию обратно в git из папки ~ / .host_configs /
, когда вы есть изменения.
Вот как это выглядит в оболочке, и это, вероятно, все, что вам нужно, но если вам нужны другие функции, я бы написал что-то, что использует те же принципы (получение внешнего файла .rc в .bashrc и символическая ссылка на все файлы конфигурации в структурированную папку управления версиями) в нечто более универсальное / менее уродливое, чем оболочка. Таким образом, вместо указанного выше в вашем .bashrc может быть:
export SHORT_HOST="sane"
ruby ~/import_conf.rb $SHORT_HOST
... и напишите свой import_conf.rb для более сложного управления конфигурацией, например, размещения определенного файла конфигурации в каком-либо каталоге помимо home, или обработка папки конфигурации, такой как .ssh /, .subversion / и т. д. Это то, что я делаю, это довольно элегантно для меня, но могут быть лучшие решения. Dropbox с некоторыми креативными символическими ссылками также является отличной идеей, хотя вы полагаетесь на стороннюю организацию и вам нужно работать в графической среде. Также обратите внимание, что есть несоответствия между тем, что вы можете делать с символическими ссылками + dropbox в Linux и ярлыками + dropbox в Windows, если вы реализуете что-то, что хочет играть с Windows.