Как сохранить & ldquo; точечные файлы & rdquo; под контролем версий?

В этом пошаговом руководстве я смог установить Citrix Receiver (и обойти ошибки установки пакета Citrix) для меня:

http://www.guyrutenberg.com/2012/12/22/install- citrix-receiver-on-ubuntu-64bit /

Если вы все еще сталкиваетесь с проблемами, сообщите нам, как вы пытаетесь установить пакет (например: через Software Center? dpkg? и т. д.) , Возможно, вы захотите сначала remove icaclient через apt-get, прежде чем делать что-либо еще. Похоже, что установочный пакет Citrix довольно привередливый и не работает во многих случаях.

30
задан 14.12.2017, 05:27

8 ответов

Ну, я продолжал и делал это вручную, пока не нашел лучшего решения. Так что я мог бы также объяснить, что я сделал.

Сначала я сделал bzr init ~, но следующее, что я сделал, было bzr ignore "*". Я решил, что не хочу держать все это под контролем версий. Это просто не стоило того, особенно если учесть, что есть некоторые вещи, которые вы действительно не должны хранить в vcs, как ключи Поэтому мне пришлось bzr add указать конкретные файлы, которые я хотел. Вы также можете добавить исключения в .bzrignore. Здесь также полезны регулярные выражения Python. Я держу это довольно тонким пока. Если все пойдет хорошо, я мог бы добавить все ~/.config и ~/.gconf тоже.

Я также написал быстрый скрипт, который я запускаю как задание cron. Он проверяет, изменились ли файлы, и, если это так, делает автоматическую фиксацию:

#! /bin/bash

set -e

TIME=$(date)
STATUS=$(bzr status)

if [ -n "$STATUS" ]; then
    if [ -n "$1" ]; then
         bzr ci ~ -m "$1"
    else
        bzr ci ~ -m "Automatic commit on $TIME"
    fi
fi

exit
0
ответ дан 24.04.2019, 21:58
  • 1
    Я сам выбрал ответ, когда впервые опубликовал это, но решил отменить это. Это, конечно, не лучший ответ на этот вопрос в 2015 году. – Mohale 21.08.2015, 16:48

Я не знал, есть ли что-нибудь, что могло бы сделать это, поэтому я собрал некоторый код для достижения именно того, что вы хотите, используя мой репозиторий здесь: http://github.com/robertmassaioli/config-files

У меня есть файл, который говорит, где все файлы принадлежат, и программа generate_links просто помещает их все туда. Если вы знаете, что делаете, и можете скомпилировать некоторый код на Haskell, то это действительно просто и легко. Хотя имейте в виду, что это действительно было сделано для моего личного использования.

0
ответ дан 24.04.2019, 21:58
  • 1
    +1 для Хаскелла! -1 за хаскель! лол. нет, но на самом деле. – João Gabriel John 14.10.2010, 16:41
  • 2
    Я слышу тебя. Я выбрал Haskell, потому что я изучаю его, он может или не может быть лучшим языком, подходящим для работы. :) – m2o 14.10.2010, 18:56

Я превратил весь свой каталог ~ в хранилище Bazaar. Хранение метаданных не является проблемой для файлов в домашнем каталоге: все принадлежит одной учетной записи и группе, и bzr уже хранит бит выполнения.

Я вручную добавляю «интересные» файлы к нему (я не хочу, например, чтобы моя музыкальная коллекция или кэш Firefox находились под контролем версий), но если вы хотите автоматизировать это с помощью скрипта, я думаю, что это простое решение сделать bzr add && bzr ci на выбранных каталогах или на выходе команды find просто сделает эту работу.

0
ответ дан 24.04.2019, 21:58

Я храню свои файлы zsh и vim в git, помещаю их на github, в разные репозитории:

для zsh, например, я создал «.zsh» и поместил в него zshrc и zshenv плюс скрипт связать zshrc с ~ / .zshrc и zshenv с ~ / .zshenv, что-то вроде этого.

while true
do
read -p "do you want to link zshenv to ~/.zshenv (Y/N)" yn
case $yn in
    [Yy]*) ln -s ~/.zsh/zshenv ~/.zshenv; break;;
    [Nn]*) break;;
    *) echo "please answer yes or no";;
esac
done

while true
do
read -p "do you want to link zshrc to ~/.zshrc (Y/N)" yn
case $yn in
    [Yy]*) ln -s ~/.zsh/zshrc ~/.zshrc; break;;
    [Nn]*) break;;
    *) echo "please answer yes or no";;
esac
done

, поэтому я делаю

git clone git://git@github.com:tshirtman/.zsh
cd .zsh
./init.sh

для .vim, это почти то же самое, за исключением того, что я использую субмодули для плагинов с патогеном, поэтому я добавил это в init.sh

[ 112]

и когда я хочу добавить плагин vim, я делаю

git submodule add git://github.com/nathanaelkane/vim-indent-guides.git bundle/vim-indent-guides

, например.

Хорошо, это потребовало бы слишком много работы, если у вас есть более чем несколько точечных каталогов, которыми вы хотите управлять, но ничто не мешает вам поместить их все в один каталог или разделить по действиям (включено для всех графических редакторов). , один для веб-деятельности ...) или около того. во всяком случае, это то, что я сделал, так что только мои два цента:).

0
ответ дан 24.04.2019, 21:58

Я использую решение, которое не является автоматическим, как etckeeper (я должен сделать коммит вручную), но оно хорошо сработало для меня. Это не так развито, как мне нравится, но работает.

Я написал свою собственную утилиту, аналогичную GNU Stow , так как stow не делал всего, что я хотел. Я называю это Стоу в доме . Когда запускается, он ищет каталог с именем "HOME". Затем он берет все в этом каталоге и символически связывает его с соответствующим местоположением в $ HOME, создавая каталоги по мере необходимости. Он также будет переводить имена файлов - если файл начинается с «_», он будет заменен на «.». Я сделал это, потому что лучше редактировать мои точечные файлы, когда они не скрыты (по умолчанию их можно увидеть в списках каталогов). Затем он поместил бы их в имя, ожидаемое их приложением.

Итак, у меня есть несколько git-репозиториев для моей конфигурации. Я помещаю только точечные файлы, которые я лично редактирую в них. Преимущество этого в том, что у меня может быть репозиторий для файлов точек, который я могу поделиться с другими (например, моей конфигурацией Emacs) и один для других, которые являются частными (скажем, моя конфигурация ssh, с именами хостов и тому подобное для работы). Символьная ссылка ставит с stow-in-home, все расставляет на свои места, но контроль источника для каждого из них может быть отдельным.

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

0
ответ дан 24.04.2019, 21:58

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

0
ответ дан 24.04.2019, 21:58
  • 1
    вместо того, чтобы управлять дубликатами, не могли бы вы просто создать символические ссылки на ваши точечные файлы? – DKroot 05.04.2011, 21:43
  • 2
    Я думаю, что вы, конечно, можете! – Kamil Nekanowicz 09.04.2011, 11:35

Не могли бы вы добавить dot files в хранилище, используемое в Etckeeper?

0
ответ дан 24.04.2019, 21:58
  • 1
    Как бы я это сделал? символическая ссылка на все где-нибудь в /etc? – Kamil Nekanowicz 14.10.2010, 16:08
  • 2
    Ну .. это один из вариантов – Hodglem 14.10.2010, 16:12

Я храню свои файлы в подкаталоге и делаю символические ссылки. У меня есть скрипт, который автоматизирует это. Вы можете проверить все это на http://code.google.com/p/samking-config-files/source/browse/

0
ответ дан 24.04.2019, 21:58

Теги

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