Git, SVN
Подписаться на эту рубрику по RSS
git-flow: A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model
git-flow
A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
https://github.com/nvie/gitflow#readme
Как облегчить процесс публикации изменений на сервер
[Git, FTP] Для FTP и shared hosting (без SSH доступа и полноценной консоли)
Рекомендую готовый скрипт: Extract changed files from Git and prepare a deployment (Bash script).
По команде, в которой указывается диапазон коммитов, создаёт папку .deployment с готовым деревом и изменившимися файлами. И список удаленных файлов, которые придётся удалить вручную (если пользуетесь FTP клиентом) или через SSH на сервере (если есть такая возможность).
[Git, SSH] При полноценном хостинге (с SSH доступом)
Судя по всему, у меня сделано один в один как в http://habrahabr.ru/blogs/Git/127213/, поэтому не вижу смысла описывать то же самое. У меня немного отличается структура папок проектов, но это несущественно. Суть проста - на сервере лежит как Git-репозиторий, так и обычная рабочая копия (на которую смотрит веб-сервер). Точнее, на одну из папок репозитория - public_html. Потому что в репозитории хранится ещё документация, служебные скрипты, тестовые и чистые SQL дампы.
И при новых коммитах от разработчиков (git push) репозиторий по хуку делает автоматически две операции - обновление локальной серверной копии (git pull origin dev) и копирование набора файлов из config_sets (здесь у меня хранятся файлы, специфические для разных конфигураций: для одного разработчика, для другого, для dev2-windows, dev2-linux, для production1, production-dev и так далее, если надо ещё больше). Понятна идея? Требуемый набор конфигов просто перезаписывается поверх того, что есть в репозитории (а туда могут попасть и локальные конфиги девелоперов, если они не исключены через .gitignore), и получается чистая и настроенная конфигурация. Быстро, без чек-листов, ручных проверок-исправлений и условий-ветвлений с множеством девелоперских конфигов (зачем они на сервере?).
Естественно, на сервере настроено использование SSH-ключей, чтобы избавиться от необходимоси ввода пароля после git pull.
Есть, конечно, мелкие особенности - за неделю мы уже наступили на пару граблей и может это стоило бы описать.
См. также
[PHP, FTP] Web based FTP Sync Tool written in PHP. Есть возможность запрещать синхронизацию для отдельных файлов/папок.
Что такое diff
При публикации изменений используется формат DIFF. С его помощью можно перенести небольшие изменения к себе вручную (см. ниже). Или автоматически: командами git apply rb-patch.diff или patch -p2 < rb-patch.diff (находясь в корневой папке магазина - там, где расположены каталоги admin и catalog).
Предварительно, конечно же, скопировав и сохранив в файл опубликованный патч и отрезав первые несколько строк на русском с пояснениями про diff.
Перенос изменений вручную
См. http://rb.labtodo.com/page/opencart-admin-attributes-usability-improvement#comment-138
Это список изменений. В начале строк - индикаторы: что убрать (минусы, красный цвет) в старом файле и что добавить (плюсики, зелёный цвет).
В каких именно файлах - указано утроенным значком (---, +++)
@@ -106,10 +106,12 @@ -- строки, т.е. примерно на 106 строке вы должны найти похожий кусок кода, перед и после блока изменений обычно выводится пара строк текста. "Примерно 106" - потому что я множество правок вношу в свой магазин и содержимое файлов может не совпадать с оригинальным OpenCart 1.5.1.1 или с тем правками, которые внесены у вас до меня.
Правки индицируются значками "-" и "+" в самом начале строки: те, что с минусом, были убраны (они должны совпадать с тем, что вы у себя видите перед внесением изменений), а те, что с плюсом -- добавлены в это место. Поэтому можно руками внести и проконтролировать все изменения.
В данном случае надо закомментировать небольшую часть в файле admin/controller/catalog/attribute.php и модифицировать одну строку в admin/model/catalog/attribute.php (заменить её на несколько новых, которые можно скопировать и убрать плюсики в начале строк)
Git User's Survey 2011
UPD: This survey is currently closed. More information can be found on http://git.wiki.kernel.org/index.php/GitSurvey2011
----
Все на выборы!
В смысле заполните анкетку: https://www.survs.com/survey/VCAGZA8CT5
Результаты наверное будут многим пользователям Git интересны.
Я по ходу дела узнал много новых букв названий интересного Git-софта.
Вывод Git branch в подсказку командной строки
При активном использовании Git-а и переключений между разными ветками часто хочется видеть, в какой ветке находишься. Удобно добавить вывод названия branch-а в подсказку командной строки bash:
rb@rb-msi:~/projects/opencart-a4u (master)$
Первичные настройки Git
Представляемся надолго, чтобы коммиты не были ничейными:
git config --global user.name "Your Name Comes Here" git config --global user.email you@yourdomain.example.com
Облегчаем визуальное восприятие изменений:
git config --global color.diff auto git config --global color.status auto git config --global color.branch auto git config --global color.ui auto
Не забываем про заплетающиеся пальцы (вы способны быстро набрать "status" без опечаток?! Раз 50 в день?!?! Ого!):
git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout git config --global alias.logd 'log --oneline --graph --decorate' git config --global alias.logst 'log --stat=140,100' git config --global alias.bav 'branch -av'
И не забывайте про существование возможности авторизоваться на гит-сервере с репозиториями с помощью своего публичного SSH ключа: пара генерируется один раз, публичный ключ раздаёте тем, кто должен вас узнавать и пускать без стука, и забываете про ввод паролей.
Если нужен gitk, то перед вторым запуском (первый под Линуксом нужен, чтобы слегка удивиться, проморгаться и взбодриться) исправьте в ~/.gitk интерфейсные шрифты:
set mainfont {{andale mono} 9}
set textfont {{andale mono} 9}
set uifont {clean 10 bold}
set tabstop 4
Хотя это в принципе и через GUI сделать можно.
Бекап, контроль изменений и откат на стабильные конфигурации "/etc" в Linux'е с помощью Git
Как говорят, если вас посетила гениальная мысль -- в линукс-сообществе это уже давно реализовано или создаётся.
Решил добавить /etc в Git-репозиторий, чтобы получить все плюшки контроля версий. И, разумеется, оказалось, что я не слишком оригинален :)
Более подробно для интересующихся и сомневающихся это уже подробно описано ранее Антоном Чернышовым в статье Управление каталогом /etc с использованием tar и git.
См. также:
Распробовал Git
Распробовал Git: он действительно оказался во многом гораздо удобнее, чем SVN. В первый день мне не очень понравилась большая, чем в Subversion, атомарность действий и необходимость каждый раз добавлять изменённые файлы в коммит. Я понимал, что это сулит и чем может быть полезно, но сперва показалось неудобным: ты машина — ты и следи/добавляй, раз всё известно, зачем мне лишняя рутина? Позже у коммита обнаружился ключ -a вдобавок к "git add .", так что по этому поводу ворчать стало некуда. Ну а потом всё-таки понравился этот мелочный контроль (можно некоторые файлы держать у себя изменёнными для экспериментов и не пускать их в репозиторий).
Что нравится и заметно в первую очередь в Git после SVN, так это:
Знакомлюсь с Git и Yii Framework
Пригласили в проект, где используется Git VCS и Yii Framework. Поэтому на некоторое время объявляю себя потерянным для мира, но открытым для полезной информации по этим темам. Советуйте, если есть что-то полезное на ваш взгляд.
Yii обещает прям какую-то гигантскую производительность. Пока ничего такого не заметил: имеющаяся минимальная заготовка проекта на Yii на глаз шевелится медленней моих CodeIgniter проектов, местами более нагруженных неоптимальными запросами (о которых я знаю и в планах стоит поправить логику в нескольких местах, но и без этого работает замечательно. Даже у хостера, который пока отказывается включть mod_deflate у апача).
См. также: Первые впечатления о Git в сравнении с SVN.




