Работа с репозиторием (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 месяцев


Сообщение #121 factotum » 22.10.2013, 17:47

hobot-bobot:Ничерта не понимаю что делаю
Могу ошибаться, но клиент говорит, что у Вас неревизионные файлы. Скорее всего перед объединением нужно утвердить Ваши изменения.
Клиент с GUI tortoise hg. Удобней и проще управлять событиями
factotum
Откуда: Люксембург
Репутация: 234
С нами: 12 лет 7 месяцев

Сообщение #122 Alexandr_ » 22.10.2013, 18:00

JoteRuso:Ребят, если кто-нибудь понял, как работает эта система - объясните на пальцах.

Вступление:
phpBB [media]


Создание репозитория:
phpBB [media]


Работа с ветками:
phpBB [media]


Игнорирование файлов:
phpBB [media]
Alexandr_
Репутация: 5
С нами: 11 лет 1 месяц

Сообщение #123 VEG » 23.10.2013, 00:34

hobot-bobot:Пробую обновить
Судя по всему вы сделали клон репозитория не для той версии, которой у вас сейчас файлы. Вы должны изначально клонировать репозиторий строго до той версии phpBBex, которая у вас используется, и только потом обновлять файлы в рабочем каталоге до последней версии.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #124 JoteRuso » 23.10.2013, 20:43

Alexandr_, за ссылки на видео, конечно, спасибо. Но эти видео, хоть и подробные (честь их автору), разжёвывают лишь самые основы. Фактически, нас учат подключать принтер к компу, менять в нём бумагу и картриджи, и иногда нажимать на кнопку отмены печати (это, типа, аллегория такая :wink: ). Но совсем не упоминается, как пользоваться настройками печати, компоновкой изображений, масштабом, печатью на обеих сторонах бумаги и т.д...
Если Вам всё понятно в Меркуриал, сделайте доброе дело - создайте ролик, объясняющий и показывающий действия пользователя на конкретном примере с использованием:
1) установленного phpBBex предыдущей версии,
2) репозитория с обновлёнными файлами phpBBex и
3) обновления форума до новой версии phpbbex со слиянием всех изменений, произведённых хотя бы двумя-тремя установленными модами, которые чудом (либо трудом тех, кто их для phpBBex адаптировал) встали на движок без каких-либо уведомлений, что требуется внести правки в какие-либо файлы.

И это при условии, что Админ форума является новоиспечённым и мало что понимает в HTML, CSS и других страшных для него словах. И первый же конфликт при слиянии файлов поставит его в тупик предложением выбрать нужный вариант между одной частью кода и другой, почти такой же. :smile:
Каковы шансы создать такой обучающий ролик? :wink:
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 12 лет 7 месяцев

Сообщение #125 Sumanai » 23.10.2013, 22:01

JoteRuso:И первый же конфликт при слиянии файлов поставит его в тупик предложением выбрать нужный вариант между одной частью кода и другой, почти такой же.

Для этого есть этот форум поддержки :smile: Никто же не заставляет делать выбор сразу. ПК такая вещь, что с этим уведомлением может работать сколько угодно, покуда пользователь или электрики не выключат его. Вполне можно сходить в эту тему и спросить.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 10 месяцев

Сообщение #126 hobot-bobot » 24.10.2013, 09:20

Это конечно хорошо, но что делать?
hobot-bobot M
Аватара
Откуда: Череповец
Репутация: 23
С нами: 11 лет 7 месяцев

Сообщение #127 factotum » 24.10.2013, 09:49

hobot-bobot:Это конечно хорошо, но что делать?
Разрешать противоречия. Между движком, направленным в массы (для каждого) и системой обновления совместной разработки, используемой профессиональными командами кодеров.

У меня пока свой вариант, может поможет:

