Работа с репозиторием (Mercurial на Google Code)

Список разделов phpBBex 1.x (поддерживается) Мастерская 1.x

Описание: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Модератор: Поддержка

Сообщение #1 VEG » 22.04.2012, 18:11

Разработка phpBBex ведётся под управлением системы управления версиями Mercurial. Если вы разберётесь с ним, то получите удобный и быстрый инструмент для обновления вашего форума. Mercurial может сам загружать все самые свежие изменения в phpBBex прямо на ваш хостинг (через SSH), автоматически объединяя (если это возможно) ваши правки со свежим кодом phpBBex. Это намного удобнее, чем самостоятельно загружать все файлы и вручную переносить свои правки на новые версии. Mercurial стоит того, чтобы потратить время на его изучение.

Обратите внимание, что для использования Mercurial на вашем хостинге, он должен быть там установлен. Проверить, установлен ли у вас Mercurial очень просто — нужно подключиться по SSH и ввести команду hg version. Если вы увидите не ошибку, а информацию о версии — значит всё установлено. Иначе обратитесь в техническую поддержку хостинга, чтобы они вам установили Mercurial — как правило, хостеры без проблем соглашаются на это. На некоторых хостингах вы можете установить Mercurial и самостоятельно, но проще всё-таки через тех-поддержку, не зря же вы им деньги платите.

Хостинги, на которых был замечен предустановленный Mercurial:
  • nic.ru (на 201 тарифе)

Рассмотрим работу на вашем локальном компьютере. Для начала работы скачайте и установите подходящую версию TortoiseHg. Работать с Mercurial можно как при помощи GUI, так и при помощи командной строки. Управлять репозиторием значительно проще из командной строки, поэтому здесь будут примеры именно для неё.

Создать каталог forum с локальной копией репозитория phpBBex:
Код: Выделить всё
hg clone https://code.google.com/p/phpbbex/ forum
Загрузить обновления в ваш локальный репозиторий (выполнять в каталоге с форумом):
Код: Выделить всё
hg pull
Объединить все ваши правки с изменениями из последней версии phpBBex в репозитории (выполнять в каталоге с форумом):
Код: Выделить всё
hg update
Для обновления до конкретной стабильной версии команда выглядит так:
Код: Выделить всё
hg update v1.3.0

При обновлении могут возникнуть конфликты, если вы исправляли тот же код, который исправлен и в новой версии phpBBex. Если у вас не слишком много правок по отношению к phpBBex, то вероятность конфликта невелика. С установленным TortoiseHg в случае конфликта выскочит графическое окошко для разрешения конфликта (там будет код оригинала, ваш код, код из нового phpBBex), где вы сможете объединить ваш код и код из нового phpBBex.
Без TortoiseHg команда hg update просто отрапортует, что «n files unresolved» с n больше нуля (читайте что пишут эти команды), а перед этим укажет в каких файлах проблемы. Внутри тех файлов проблемные участки будут помечены знаками <<< (поиском по файлу найдёте), и будет вставлен как ваш, так и код из нового phpBBex. Вы должны объединить этот участок и сохранить.

Чтобы разобраться с Mercurial, рекомендуем серию статей о Mercurial для новичков: Hg Init. Скорее всего, когда вы начнёте пользоваться Mercurial, не будете понимать, как вы жили без него раньше :)

Пример работы

1. В Total Commander заходим в каталог, где нужно будет создать каталог с форумом
2. Запускаем консоль в текущем каталоге (внизу есть поле для ввода команд — пишем cmd и жмём enter)
3. Скачиваем phpBBex v1.2.0 в подкаталог forum командой:
Код: Выделить всё
hg clone -r v1.2.0 https://code.google.com/p/phpbbex/ forum
4. Закрываем консоль. У нас появился каталог forum с файлами phpBBex версии 1.2.0
5. Изменяем что-нибудь (например, в шаблоне)
6. В каталоге forum запускаем cmd
7. Скачиваем последние изменения (рабочий каталог не изменится, они закачаются в каталог .hg)
Код: Выделить всё
hg pull
8. Обновляем код в рабочем каталоге до версии 1.3.0
Код: Выделить всё
hg update v1.3.0
В результате у вас должен получиться phpBBex версии 1.3.0, но с вашими правками.

Замечания касательно репозитория phpBBex

