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

Board index phpBBex 1.x Мастерская

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

Post #1by 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:
Code: Select all
hg clone https://code.google.com/p/phpbbex/ forum
Загрузить обновления в ваш локальный репозиторий (выполнять в каталоге с форумом):
Code: Select all
hg pull
Объединить все ваши правки с изменениями из последней версии phpBBex в репозитории (выполнять в каталоге с форумом):
Code: Select all
hg update
Для обновления до конкретной стабильной версии команда выглядит так:
Code: Select all
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 командой:
Code: Select all
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)
Code: Select all
hg pull
8. Обновляем код в рабочем каталоге до версии 1.3.0
Code: Select all
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:
Code: Select all
hg diff -r v1.5.3 -r v1.6.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в стиле между версией 1.6.0 и последней в репозитории:
Code: Select all
hg diff -r v1.6.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в русскоязычных языковых файлах между версиями 1.5.3 и 1.6.0:
Code: Select all
hg diff -r v1.5.3 -r v1.6.0 ./language/ru/ > langru.diff
Получение изменений в русскоязычных языковых файлах между версией 1.6.0 и последней в репозитории:
Code: Select all
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
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months


Post #101by budfy » 01.06.2013, 11:07

На сколько я понимаю схему работы Mercurial, он сравнивает репозиторий с тем, что есть на сервере/в папке и доливает/изменяет того, чего нет на серваке?
Тогда вопрос: у меня установлен портал. Не потрётся ли он, если запилить на сервер репозиторий с галерой?
HTML и PHP не знаю, поэтому задаю много ламерских вопросов. Любитель и быдлокодер™, чего никогда не отрицал.
budfy M
Новичок
Avatar
Age: 30
Location: Днепропетровск, Украина
Reputation: 7
With us: 4 yaers 7 months

Post #102by VEG » 01.06.2013, 11:51

Mercurial умеет объединять изменения. Если у него возникнут с этим трудности (изменилось одно и то же место в коде) — он сообщит об этом.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #103by 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 wrote:Создать каталог 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
Гуру
Avatar
Age: 21
Location: г.Челябинск
Reputation: 65
With us: 4 yaers 7 months

Post #104by VEG » 02.10.2013, 16:08

nurgaf, если у вас есть галерея, то вы скорее всего получали её через репозиторий. А значит, вам нужно работать с тем клоном репозитория, что вы создавали для этого. Если у вас сохранился этот репозиторий, вы должны поместить файлы вашего форума в рабочий каталог вашего репозитория, после чего вы можете просто выполнить в нём команды hg pull и hg update для обновления.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #105by nurgaf » 02.10.2013, 17:03

VEG wrote:hg pull и hg update
1. После этих команд все само обновится до 1.7.1?
2. Обновленные файлы из папки .HG просто заменить на те что на хостинге лежат, подтверждая замену, и все?!
:eek:
nurgaf M
Гуру
Avatar
Age: 21
Location: г.Челябинск
Reputation: 65
With us: 4 yaers 7 months

Post #106by VEG » 02.10.2013, 19:59

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

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

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

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

Реальный пример работы с репозиторием для получения стабильных версий и их обновлений указан под заголовком «Пример работы». Если вы желаете обновиться до самой последней версии в репозитории, при вызове команды hg update не нужно указывать версию — автоматически система обновит файлы до самого последнего состояния в репозитории. Если же вы используете ветку gallery из репозитория (об этом в темах JoteRuso) — там вообще нет версий, и там всегда следует использовать команду hg update с параметром gallery или вовсе без параметров, если вы уже переключились на эту ветку.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #107by HD321kbps » 05.10.2013, 00:01

Спасибо за инструкцию! Работает, как часы. только не сразу сообразил с пунктом 2 и сделал это командой cd forum.
HD321kbps M
Гуру
Avatar
Age: 27
Location: Армянск
Reputation: 361
With us: 4 yaers 8 months

Post #108by VEG » 05.10.2013, 00:44

HD321kbps, делали по инструкции под заголовком «пример работы»?
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #109by HD321kbps » 05.10.2013, 12:34

точно только перепутал это пункт 4, но инструкция, как-то не совсем подходит для обычного обновления с сохранением все правок на локалке.
Вот набросал свою, схожа с другими, но вдруг кому поможет)
1. Запускаем консоль (Пуск -> Выполнить: пишем cmd и жмём enter)
2. Скачиваем версию phpBBex которая у вас сейчас установлена (с которой собираетесь обновить, у меня 1.6.0) и указываем путь для сохранения командой:
Code: Select all
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) командой:
Code: Select all
hg pull
7. Обновляем форум с вашими изменениями до последней версии форума
Code: Select all
hg update
В результате у вас должен получиться последняя версия phpBBex, но с вашими правками.
После чего переносим все файлы из папки C:\Users\Имя_Рабочего_Стола\forum кроме (папки .hg и файлы .hgignore) к вам на хостинг и продолжаем выполнять инструкцию по установке
Last edited by HD321kbps on 05.10.2013, 12:50, edited 1 time in total.
HD321kbps M
Гуру
Avatar
Age: 27
Location: Армянск
Reputation: 361
With us: 4 yaers 8 months

