Слайддля настройки  проектора
Иван Бессарабов  разработчик  http://friendfeed.com/bessarabov  ivan@bessarabov.ru
1. Я начал выступать в роли R2. Я столкнулся с проблемой P3. У меня возникли такие-то вопросы Q14. В ходе работы на часть ...
1. Я начал выступать в роли R2. Я столкнулся с проблемой P3. У меня возникли такие-то вопросы Q14. В ходе работы на часть ...
РУ меня есть Problem
РSНо кроме Problem у меня еще есть и Solution
Моя проблема заключается в том, что у меня много компьютеров на которых я работаю. Рабочий компьютер.
Домашний десктоп
Домашний ноутбук
И с десяток серверов
Я много времени работаю в консоли. И мне бы хотелось чтобы рабочее окружение в консоли                  на всех машинах бы...
$ ..     $ cd ..     $ ..     -bash: ..: command not foundНапример, я предпочитаю вводить “..” вместо “cd ..”, но если не ...
$ ..        $ cd ..А таких штук у меня вагон и маленькая тележка. Вот такая тележка. И я хочу чтобы если у меня появилась ...
Задача – синхронизировать настройки между всеми машинами на которых я работаю. Я работаю только на   линуксе и маке, поэто...
/home/bessarabov/              /Users/bessarabov/На линуксе и на маке все файлы пользователя находятся в одной папке.
~.       |-- bin       |-- Desktop       |-- Documents       | |-- screen_shots       | `-- keynotes       |-- Dropbox    ...
~.    |-- bin                                    ←    |-- Desktop    |-- Documents    | |-- screen_shots    | `-- keynotes...
После того как задача был сформулирована появилась необходимость как-то назвать проект.         Первое что пришло в голову...
~.           |-- .git                                ←           |-- bin           |-- Desktop           |-- Documents    ...
GitПолучилась вот такая очень простоая система. Все машины получают конфигурационные файлы через один                     ...
~.          |-- .git          |-- git          | |-- bem-bl          | |-- Mock-Person          | `-- rakudo          |-- ...
~.             |-- .git             |-- git                                       ←             | |-- bem-bl              ...
v2В конце концов эти недостатки меня окончательно достали, а тут как раз Слава Матюхин рассказал как можно                ...
~.  |-- felix  | |-- .vim  | |-- .bashrc  | `-- .gitconfig  |-- .vim  |-- .bashrc  `-- .gitconfigРешение очень простое - с...
~.          |-- felix          | |-- .vim          | |-- .bashrc          | `-- .gitconfig          |-- .vim          |-- ...
~.            |-- felix            | |-- create_symlinks.pl            | `-- tilde            |       |-- .vim            ...
https://github.com/bessarabov/felix  Cкрипт для синхронизации файлов сегодня появится на github
И еще два слова о том как я построил работу. Изначально я пытался работать в git с ветками – т.е. настройкидля каждого тип...
Profit     1. На всех машинах        одинаковые настройки     2. Бекап настроекВ итоге мне удалось решить ту задачу, котор...
Спасибо!http://friendfeed.com/bessarabov     ivan@bessarabov.ru
Upcoming SlideShare
Loading in...5
×

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

703

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
703
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×