1. В репозитории каталог install называется install_forum. Это сделано для того, чтобы вы могли иметь рабочий форум и беспрепятственно обновлять из репозитория инсталляционные файлы. Для установки чистого phpBBex переименуйте install_forum в install. После установки переименуйте этот каталог обратно в install_forum.
2. В репозитории вы найдёте файлы стиля subsilver2. Это не рабочий стиль. Не устанавливайте его в админке. Удалять эти файлы также не стоит — в будущих версиях phpBBex, возможно, subsilver2 станет вторым поддерживаемым стилем. Они понадобятся для корректного обновления файлов.
3. Не стоит удалять какие-то файлы из стандартного репозитория только потому, что они вам не нравятся (например, каталог docs). Это может вызвать определённые трудности при обновлении. Хотя на самом деле любые удалённые файлы можно легко вернуть командой hg revert :)
4. Все файлы, которые напрямую не относятся к скриптам (дампы, бэкапы, ваши временные файлы, архивы модов и т.д.), необходимо хранить в подкаталоге work — этот каталог игнорируется системой контроля версий.
5. Учтите, что Mercurial обновляет только код. При изменениях в базе вы должны самостоятельно обновить свою копию. Если вы пользуетесь стабильными версиями, достаточно при переходе на очередную стабильную версию выполнить SQL код из инструкции по обновлению. Если же вы обновляетесь и до промежуточных версий, вы должны отслеживать изменения в схеме базы самостоятельно. При помощи Hg Workbench вы сможете посмотреть все изменения в файле ./install_forum/phpbbex.sql — новые инструкции из этого файла и необходимо выполнять.

Полезные команды для получения различий в коде между версиями

Получение изменений в стиле между версиями 1.5.3 и 1.6.0:
Код: Выделить всё
hg diff -r v1.5.3 -r v1.6.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в стиле между версией 1.6.0 и последней в репозитории:
Код: Выделить всё
hg diff -r v1.6.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в русскоязычных языковых файлах между версиями 1.5.3 и 1.6.0:
Код: Выделить всё
hg diff -r v1.5.3 -r v1.6.0 ./language/ru/ > langru.diff
Получение изменений в русскоязычных языковых файлах между версией 1.6.0 и последней в репозитории:
Код: Выделить всё
hg diff -r v1.6.0 ./language/ru/ > langru.diff

Все эти команды выводят данные в diff файле унифицированного формата.
Подробное описание унифицированного формата diff
Унифицированный формат вывода начинается с двухстрочного заголовка, который выглядит так:
--- FROM-FILE FROM-FILE-MODIFICATION-TIME
+++ TO-FILE TO-FILE-MODIFICATION-TIME


Потом следует один или несколько ханков различий; каждый ханк показывает одно место, где файлы различаются. Унифицированный формат ханка выглядит так:
@@ FROM-FILE-RANGE TO-FILE-RANGE @@
LINE-FROM-EITHER-FILE
LINE-FROM-EITHER-FILE...


Строки общие для обоих файлов начинаются с символа пробела. Различающиеся строки имеют один из следующих символов-индикаторов в левой колонке:
+ — в этом месте строка была прибавлена к первому файлу.
- — в этом месте строка была удалена из первого файла.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев


Сообщение #101 budfy » 01.06.2013, 11:07

На сколько я понимаю схему работы Mercurial, он сравнивает репозиторий с тем, что есть на сервере/в папке и доливает/изменяет того, чего нет на серваке?
Тогда вопрос: у меня установлен портал. Не потрётся ли он, если запилить на сервер репозиторий с галерой?
budfy M
Аватара
Откуда: Днепропетровск, Украина
Репутация: 7
С нами: 11 лет 7 месяцев

Сообщение #102 VEG » 01.06.2013, 11:51

Mercurial умеет объединять изменения. Если у него возникнут с этим трудности (изменилось одно и то же место в коде) — он сообщит об этом.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #103 nurgaf » 02.10.2013, 14:35

Стопэ, я не понял.

