Управлять точечными файлами, запрещающими жестко закодированные пути? - PullRequest
2 голосов
/ 12 июля 2011

Сегодня я решил управлять своими файлами точек в репозитории.Мотивация состоит в том, чтобы повторно использовать одни и те же точечные файлы на нескольких компьютерах Mac и серверах Ubuntu.

В настоящее время я думаю об этой структуре:

├── bash
│   ├── aliases
│   ├── config
│   └── env
├── bash_profile
├── bashrc
├── hgrc
├── src
│   └── link.py
└── vimrc

link.py запускается и создает символические ссылки для bashrc и bash_profile из ~ куда и где клонируется этот репозиторий.

Проблема: 1

my bashrc содержимое:

source bash/env
source bash/config
source bash/aliases

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

аналогично, мое bash_profile содержимое:

source ./bashrc                       # same problem!
source ~/.bashrc                 

, так как я ранеесимволические ссылки ~/.bashrc на dotfiles/bashrc Я могу достичь этого.Но мне все равно это кажется грязным хаком.

Проблема: 2

Где я должен хранить свои пути, которые являются обычными для конкретной машины.Конечно, я не хочу помещать их в хранилище и портить все остальные системы.В настоящее время мои пользовательские пути находятся в ~/.profile.Я думаю, чтобы получить его из bash/env с if, чтобы проверить, существует ли он, тогда используйте его в противном случае нет.

Хотелось бы услышать лучшие подходы

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

Я использую символические ссылки, и не считаю это "грязным хаком".Ранее я просто копировал все файлы (и все еще делал это для некоторых файлов (не bash)), и поскольку все файлы были для $ HOME / .something, я использовал «$ HOME» (не «~», потому что «~»не был расширен в двойных кавычках, но $ HOME yes.)

0 голосов
/ 02 января 2015

Ответ слишком поздно, но я все же рекомендую вам проверить DFM (менеджер dotfiles). DFM решает проблему, которая у вас есть, очень простым способом:

0 голосов
/ 13 июля 2011

Поскольку я не получил большого отклика здесь, я прибег к расширению моего src/link.py до символической ссылки ~/.bash до dotfiles/bash, чтобы я мог достичь bash/* с помощью ~/.bash/*

Я также добавил список игнорирования в свой файл link.py, чтобы игнорировать каталоги .hg, bin, чтобы они не были символическими ссылками при выполнении os.listdir().

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

...