Your SlideShare is downloading. ×
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Felix — система синхронизации конфигов
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

683

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
683
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Слайддля настройки проектора
  • 2. Иван Бессарабов разработчик http://friendfeed.com/bessarabov ivan@bessarabov.ru
  • 3. 1. Я начал выступать в роли R2. Я столкнулся с проблемой P3. У меня возникли такие-то вопросы Q14. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A5. В ходе работы и получения ответов A возникли новые вопросы Q3, которые я пока не могу решить6. Помогите мне найти ответы на вопросы Q1-Q2 и Q3 Денис предложил следующие темы для докладов
  • 4. 1. Я начал выступать в роли R2. Я столкнулся с проблемой P3. У меня возникли такие-то вопросы Q14. В ходе работы на часть вопросов Q2 из Q1 я получил работающие ответы A5. В ходе работы и получения ответов A возникли новые вопросы Q3, которые я пока не могу решить6. Помогите мне найти ответы на вопросы Q1-Q2 и Q3 Я выбрал для рассказа эту тему
  • 5. РУ меня есть Problem
  • 6. РSНо кроме Problem у меня еще есть и Solution
  • 7. Моя проблема заключается в том, что у меня много компьютеров на которых я работаю. Рабочий компьютер.
  • 8. Домашний десктоп
  • 9. Домашний ноутбук
  • 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 `-- .vimrc2) В домашней паке у меня есть рабочие копии в папке 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) В рабочей копии нет лишних файлов, поэтому не нужно мучатся с .gitignore2) так как нет репозиториев на более глубоком уровне фаловой системы, то нет и проблем с комитами
  • 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 месяцев.
  • 30. Спасибо!http://friendfeed.com/bessarabov ivan@bessarabov.ru

×