И так у меня сейчас phpbbex v1.6.0, и мне нужно обновиться до phpbbex v1.7.0!
Моды на форуме: Портал, Галерея, Medal System MOD, Sitemap FX.
Мои действия:
1. Скачал, и установил - http://tortoisehg.bitbucket.org/download/
2. Открыл "Выполнить" >> "CMD"
Далее,
VEG:Создать каталог forum с локальной копией репозитория phpBBex:
КОД: ВЫДЕЛИТЬ ВСЁ
hg clone https://code.google.com/p/phpbbex/ forum
Я это сделал, но не понимаю зачем. Создался каталог "C/Documents and Settings/nurgaf/FORUM"
Это скачалась какая то версия phpBBex!? И для чего?
Как представлял и представляю до сих пор себе это я, после прочтения немалого количества непонятных мне строк:
1. Какими то командами мы скачиваем каталог моего форума v 1.6.0 (с модами)
2. Мы скачиваем обновления до phpBBex v1.7.0. Далее, все каким то волшебным образом правится автоматически.
3. Правленые в результате магии файлы форума теперь уже версии phpBBex - 1.7.0 сохраняются в папке .HG которые в последствии должен закинуть через FilleZilla на сайт с подтверждением о замене!
4. Все готово

Какими командами это все воплотить и какие действия в какой последовательности нужно совершать. Помогите пожалуйста! :insane:
nurgaf M
Аватара
Откуда: г.Челябинск
Репутация: 65
С нами: 11 лет 7 месяцев

Сообщение #104 VEG » 02.10.2013, 16:08

nurgaf, если у вас есть галерея, то вы скорее всего получали её через репозиторий. А значит, вам нужно работать с тем клоном репозитория, что вы создавали для этого. Если у вас сохранился этот репозиторий, вы должны поместить файлы вашего форума в рабочий каталог вашего репозитория, после чего вы можете просто выполнить в нём команды hg pull и hg update для обновления.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #105 nurgaf » 02.10.2013, 17:03

VEG:hg pull и hg update
1. После этих команд все само обновится до 1.7.1?
2. Обновленные файлы из папки .HG просто заменить на те что на хостинге лежат, подтверждая замену, и все?!
:eek:
nurgaf M
Аватара
Откуда: г.Челябинск
Репутация: 65
С нами: 11 лет 7 месяцев

Сообщение #106 VEG » 02.10.2013, 19:59

nurgaf:1. После этих команд все само обновится до 1.7.1?
Если у вас корректный репозиторий и корректные файлы в рабочем каталоге — тогда да, этих команд достаточно для обновления файлов до самой-самой последней версии. При этом ваши изменения тоже должны остаться.

В случае конфликтов (это когда вы исправили тот же код, что изменился и в новой версии) система выведет вам окно для их разрешения. Если модификаций не очень много, то должно обойтись без конфликтов. Если не знаете как разрешить конфликт — спрашивайте, поможем. Главное не закрывайте окно с конфликтом, пока не будете уверены, что его правильно разрешили.

Добавлено спустя 36 минут 55 секунд:
На самом деле там всё просто, если разобраться с этим инструментом. Я начинал разбираться в Mercurial по статьям Hg Init. На мой взгляд там рассказано об основах доступным языком. Применять можно не только для обновления phpBBex, а вообще для многих вещей. После прочтения статей Hg Init вместе с примерами команд, которые я указал в первом сообщении, по идее должно стать всё понятно.

Вообще было бы неплохо записать скринкасты с подробностями на эту тему. Но в моём текущем ноутбуке отвратительная аудиокарта по части записи — независимо от микрофона, звук получается ужасным. Хотя в моём предыдущем ноутбуке даже встроенный микрофон давал отличный звук. Так что пока что идея лежит в долгом ящике, и я ограничиваюсь текстовыми описаниями.

Реальный пример работы с репозиторием для получения стабильных версий и их обновлений указан под заголовком «Пример работы». Если вы желаете обновиться до самой последней версии в репозитории, при вызове команды hg update не нужно указывать версию — автоматически система обновит файлы до самого последнего состояния в репозитории. Если же вы используете ветку gallery из репозитория (об этом в темах JoteRuso) — там вообще нет версий, и там всегда следует использовать команду hg update с параметром gallery или вовсе без параметров, если вы уже переключились на эту ветку.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #107 HD321kbps » 05.10.2013, 00:01

Спасибо за инструкцию! Работает, как часы. только не сразу сообразил с пунктом 2 и сделал это командой cd forum.
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет 8 месяцев

Сообщение #108 VEG » 05.10.2013, 00:44

HD321kbps, делали по инструкции под заголовком «пример работы»?
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #109 HD321kbps » 05.10.2013, 12:34