Post #110by VEG » 05.10.2013, 12:48

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

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

Однако, если вы желаете пользоваться всегда последней версией репозитория (так, например, делаю я), то следует всегда обновляться командой hg update, но при этом вы должны хранить ваш репозиторий постоянно (а не делать каждый раз клон предыдущей версии), чтобы он всегда соответствовал версии файлов на вашем сервере. Ну и в вашей копии репозитория вы таким образом всегда сможете скачивать последние обновления и обновлять ваши файлы до последнего состояния.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #111by HD321kbps » 05.10.2013, 12:57

вот вопрос при некоторых изменениях приходиться делать запросы в базу mysql. Вот если я обновился к примеру к последней нестабильной и она требует такие правки в базу но я о них не как не могу знать так, как новый релиз еще не вышел. Как это может повлиять на форум. Возможно в новостях репозитория нужно также указывать запросы. Или они только нужны при серьезных изменениях? Что значит нестабильная версия? (это последняя версия только не опубликованная (но описанная в новостях репозитория) или какие то тестовые наработки?
HD321kbps M
Гуру
Avatar
Age: 27
Location: Армянск
Reputation: 361
With us: 4 yaers 8 months

Post #112by VEG » 05.10.2013, 13:02

HD321kbps wrote:вот вопрос при некоторых изменениях приходиться делать запросы в базу mysql. Вот если я обновился к примеру к последней нестабильной и она требует такие правки в базу но я о них не как не могу знать так, как новый релиз еще не вышел.
По мере изменения схемы базы для нестабильной версии я описываю всё это в соответствующей ветке под заголовками «Обновление БД до ревизии». Перед обновлением читаете ветку, смотрите какие изменения нужно сделать вручную в базе или в админке, делаете их.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #113by HD321kbps » 05.10.2013, 13:07

Точно не заметил, что там указаны и запросы в бд.
Вот я обновился до последней нестабильной версии. Последние изменения вы описывали:
Вышел официальный корректирующий релиз STK 1.0.7-PL1. Исправлены незначительные ошибки. Обновлённый STK уже в репозитории phpBBex.
Внимание! STK от phpBB 3 будет работать некорректно на phpBBex, они отличаются. Используйте тот STK, что идёт вместе с phpBBex.
В понятие последняя нестабильная версия войдут эти изменения или еще какие-то?
Last edited by HD321kbps on 05.10.2013, 13:08, edited 1 time in total.
HD321kbps M
Гуру
Avatar
Age: 27
Location: Армянск
Reputation: 361
With us: 4 yaers 8 months

Post #114by VEG » 05.10.2013, 13:07

HD321kbps wrote:Или они только нужны при серьезных изменениях?
Да, малая часть изменений требует вмешательства в базу.
HD321kbps wrote:Что значит нестабильная версия? (это последняя версия только не опубликованная (но описанная в новостях репозитория) или какие то тестовые наработки?
Это значит, что она ещё не вышла в качестве релиза. Какие-то совсем тестовые наработки я держу у себя на машине. Когда они выглядят рабочими, я их выливаю в этот репозиторий и начинаю тестирование на этом форуме. Обычно в репозитории достаточно стабильные (по качеству работы) версии. Но всегда есть риск, что вы загрузите «только что» добавленную возможность, и в ней найдётся неожиданная проблема. Правда, такие вещи я быстро исправляю, так что можно быстро обновиться дальше. Можете отслеживать здесь, если последняя ревизия была добавлена не только что, а, например, сутки назад, значит она достаточно стабильна, и уже хорошо работает на нескольких моих форумах. Ну и значит, что её в принципе можно использовать тоже :)
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #115by 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
Бывалый
Avatar
Location: Череповец
Reputation: 23
With us: 4 yaers 7 months

Post #116by VEG » 07.10.2013, 17:01

hobot-bobot, лучше всего сделайте копию форума на локалке, и на ней проводите все операции. И всегда делайте бэкапы самостоятельно (хотя бы перед серьёзными манипуляциями на сайте), не доверяйте это хостеру. Может оказаться, что из-за проблемы на стороне хостера бэкапы не делались уже месяц — и делай после такого что хочешь.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #117by Boroda » 07.10.2013, 17:20

Кстати, к phpbb есть мод который позволяет делать автоматические бэкапы. Оченна хорошая штука.
Boroda M
Мастер
Age: 42
Reputation: 38
With us: 5 years 6 months

Post #118by VEG » 07.10.2013, 17:31

Главное, чтобы в этом бэкапере не было ошибок, или чтобы из-за некорректной настройки сервера эти бэкапы не делались неправильно :)
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 7 months

Post #119by Boroda » 10.10.2013, 03:06

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

[off]Ну... та версия которая стояла у меня раньше делала бэкап всей базы, а не только тех таблиц, которые с префиксом phpbbex_
Поставил сегодня последнюю версию -- посмотрю что и как.[/off]
Boroda M
Мастер
Age: 42
Reputation: 38
With us: 5 years 6 months

Post #120by hobot-bobot » 22.10.2013, 17:36

Пробую обновить
Code: Select all
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
Бывалый
Avatar
Location: Череповец
Reputation: 23
With us: 4 yaers 7 months

PreviousNext

Return to Мастерская