Из-за большого количество правок в своей версии (в теме не осталось ничего общего с исходным просилвером) клонировал phpBBex, а свою тему выделил в отдельную. Получил:
В случае возникновения конфликтов с собственной темой после обновления - есть возможность переключиться на стандартную
Ядро стараюсь не трогать - как правило хватает простого копирования из свежего дистрибьютива.
В репозитарии не так много пуллов темы - один за одним переносится в свою тему ручками
factotum
Откуда: Люксембург
Репутация: 234
С нами: 12 лет 7 месяцев

Сообщение #128 rbooze » 03.04.2014, 12:11

HD321kbps:Вот набросал свою, схожа с другими, но вдруг кому поможет)

Мне помогла! Долго читал все руководства, но в итоге сообразил что делать после этого. Плюс вот этот нюанс:

VEG:Для обновления до релизной версии нужно её указать, вот так:

Основная заморочка с тем, что здесь даны инструкции для командной строки. Я работал через графический интерфейс. Сейчас попробую накидать краткий мануал, что делал я на своей системе. Может тоже пригодится кому.

Добавлено спустя 2 часа 9 минут:
Как я апгрейдил phpBBex с версии 1.6 до 1.7.1 с помощью Mercurial и Tortoise HG на OS X 10.9.2

Данное руководство является расшифровкой пункта 1 вот этого руководства.

Отсюда скачал самую последнюю версию клиента. Пробовал другие клиенты для Mercurial, более симпатичные но они не выполняли работу. Этот менее симпатичный, но в итоге - работает!

Далее конкретные шаги с картинками.

1) Меню файл > Клонировать репозиторий

Изображение

2) В поле Соурс вбивается адрес репозитория (как на скрине). В поле дестинейшн, куда будете скачивать. Я качал в локальный AMPPS чтобы сразу на ходу смотреть как работает. В меню Опшнс указываем версию v1.6.0

Изображение

3) Теперь у нас есть нулячая phpBBex 1.6. Поверх неё надо поставить свою версию форума, со всеми модами, папками, в общем всё что есть целиком. Для этого я использовал менеджер файлов FastCommander. Можно аналогичный. Просто копируем всё с замещением.

Изображение

4) Как результат, у нас есть локальный репозиторий версии 1.6 с нашими модами. Теперь подгружаем всякую всячину от версии 1.7.1. Для этого используем функцию Pull.

Изображение

5) Всё благополучно скачалось, и теперь то что скачалось надо интегрировать с нашей версией форума. Для из списка надо выбрать строку с версией 1.7.1 (ревизия 683). Щёлкаем правой кнопкой и выбираем Апдейт.

Изображение

6) В окошке видим, что у нас сейчас будет проходить обновление с 1.6 до 1.7.1. Интуитивно расставил галочки.

Изображение

7) Получаю сообщение, что есть конфликты. В вашем случае их может и не быть!

Изображение

8) В окошке у меня оказалось несколько файлов. Выделяя каждый из них по отдельности я выбирал справа Take Local (Если хотел оставить свою версию файла) или Take Other (Если хотел заменить свой файл на новую версию).

Изображение

В итоге я один файл оставил из своей сборки и ещё в один ручным методом перенёс одну строчку модификации. Всё! Я даже удивился, что всё прошло настолько безболезненно. Различных модификаций и мелких правок у меня скопилось много, все они встали и работают (тьфу-тьфу вроде как, если вдруг найду поломку дополнительно сообщу).

p.s. для разрешения конфликтов, чтобы смотреть что на что мне предлагают заменить, скачал дистрибутив 1.7.1 и смотрел там.

Добавлено спустя 43 минуты 25 секунд:
dream.reckless:Скажите, а чтобы обновится до версии 1.6 - тоже будет достаточно всего лишь обновления файлов? И на момент обновления - форум лучше "закрыть" от пользователей?

Не знаю насколько это правильно, но во время обновления форум не закрывал. Закачал архив на сервер, распаковка с замещением старых файлов заняла 2 секунды. В онлайне было около 15 юзеров. Никто не пострадал :smoke:
rbooze
Аватара
Репутация: 95
С нами: 11 лет 3 месяца

Сообщение #129 Sumanai » 03.04.2014, 15:12

