Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 30 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

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

Recently uploaded (20)

Advertisement

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

  1. 1. Слайд для настройки проектора
  2. 2. Иван Бессарабов разработчик http://friendfeed.com/bessarabov ivan@bessarabov.ru
  3. 3. 1. Я начал выступать в роли R 2. Я столкнулся с проблемой P 3. У меня возникли такие-то вопросы Q1 4. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A 5. В ходе работы и получения ответов A возникли новые вопросы Q3, которые я пока не могу решить 6. Помогите мне найти ответы на вопросы Q1-Q2 и Q3 Денис предложил следующие темы для докладов
  4. 4. 1. Я начал выступать в роли R 2. Я столкнулся с проблемой P 3. У меня возникли такие-то вопросы Q1 4. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A 5. В ходе работы и получения ответов 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 `-- .vimrc 2) В домашней паке у меня есть рабочие копии в папке 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) В рабочей копии нет лишних файлов, поэтому не нужно мучатся с .gitignore 2) так как нет репозиториев на более глубоком уровне фаловой системы, то нет и проблем с комитами
  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

×