Linux
Подписаться на эту рубрику по RSS
Opencart module extract (Linux shell script)
Mодули для Opencart обычно используют одно и то же имя для контроллеров, моделей, view и языковых файлов, поэтому этот скрипт может облегчить задачу по поиску и извлечению всех файлов модуля из рабочей копии магазина с сохранением всей структуры каталогов.
Навеяно модулем http://opencartforum.ru/topic/8272-module-extract-извлечение-модулей/, но мне показалось, что линуксоидам будет проще и удобней одной строкой в шелле это делать (локально или на сервере), без установки модуля в Opencart (установить, разрешить, зайти, найти, скопировать...)
Ни я, ни тот модуль не занимаются анализом PHP-кода и действительно полным выковыриванием всех используемых модулем файлов. Так что результат, конечно, не гарантирует полное и точное извлечение. Но будет работать в подавляющем большинстве случаев.
Как облегчить процесс публикации изменений на сервер
[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. Есть возможность запрещать синхронизацию для отдельных файлов/папок.
Оказывается, Ubuntu можно обновить до следующего релиза через CD
Не знал, для меня это оказалось приятным сюрпризом. Апгрейд до следующего релиза через сеть происходит очень долго - несколько утомительных часов, насколько помню. С возможными вопросами и проблемами посреди процесса. И это слабо зависит от скорости сети. Я обновлялся ближе к вечеру и пришлось на ночь ноутбук оставить докачивать и устанавливать, запретив впадать в спячку.
Через CD тоже процесс небыстрый, но гораздо меньше времени занимает. Так что советую попробовать ISO образ скачать, записать на болванку, и с неё уже обновляться.
Цветовые схемы для Geany
Одновременно с появлением вчера шрифтов Ubuntu Mono и Ubuntu Condensed вспомнил, что хотел ещё цвета в Geany настроить.
В итоге обзавёлся десятком (или даже двумя) новых светлых и тёмных тем Далее...
Вывод 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 сделать можно.
Eclipse PDT и Ubuntu
Eclipse - монстрообразинко. Шевелится неторопливо, интерфейс разлапистый и на любителя. Сперва поставил полный (sudo apt-get install eclipse), а из него - последний доступный PDT (3.x.x) через Help - Install new software. Получил постоянные ошибки при попытках открыть PHP файлы, доустановил какой-то WST (на него были намёки в сообщениях об ошибках). Никаких изменений в лучшую сторону.
Вчера не выдержал, удалил всё и попробовал ограничиться малым: оставил только минимум эклипса (sudo apt-get remove eclipse && sudo apt-get autoremove && sudo apt-get install eclipse-platform), а PDT взял с Galileo репозитория (там только 2.x.x какая-то версия доступна, слово Galileo присутствовало на заставке Эклипса при запуске, хотя второй репозиторий не сам же собой появился). Наконец-то после всех его рестартов увидел Эклипс в работоспособном состоянии. Хотя на некоторых PHP файлах его всё равно плющит (например, он не может открыть index.php из приложения Yii фреймворка).
Поживёт пока. Знакомство с Yii Framework пока только добавляет плюсов к впечатлениям о CodeIgniter. С Eclipse пользоваться и изучать Yii и всю его перенавороченную иерархию странностей будет полегче, надеюсь.
Бекап, контроль изменений и откат на стабильные конфигурации "/etc" в Linux'е с помощью Git
Как говорят, если вас посетила гениальная мысль -- в линукс-сообществе это уже давно реализовано или создаётся.
Решил добавить /etc в Git-репозиторий, чтобы получить все плюшки контроля версий. И, разумеется, оказалось, что я не слишком оригинален :)
Более подробно для интересующихся и сомневающихся это уже подробно описано ранее Антоном Чернышовым в статье Управление каталогом /etc с использованием tar и git.
См. также:
Распробовал Git
Распробовал Git: он действительно оказался во многом гораздо удобнее, чем SVN. В первый день мне не очень понравилась большая, чем в Subversion, атомарность действий и необходимость каждый раз добавлять изменённые файлы в коммит. Я понимал, что это сулит и чем может быть полезно, но сперва показалось неудобным: ты машина — ты и следи/добавляй, раз всё известно, зачем мне лишняя рутина? Позже у коммита обнаружился ключ -a вдобавок к "git add .", так что по этому поводу ворчать стало некуда. Ну а потом всё-таки понравился этот мелочный контроль (можно некоторые файлы держать у себя изменёнными для экспериментов и не пускать их в репозиторий).
Что нравится и заметно в первую очередь в Git после SVN, так это:
Bash & Tar: скрипт инкрементального бекапа с помощь after-date
Подробная статья о том, как весь этот процесс обустраивается: http://ilab.me/howto/bash-tar-vps-backup/
Я обычно делал гораздо проще (бекап по списку, который берётся из файла), без инкрементальных заморочек: http://baadoo.livejournal.com/25398.html.
Но только потому, что архивы были невелики и усложнять себе жизнь не было мотивов.