точно только перепутал это пункт 4, но инструкция, как-то не совсем подходит для обычного обновления с сохранением все правок на локалке.
Вот набросал свою, схожа с другими, но вдруг кому поможет)
1. Запускаем консоль (Пуск -> Выполнить: пишем cmd и жмём enter)
2. Скачиваем версию phpBBex которая у вас сейчас установлена (с которой собираетесь обновить, у меня 1.6.0) и указываем путь для сохранения командой:
Код: Выделить всё
hg clone -r v1.6.0 https://code.google.com/p/phpbbex/ forum
3. У нас появился каталог forum с файлами phpBBex версии 1.6.0 (C:\Users\Имя_Рабочего_Стола\forum)
4. Копируем ваш форум в эту папку с заменой файлов
5. В Командной строке cmd вводим cd forum для работы именно с этим каталогом (путь C:\Users\Имя_Рабочего_Стола измениться на C:\Users\Имя_Рабочего_Стола\forum)
6. Скачиваем последние изменения (рабочий каталог не изменится, они закачаются в каталог .hg) командой:
Код: Выделить всё
hg pull
7. Обновляем форум с вашими изменениями до последней версии форума
Код: Выделить всё
hg update
В результате у вас должен получиться последняя версия phpBBex, но с вашими правками.
После чего переносим все файлы из папки C:\Users\Имя_Рабочего_Стола\forum кроме (папки .hg и файлы .hgignore) к вам на хостинг и продолжаем выполнять инструкцию по установке
Последний раз редактировалось HD321kbps 05.10.2013, 12:50, всего редактировалось 1 раз.
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет 8 месяцев

Сообщение #110 VEG » 05.10.2013, 12:48

HD321kbps, всё верно, только...
HD321kbps:7. Обновляем форум с вашими изменениями до последней версии форума
Код: Выделить всё
hg update
Таким образом вы обновитесь до самой последней нестабильной версии phpBBex в репозитории. И в будущем, если вы будете заново клонировать репозиторий нужной версии по этой инструкции, у вас возникнут конфликты, поскольку файлы у вас будут соответствовать промежуточному состоянию между двумя стабильными версиями.

Для обновления до релизной версии нужно её указать, вот так:
Код: Выделить всё
hg update -r v1.7.1

Однако, если вы желаете пользоваться всегда последней версией репозитория (так, например, делаю я), то следует всегда обновляться командой hg update, но при этом вы должны хранить ваш репозиторий постоянно (а не делать каждый раз клон предыдущей версии), чтобы он всегда соответствовал версии файлов на вашем сервере. Ну и в вашей копии репозитория вы таким образом всегда сможете скачивать последние обновления и обновлять ваши файлы до последнего состояния.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #111 HD321kbps » 05.10.2013, 12:57

вот вопрос при некоторых изменениях приходиться делать запросы в базу mysql. Вот если я обновился к примеру к последней нестабильной и она требует такие правки в базу но я о них не как не могу знать так, как новый релиз еще не вышел. Как это может повлиять на форум. Возможно в новостях репозитория нужно также указывать запросы. Или они только нужны при серьезных изменениях? Что значит нестабильная версия? (это последняя версия только не опубликованная (но описанная в новостях репозитория) или какие то тестовые наработки?
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет 8 месяцев

Сообщение #112 VEG » 05.10.2013, 13:02

HD321kbps:вот вопрос при некоторых изменениях приходиться делать запросы в базу mysql. Вот если я обновился к примеру к последней нестабильной и она требует такие правки в базу но я о них не как не могу знать так, как новый релиз еще не вышел.
По мере изменения схемы базы для нестабильной версии я описываю всё это в соответствующей ветке под заголовками «Обновление БД до ревизии». Перед обновлением читаете ветку, смотрите какие изменения нужно сделать вручную в базе или в админке, делаете их.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #113 HD321kbps » 05.10.2013, 13:07

Точно не заметил, что там указаны и запросы в бд.
Вот я обновился до последней нестабильной версии. Последние изменения вы описывали:
Вышел официальный корректирующий релиз STK 1.0.7-PL1. Исправлены незначительные ошибки. Обновлённый STK уже в репозитории phpBBex.
Внимание! STK от phpBB 3 будет работать некорректно на phpBBex, они отличаются. Используйте тот STK, что идёт вместе с phpBBex.
В понятие последняя нестабильная версия войдут эти изменения или еще какие-то?
Последний раз редактировалось HD321kbps 05.10.2013, 13:08, всего редактировалось 1 раз.
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет 8 месяцев

Сообщение #114 VEG » 05.10.2013, 13:07

HD321kbps:Или они только нужны при серьезных изменениях?
Да, малая часть изменений требует вмешательства в базу.
HD321kbps:Что значит нестабильная версия? (это последняя версия только не опубликованная (но описанная в новостях репозитория) или какие то тестовые наработки?
Это значит, что она ещё не вышла в качестве релиза. Какие-то совсем тестовые наработки я держу у себя на машине. Когда они выглядят рабочими, я их выливаю в этот репозиторий и начинаю тестирование на этом форуме. Обычно в репозитории достаточно стабильные (по качеству работы) версии. Но всегда есть риск, что вы загрузите «только что» добавленную возможность, и в ней найдётся неожиданная проблема. Правда, такие вещи я быстро исправляю, так что можно быстро обновиться дальше. Можете отслеживать здесь, если последняя ревизия была добавлена не только что, а, например, сутки назад, значит она достаточно стабильна, и уже хорошо работает на нескольких моих форумах. Ну и значит, что её в принципе можно использовать тоже :)
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #115 hobot-bobot » 06.10.2013, 14:55

Моя очередь выносить мозг админу :kettle:

1) Предыстория.
Пытался обновить свой форум, делал на "localhost", у меня личная файловая помойка под управлением debian, ввиду установки портала и галереи на форуме ,конечно пытался это сделать с помощью mercurial. Толи руки у меня кривые, то ли день кривой вчера был, то ли хостинг кривой, в результате уронил сайт полностью. Быстро восстановил из последней копии, в результате форум работает, а в галереи и портале ошибка 500, уже хотел создавать тему о помощи по повод ошибки 500, но через некоторое врем она прошла сама собой. Погуглив наткнулся на описание ошибки, похоже не моя вина. В результате сижу на версии 1.6.0.

