SlideShare a Scribd company logo
1 of 30
Download to read offline
Слайд
для настройки
  проектора
Иван Бессарабов
  разработчик

  http://friendfeed.com/bessarabov

  ivan@bessarabov.ru
1. Я начал выступать в роли R
2. Я столкнулся с проблемой P
3. У меня возникли такие-то вопросы Q1
4. В ходе работы на часть вопросов Q2 из
   Q1 я получил работающие ответы A
5. В ходе работы и получения ответов A
   возникли новые вопросы Q3, которые я
   пока не могу решить
6. Помогите мне найти ответы на вопросы
   Q1-Q2 и Q3


         Денис предложил следующие темы для докладов
1. Я начал выступать в роли R
2. Я столкнулся с проблемой P
3. У меня возникли такие-то вопросы Q1
4. В ходе работы на часть вопросов Q2 из
   Q1 я получил работающие ответы A
5. В ходе работы и получения ответов A
   возникли новые вопросы Q3, которые я
   пока не могу решить
6. Помогите мне найти ответы на вопросы
   Q1-Q2 и Q3


             Я выбрал для рассказа эту тему
Р
У меня есть Problem
РS
Но кроме Problem у меня еще есть и Solution
Моя проблема заключается в том, что у меня много компьютеров на которых я работаю. Рабочий компьютер.
Домашний десктоп
Домашний ноутбук
И с десяток серверов
Я много времени работаю в консоли. И мне бы хотелось чтобы рабочее окружение в консоли
                  на всех машинах было как можно более одинаковое.
$ ..
     $ cd ..


     $ ..
     -bash: ..: command not found




Например, я предпочитаю вводить “..” вместо “cd ..”, но если не указать дополнительные настройки,
                                    то это работать не будет.
$ ..
        $ cd ..




А таких штук у меня вагон и маленькая тележка. Вот такая тележка. И я хочу чтобы если у меня появилась
                  Какая-то новая команда, то она сразу же работала на всех машинах.
Задача – синхронизировать настройки между всеми машинами на которых я работаю. Я работаю только на
   линуксе и маке, поэтому windows не при делах (кроме того там другой принцип хранения настроек).
/home/bessarabov/

              /Users/bessarabov/




На линуксе и на маке все файлы пользователя находятся в одной папке.
~.
       |-- bin
       |-- Desktop
       |-- Documents
       | |-- screen_shots
       | `-- keynotes
       |-- Dropbox
       |-- git
       |-- .vim                                    ←
       |-- some_file.txt                           ←
       |-- .bashrc                                 ←
       |-- .gitconfig                              ←
       `-- .vimrc                                  ←




      Для этой папки есть удобное сокращение – символ тильда. Все настройки хранятся
в текстовых файлах. Т.е. задача заключается в том чтобы синхронизировать некоторые файлы.
~.
    |-- bin                                    ←
    |-- Desktop
    |-- Documents
    | |-- screen_shots
    | `-- keynotes
    |-- Dropbox
    |-- git
    |-- .vim
    |-- some_file.txt
    |-- .bashrc
    |-- .gitconfig
    `-- .vimrc




В процессе решения задачи я еще пришел к том что удобно синхронизировать не только
              конфигурационные файлы, но и некоторые другие файлы,
После того как задача был сформулирована появилась необходимость как-то назвать проект.
         Первое что пришло в голову это название felix. Такое название и оставил.
~.
           |-- .git                                ←
           |-- bin
           |-- Desktop
           |-- Documents
           | |-- screen_shots
           | `-- keynotes
           |-- Dropbox
           |-- git
           |-- .vim
           |-- some_file.txt
           |-- .gitignore                          ←
           |-- .bashrc
           |-- .gitconfig
           `-- .vimrc


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




Получилась вот такая очень простоая система. Все машины получают конфигурационные файлы через один
                                             репозиторий.
~.
          |-- .git
          |-- git
          | |-- bem-bl
          | |-- Mock-Person
          | `-- rakudo
          |-- .vim
          |-- some_file.txt
          |-- .gitignore                           ←
          |-- .bashrc
          |-- .gitconfig
          `-- .vimrc




    Через некоторое вермя работы обнаружились некоторые неудобства, когда домашняя папка
является рабочией копией. 1) достаточно часто появлялись новые файлы, поэтому часто приходилось
                                       обновлять .gitignore
~.
             |-- .git
             |-- git                                       ←
             | |-- bem-bl                                  ←
             | |-- Mock-Person                             ←
             | |-- new_project                             ←
             | `-- rakudo                                  ←
             |-- .vim
             |-- some_file.txt
             |-- .gitignore
             |-- .bashrc
             |-- .gitconfig
             `-- .vimrc



