OS

Процесс ведения заметок с применением git

Меня в последнее время унесло в дебри, более близкие разработчикам и системным администраторам, чем обычным пользователям Mac’ов. Что поделаешь - что делаю, о том и пою. Буду стараться разбавить эту тематику материалами, интересными широкому кругу людей, но пока продолжу углубляться.

Я в процессе работы делаю заметки и готовлю фрагменты конфигураций, записывая их в текстовые файлы вида 20100527.txt - один файл на каждый день. Удобно то, что при необходимости можно посмотреть, что и как именно я делал. Увеличение продуктивности налицо, так как мне не приходится делать множество вещей с нуля.

При всём удобстве такого метода у него есть недостаток - отсутствие синхронизации. Мне приходится работать и за рабочей станцией, и за домашним компьютером, и за несколькими ноутбуками. И в каждом месте я делаю новые заметки и использую старые.

Dropbox хорош, спора нет. Но это практически публичный сервис, и хранить там информацию, которую можно приравнять к конфиденциальной, сомнительное решение. Шифровать заметки можно сторонними утилитами, под Mac OS X удобно пользоваться зашифрованными образами SparseImageBundle, но кроме Mac’ов я использую и Windows, и Linux, и FreeBSD. TrueCrypt кроссплатформенный, но я слыхал о случаях повреждения данных. Поэтому я не храню заметки в Dropbox.

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

Хороший вариант - иметь сервер, к которому можно подключиться по ssh, и там в едином месте держать все заметки. Вопрос синхронизации снимается. Я работал в таком режиме года четыре. Но… Не всегда удобно работать с данными через vim в консоли, изредка хочется использовать тот же TextMate или gEdit/Linux. Да и бывают ситуации, когда Интернет недоступен, но данные нужны. Получаются заметки, сделанные в нескольких местах, и синхронизировать приходится их вручную, что неудобно.

Теперь я активно использую git (не сказал бы, что на продвинутом уровне, но стремлюсь к этому). И в процессе его изучения у меня возникла мысль применить его и для задачи ведения заметок.

Git на Mac’е установлен, приватный внешний репозиторий тоже есть (а если нет, то можно создать его бесплатно на сервисе Assembla - спасибо hakka, или же платно на GitHub). Самое время пользоваться простыми благами системы контроля версий.

Начнём с начала. Создадим каталог заметок (можно использовать существующий с наработанными данными) и инициализируем локальный репозиторий git:

$ mkdir ~/Documents/Notes
$ cd ~/Documents/Notes
$ touch Readme
$ git init
$ git add .
$ git commit -a -m "Initial commit"

Добавляем внешний репозиторий (процесс зависит от сервиса, для gitosis я рассказывал, как это делать):

$ git remote add origin gitosis@git.host.com:Notes.git

Записываем данные во внешний репозиторий:

$ git push origin master

Всё это я делал на ноутбуке ole-mac. Теперь я хочу начать работу с рабочей станции ole-linux. Захожу на неё и клонирую репозиторий (доступ должен быть предварительно организован, я это описывал для gitosis):

ole-linux$ cd ~/Documents
ole-linux$ git clone gitosis@git.host.com:Notes.git

Изменяю существующую заметку 20100526.txt и создаю новую 20100527.txt:

ole-linux$ cd ~/Documents/Notes
ole-linux$ date >> 20100526.txt
ole-linux$ echo "Hello from ole-linux" > 20100527.txt

Добавляю новую заметку в локальный репозиторий (иначе она не будет отслеживаться и не будет записана во внешний репозиторий):

ole-linux$ git add 20100527.txt

Можно также делать просто - добавлять все новые файлы одной командой:

ole-linux$ git add .

Делаю commit изменений:

ole-linux$ git commit -a -m "ole-linux, плановая работа"

Записываю изменения во внешний репозиторий:

ole-linux$ git push origin master

Возвращаюсь на ноутбук, списываю изменения:

ole-mac$ cd ~/Documents/Notes
ole-mac$ git pull origin master

Работаю с данными, вношу изменения, делаю commit:

ole-mac$ git add .
ole-mac$ git commit -a -m "ole-mac, новые заметки"

Передаю данные во внешний репозиторий:

ole-mac$ git push origin master

На всех рабочих местах у меня теперь есть доступ к нужным данным, при этом я могу следить за историей изменений.

Телодвижений много, но скоро это входит в привычку, особенно если git используется и для других задач. Главное в конце работы сделать commit/push, а при приходе на другое место - pull/push.

Comments