2) Мысль.
Покурив способы доступа на хостинг, нашел способ монтировать каталог с сайтом к системе debian через ssh, теперь могу напрямую работать с каталогом сайта используя mercurial, как будто mercurial установлен на хостинге :smile: , только медленнее, т.к. через мой комп и тормознутый инет билайн.

3)Внимание вопрос! (с)
Как теперь работать напрямую не запоров снова форум, а то восстанавливать снова неохота :kettle:
hobot-bobot M
Аватара
Откуда: Череповец
Репутация: 23
С нами: 11 лет 7 месяцев

Сообщение #116 VEG » 07.10.2013, 17:01

hobot-bobot, лучше всего сделайте копию форума на локалке, и на ней проводите все операции. И всегда делайте бэкапы самостоятельно (хотя бы перед серьёзными манипуляциями на сайте), не доверяйте это хостеру. Может оказаться, что из-за проблемы на стороне хостера бэкапы не делались уже месяц — и делай после такого что хочешь.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #117 Boroda » 07.10.2013, 17:20

Кстати, к phpbb есть мод который позволяет делать автоматические бэкапы. Оченна хорошая штука.
Boroda M
Репутация: 38
С нами: 12 лет 6 месяцев

Сообщение #118 VEG » 07.10.2013, 17:31

Главное, чтобы в этом бэкапере не было ошибок, или чтобы из-за некорректной настройки сервера эти бэкапы не делались неправильно :)
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #119 Boroda » 10.10.2013, 03:06

У нас заработал Меркуриал. Красотень...

[off]Ну... та версия которая стояла у меня раньше делала бэкап всей базы, а не только тех таблиц, которые с префиксом phpbbex_
Поставил сегодня последнюю версию -- посмотрю что и как.[/off]
Boroda M
Репутация: 38
С нами: 12 лет 6 месяцев

Сообщение #120 hobot-bobot » 22.10.2013, 17:36

Пробую обновить
Код: Выделить всё
C:\Users\hobot-bobot\forum>hg update -r v1.7.1
assets/js/jquery-ie8.js: untracked file differs
assets/js/jquery.js: untracked file differs
assets/js/mejs/clean.bat: untracked file differs
assets/js/mejs/flashmediaelement.swf: untracked file differs
assets/js/mejs/mediaelement.css: untracked file differs
assets/js/mejs/mediaelement.js: untracked file differs
abort: untracked files in working directory differ from files in requested revis
ion
Ничерта не понимаю что делаю
hobot-bobot M
Аватара
Откуда: Череповец
Репутация: 23
С нами: 11 лет 7 месяцев

Пред.След.

Вернуться в Мастерская 1.x



cron