2) В домашней паке у меня есть рабочие копии в папке git. Несколько раз при создании нового репозитория
       ~/git/new_project я забывал сделать git init и комитил все в репозитарий felix, а не в new_project
v2


В конце концов эти недостатки меня окончательно достали, а тут как раз Слава Матюхин рассказал как можно
                                          решить эту проблему.
~.
  |-- felix
  | |-- .vim
  | |-- .bashrc
  | `-- .gitconfig
  |-- .vim
  |-- .bashrc
  `-- .gitconfig




Решение очень простое - создать рабочую копию не в домашней папке, а в ~/felix.
~.
          |-- felix
          | |-- .vim
          | |-- .bashrc
          | `-- .gitconfig
          |-- .vim
          |-- .bashrc
          `-- .gitconfig




       А в домашней папке должны лежать ссылки на файлы в ~/felix. Это решает обе проблемы:
             1) В рабочей копии нет лишних файлов, поэтому не нужно мучатся с .gitignore
2) так как нет репозиториев на более глубоком уровне фаловой системы, то нет и проблем с комитами
~.
            |-- felix
            | |-- create_symlinks.pl
            | `-- tilde
            |       |-- .vim
            |       |-- .bashrc
            |       `-- .gitconfig
            |-- .vim
            |-- .bashrc
            `-- .gitconfig




На самом деле структура файлов немного другая. Еще есть скрипт, который синхронизирует файлы + все
                 файлы, которые нужно синхронизировать находятся в подпапке tilde
https://github.com/bessarabov/felix




  Cкрипт для синхронизации файлов сегодня появится на github
И еще два слова о том как я построил работу. Изначально я пытался работать в git с ветками – т.е. настройки
для каждого типа компьютеров жили в одной ветки, но оказалось, что это сложно и не удобно поддерживать.
   Поэтому сейчас я уже почти полностью перешел на работу в одной ветке, а различия между машинами
                                             релазизую if-ами.
Profit
     1. На всех машинах
        одинаковые настройки
     2. Бекап настроек


В итоге мне удалось решить ту задачу, которая у меня возникла. “На сдачу” появился дополнительный профит в
 виде бекапа (git сервер же бекапится, да?). Первый подход к задаче у меня был немного менее года назад, а
                                 версия 2 у меня работает около 5 месяцев.
Спасибо!

http://friendfeed.com/bessarabov

     ivan@bessarabov.ru

More Related Content

What's hot

My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015Alex Chistyakov
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker Andrey Markelov
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
простой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsyncпростой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsyncAndrew Pantyukhin
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиOSLL
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядноFallenKain
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй DockerBadoo Development
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...Ontico
 

What's hot (20)

My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
простой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsyncпростой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsync
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Введение в Docker
Введение в DockerВведение в Docker
Введение в Docker
 
Opensource
OpensourceOpensource
Opensource
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядно
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Devconf15
Devconf15Devconf15
Devconf15
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Clouds
CloudsClouds
Clouds
 
Bash scripting
 Bash scripting Bash scripting
Bash scripting
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 

Viewers also liked

Carbonatos fraturados empresas
Carbonatos fraturados empresasCarbonatos fraturados empresas
Carbonatos fraturados empresasZeca Oliveira
 
Influências emocionais no câncer de mama cartilha informativa
Influências emocionais no câncer de mama   cartilha informativaInfluências emocionais no câncer de mama   cartilha informativa
Influências emocionais no câncer de mama cartilha informativaGilson Tavares
 
Pnfem 3º caderno fev 2015
Pnfem 3º caderno fev 2015Pnfem 3º caderno fev 2015
Pnfem 3º caderno fev 2015Jorci Ponce
 
Independencia De MéXico
Independencia De MéXicoIndependencia De MéXico
Independencia De MéXicomauri1234
 
Responsabilidad Social
Responsabilidad SocialResponsabilidad Social
Responsabilidad Socialnuriafuste
 
Presentación de libros Isabel Maldonado
Presentación de libros Isabel MaldonadoPresentación de libros Isabel Maldonado
Presentación de libros Isabel Maldonadoyanko0
 
Feira das profissoes 2011
Feira das profissoes 2011Feira das profissoes 2011
Feira das profissoes 2011teresavalse
 
Slides tp. esp[1]
Slides tp. esp[1]Slides tp. esp[1]
Slides tp. esp[1]fezinha_p
 
Apresentacao senai
Apresentacao senaiApresentacao senai
Apresentacao senaiciespbrag_22
 
Deja de robar sueños, para qué sirve la escuela - Seth Godin
Deja de robar sueños, para qué sirve la escuela - Seth GodinDeja de robar sueños, para qué sirve la escuela - Seth Godin
Deja de robar sueños, para qué sirve la escuela - Seth GodinCarlos Terrones Lizana
 
Origem do universo e da vida (1ª parte da actividade)
Origem do universo e da vida (1ª parte da actividade)Origem do universo e da vida (1ª parte da actividade)
Origem do universo e da vida (1ª parte da actividade)aquihaciencia
 
Apresentação meio ambiente e cidadania
Apresentação   meio ambiente e cidadaniaApresentação   meio ambiente e cidadania
Apresentação meio ambiente e cidadaniaamandaetiago
 
Cosnciencia global meio ambiente
Cosnciencia global meio ambienteCosnciencia global meio ambiente
Cosnciencia global meio ambienteFrancilis Enes
 
EvaluacióN Economica Y Financiera
EvaluacióN Economica Y FinancieraEvaluacióN Economica Y Financiera
EvaluacióN Economica Y Financieralorena molina alzate
 
Em busca de uma chave de leitura do legado de José Comblin
Em busca de uma chave de leitura do legado de José ComblinEm busca de uma chave de leitura do legado de José Comblin
Em busca de uma chave de leitura do legado de José ComblinConcilio 50 anos
 
7 razones para no enfocar su estrategia digital en 
redes sociales
7 razones para no enfocar su estrategia digital en 
redes sociales7 razones para no enfocar su estrategia digital en 
redes sociales
7 razones para no enfocar su estrategia digital en 
redes socialesDaniel Lacorazza
 
Credenciales XPERTO 2009
Credenciales XPERTO 2009Credenciales XPERTO 2009
Credenciales XPERTO 2009R Camarena
 

Viewers also liked (20)

Carbonatos fraturados empresas
Carbonatos fraturados empresasCarbonatos fraturados empresas
Carbonatos fraturados empresas
 
Influências emocionais no câncer de mama cartilha informativa
Influências emocionais no câncer de mama   cartilha informativaInfluências emocionais no câncer de mama   cartilha informativa
Influências emocionais no câncer de mama cartilha informativa
 
Pnfem 3º caderno fev 2015
Pnfem 3º caderno fev 2015Pnfem 3º caderno fev 2015
Pnfem 3º caderno fev 2015
 
la radio
la radiola radio
la radio
 
Independencia De MéXico
Independencia De MéXicoIndependencia De MéXico
Independencia De MéXico
 
Responsabilidad Social
Responsabilidad SocialResponsabilidad Social
Responsabilidad Social
 
Presentación de libros Isabel Maldonado
Presentación de libros Isabel MaldonadoPresentación de libros Isabel Maldonado
Presentación de libros Isabel Maldonado
 
Feira das profissoes 2011
Feira das profissoes 2011Feira das profissoes 2011
Feira das profissoes 2011
 
Paymentez - BPLanHouses João Pessoa
Paymentez - BPLanHouses João PessoaPaymentez - BPLanHouses João Pessoa
Paymentez - BPLanHouses João Pessoa
 
Slides tp. esp[1]
Slides tp. esp[1]Slides tp. esp[1]
Slides tp. esp[1]
 
Apresentacao senai
Apresentacao senaiApresentacao senai
Apresentacao senai
 
Deja de robar sueños, para qué sirve la escuela - Seth Godin
Deja de robar sueños, para qué sirve la escuela - Seth GodinDeja de robar sueños, para qué sirve la escuela - Seth Godin
Deja de robar sueños, para qué sirve la escuela - Seth Godin
 
Origem do universo e da vida (1ª parte da actividade)
Origem do universo e da vida (1ª parte da actividade)Origem do universo e da vida (1ª parte da actividade)
Origem do universo e da vida (1ª parte da actividade)
 
Apresentação meio ambiente e cidadania
Apresentação   meio ambiente e cidadaniaApresentação   meio ambiente e cidadania
Apresentação meio ambiente e cidadania
 
Cosnciencia global meio ambiente
Cosnciencia global meio ambienteCosnciencia global meio ambiente
Cosnciencia global meio ambiente
 
EvaluacióN Economica Y Financiera
EvaluacióN Economica Y FinancieraEvaluacióN Economica Y Financiera
EvaluacióN Economica Y Financiera
 
Facundo Cabral
Facundo CabralFacundo Cabral
Facundo Cabral
 
Em busca de uma chave de leitura do legado de José Comblin
Em busca de uma chave de leitura do legado de José ComblinEm busca de uma chave de leitura do legado de José Comblin
Em busca de uma chave de leitura do legado de José Comblin
 
7 razones para no enfocar su estrategia digital en 
redes sociales
7 razones para no enfocar su estrategia digital en 
redes sociales7 razones para no enfocar su estrategia digital en 
redes sociales
7 razones para no enfocar su estrategia digital en 
redes sociales
 
Credenciales XPERTO 2009
Credenciales XPERTO 2009Credenciales XPERTO 2009
Credenciales XPERTO 2009
 

Similar to Felix — система синхронизации конфигов

Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Egor Stremousov
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним боротьсяВладимир Кожаев
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Gitphpdevby
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git phpdevby
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающихVadim Drobinin
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)Anton Ivanov
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Dmytro Olaresko
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitIvan Evtukhovich
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе dockerIvan Grishaev
 
MxxRu::externals: Repositoryless Dependency Manager
MxxRu::externals: Repositoryless Dependency ManagerMxxRu::externals: Repositoryless Dependency Manager
MxxRu::externals: Repositoryless Dependency Managercorehard_by
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с GitDressTester
 
Пакетирование для Debian/Ubuntu
Пакетирование для Debian/UbuntuПакетирование для Debian/Ubuntu
Пакетирование для Debian/Ubuntusamsolutionsby
 
Software engineering seminars: git
 Software engineering seminars: git Software engineering seminars: git
Software engineering seminars: gitSemen Martynov
 
Быстрое развертывание среды разработки c Vagrant
Быстрое развертывание среды разработки c VagrantБыстрое развертывание среды разработки c Vagrant
Быстрое развертывание среды разработки c VagrantOlga Lavrentieva
 

Similar to Felix — система синхронизации конфигов (20)

Git for you
Git for youGit for you
Git for you
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)
 
Git presentation
Git presentationGit presentation
Git presentation
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Git intro
Git introGit intro
Git intro
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере git
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
 
Приручаем Git
Приручаем GitПриручаем Git
Приручаем Git
 
MxxRu::externals: Repositoryless Dependency Manager
MxxRu::externals: Repositoryless Dependency ManagerMxxRu::externals: Repositoryless Dependency Manager
MxxRu::externals: Repositoryless Dependency Manager
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Пакетирование для Debian/Ubuntu
Пакетирование для Debian/UbuntuПакетирование для Debian/Ubuntu
Пакетирование для Debian/Ubuntu
 
Software engineering seminars: git
 Software engineering seminars: git Software engineering seminars: git
Software engineering seminars: git
 
9-vignetts.pdf
9-vignetts.pdf9-vignetts.pdf
9-vignetts.pdf
 
Быстрое развертывание среды разработки c Vagrant
Быстрое развертывание среды разработки c VagrantБыстрое развертывание среды разработки c Vagrant
Быстрое развертывание среды разработки c Vagrant
 

Felix — система синхронизации конфигов

  • 2. Иван Бессарабов разработчик http://friendfeed.com/bessarabov ivan@bessarabov.ru
  • 3. 1. Я начал выступать в роли R 2. Я столкнулся с проблемой P 3. У меня возникли такие-то вопросы Q1 4. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A 5. В ходе работы и получения ответов A возникли новые вопросы Q3, которые я пока не могу решить 6. Помогите мне найти ответы на вопросы Q1-Q2 и Q3 Денис предложил следующие темы для докладов
  • 4. 1. Я начал выступать в роли R 2. Я столкнулся с проблемой P 3. У меня возникли такие-то вопросы Q1 4. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A 5. В ходе работы и получения ответов A возникли новые вопросы Q3, которые я пока не могу решить 6. Помогите мне найти ответы на вопросы Q1-Q2 и Q3 Я выбрал для рассказа эту тему
  • 6. РS Но кроме Problem у меня еще есть и Solution
  • 7. Моя проблема заключается в том, что у меня много компьютеров на которых я работаю. Рабочий компьютер.
  • 10. И с десяток серверов
  • 11. Я много времени работаю в консоли. И мне бы хотелось чтобы рабочее окружение в консоли на всех машинах было как можно более одинаковое.
  • 12. $ .. $ cd .. $ .. -bash: ..: command not found Например, я предпочитаю вводить “..” вместо “cd ..”, но если не указать дополнительные настройки, то это работать не будет.
  • 13. $ .. $ cd .. А таких штук у меня вагон и маленькая тележка. Вот такая тележка. И я хочу чтобы если у меня появилась Какая-то новая команда, то она сразу же работала на всех машинах.
  • 14. Задача – синхронизировать настройки между всеми машинами на которых я работаю. Я работаю только на линуксе и маке, поэтому windows не при делах (кроме того там другой принцип хранения настроек).
  • 15. /home/bessarabov/ /Users/bessarabov/ На линуксе и на маке все файлы пользователя находятся в одной папке.
  • 16. ~. |-- bin |-- Desktop |-- Documents | |-- screen_shots | `-- keynotes |-- Dropbox |-- git |-- .vim ← |-- some_file.txt ← |-- .bashrc ← |-- .gitconfig ← `-- .vimrc ← Для этой папки есть удобное сокращение – символ тильда. Все настройки хранятся в текстовых файлах. Т.е. задача заключается в том чтобы синхронизировать некоторые файлы.
  • 17. ~. |-- bin ← |-- Desktop |-- Documents | |-- screen_shots | `-- keynotes |-- Dropbox |-- git |-- .vim |-- some_file.txt |-- .bashrc |-- .gitconfig `-- .vimrc В процессе решения задачи я еще пришел к том что удобно синхронизировать не только конфигурационные файлы, но и некоторые другие файлы,
  • 18. После того как задача был сформулирована появилась необходимость как-то назвать проект. Первое что пришло в голову это название felix. Такое название и оставил.
  • 19. ~. |-- .git ← |-- bin |-- Desktop |-- Documents | |-- screen_shots | `-- keynotes |-- Dropbox |-- git |-- .vim |-- some_file.txt |-- .gitignore ← |-- .bashrc |-- .gitconfig `-- .vimrc Первый подход к решению. Просто в домашней папке создать рабочую копию системы контроля версий. Все файлы и папки, которые нужно синхронизировать – комитить, остальные игнорировать.
  • 20. Git Получилась вот такая очень простоая система. Все машины получают конфигурационные файлы через один репозиторий.
  • 21. ~. |-- .git |-- git | |-- bem-bl | |-- Mock-Person | `-- rakudo |-- .vim |-- some_file.txt |-- .gitignore ← |-- .bashrc |-- .gitconfig `-- .vimrc Через некоторое вермя работы обнаружились некоторые неудобства, когда домашняя папка является рабочией копией. 1) достаточно часто появлялись новые файлы, поэтому часто приходилось обновлять .gitignore
  • 22. ~. |-- .git |-- git ← | |-- bem-bl ← | |-- Mock-Person ← | |-- new_project ← | `-- rakudo ← |-- .vim |-- some_file.txt |-- .gitignore |-- .bashrc |-- .gitconfig `-- .vimrc 2) В домашней паке у меня есть рабочие копии в папке git. Несколько раз при создании нового репозитория ~/git/new_project я забывал сделать git init и комитил все в репозитарий felix, а не в new_project
  • 23. v2 В конце концов эти недостатки меня окончательно достали, а тут как раз Слава Матюхин рассказал как можно решить эту проблему.
  • 24. ~. |-- felix | |-- .vim | |-- .bashrc | `-- .gitconfig |-- .vim |-- .bashrc `-- .gitconfig Решение очень простое - создать рабочую копию не в домашней папке, а в ~/felix.
  • 25. ~. |-- felix | |-- .vim | |-- .bashrc | `-- .gitconfig |-- .vim |-- .bashrc `-- .gitconfig А в домашней папке должны лежать ссылки на файлы в ~/felix. Это решает обе проблемы: 1) В рабочей копии нет лишних файлов, поэтому не нужно мучатся с .gitignore 2) так как нет репозиториев на более глубоком уровне фаловой системы, то нет и проблем с комитами
  • 26. ~. |-- felix | |-- create_symlinks.pl | `-- tilde | |-- .vim | |-- .bashrc | `-- .gitconfig |-- .vim |-- .bashrc `-- .gitconfig На самом деле структура файлов немного другая. Еще есть скрипт, который синхронизирует файлы + все файлы, которые нужно синхронизировать находятся в подпапке tilde
  • 27. https://github.com/bessarabov/felix Cкрипт для синхронизации файлов сегодня появится на github
  • 28. И еще два слова о том как я построил работу. Изначально я пытался работать в git с ветками – т.е. настройки для каждого типа компьютеров жили в одной ветки, но оказалось, что это сложно и не удобно поддерживать. Поэтому сейчас я уже почти полностью перешел на работу в одной ветке, а различия между машинами релазизую if-ами.
  • 29. Profit 1. На всех машинах одинаковые настройки 2. Бекап настроек В итоге мне удалось решить ту задачу, которая у меня возникла. “На сдачу” появился дополнительный профит в виде бекапа (git сервер же бекапится, да?). Первый подход к задаче у меня был немного менее года назад, а версия 2 у меня работает около 5 месяцев.