rbooze, про обновление БД не забыли? А так всё правильно. Только рекомендую всё же объединять правки вручную.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 10 месяцев

Сообщение #130 rbooze » 03.04.2014, 17:03

Sumanai, не забыл. Поэкспериментирую ещё :smile: На phpBBex 2.0! :eek: Когда выйдет :biggrin:
rbooze
Аватара
Репутация: 95
С нами: 11 лет 3 месяца

Сообщение #131 VEG » 03.04.2014, 18:16

rbooze:Sumanai, не забыл. Поэкспериментирую ещё :smile: На phpBBex 2.0! :eek: Когда выйдет :biggrin:
К сожалению, такой способ обновления в случае перехода на 2.0 не годится — слишком отличаются движки. Все старые моды нужно будет переделывать.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #132 Xisp » 03.04.2014, 19:16

VEG:Все старые моды нужно будет переделывать.

Не факт, что все и кардинально. Многострадальный Quote Post Back Link (Обратная ссылка в цитате) работает (один модификатор добавился), кроме автодобавления параметров в базу данных и админ- панели. Вот не знаю, радоваться или печалиться тому, что обновление ббкодов отложили до версии 3.2
Xisp
Репутация: 9
С нами: 11 лет 7 месяцев

Сообщение #133 rbooze » 03.04.2014, 19:30

VEG:К сожалению, такой способ обновления в случае перехода на 2.0 не годится — слишком отличаются движки.

Ну вот, только разобрался с mercurial и всё зря! :cry:
rbooze
Аватара
Репутация: 95
С нами: 11 лет 3 месяца

Сообщение #134 Sumanai » 03.04.2014, 19:44

Инструмент полезный, так что не зря. К тому же после 3.1 тоже нужно будет обновляться :wink:
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 10 месяцев

Сообщение #135 VEG » 03.04.2014, 22:23

Xisp:Многострадальный Quote Post Back Link (Обратная ссылка в цитате) работает (один модификатор добавился), кроме автодобавления параметров в базу данных и админ- панели.
Это потому что разработчики практически не обновили движок BBCode, хотя планировали.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #136 mfana » 04.04.2014, 08:39

VEG:К сожалению, такой способ обновления в случае перехода на 2.0 не годится — слишком отличаются движки.
Кстати, VEG, а шаблоны сильно отличаться будут? У меня правок в оригинальных файлах нет, кроме нескольких переменных в языковых + отдельный стиль (ну там да, правлено + свои css добавлены). Так вот я к чему: стили заработают на 2.0? :)
mfana M
Аватара
Откуда: ХМАО
Репутация: 17
С нами: 10 лет 8 месяцев

Сообщение #137 Sumanai » 04.04.2014, 14:57

Напрямую- нет. Только с ручным переносом правок. За адаптивный дизайн нужно же чем- то платить.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 10 месяцев

Сообщение #138 mfana » 04.04.2014, 21:38

На phpbb 3.1 бету почти корректно поставился. На первый взгляд минимум правок придется делать. :hi:
mfana M
Аватара
Откуда: ХМАО
Репутация: 17
С нами: 10 лет 8 месяцев

Сообщение #139 Алексей » 13.05.2014, 04:03

Можно ли создать у себя на локальном компьютере репозиторий для всех файлов сайта, где в отдельной папке установлен форум phpbbex, например в папке /forum/, как у многих сайтов, и изменения из репозитория phpbbex затягивать только в эту папку - /forum/ ? :insane:

Т.е. хотелось бы изменять и контролировать с помощью Mercurial все файлы сайта (включая файлы форума), но изменения из репозитория phpbbex затягивать и делать слияние только для файлов форума:

Локальный компьютер.png
Алексей M
Аватара
Репутация: 19
С нами: 12 лет 2 месяца

Сообщение #140 Boroda » 13.05.2014, 11:11

Алексей, я так понимаю репозиторий нужно создавать на хостинге. На локальный комп будете делать обновления phpbbex и потом их пушить на свой хостинг. ИМХО.

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

Пред.След.

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