Работа с репозиторием (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: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months


Post #121by factotum » 22.10.2013, 17:47

hobot-bobot wrote:Ничерта не понимаю что делаю
Могу ошибаться, но клиент говорит, что у Вас неревизионные файлы. Скорее всего перед объединением нужно утвердить Ваши изменения.
Клиент с GUI tortoise hg. Удобней и проще управлять событиями
Если "улучшение" стало "граблями" - Вы его переросли
factotum
Гуру
Location: Люксембург
Reputation: 234
With us: 4 yaers 11 months

Post #122by Alexandr_ » 22.10.2013, 18:00

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

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


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


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


Игнорирование файлов:
phpBB [media]
Alexandr_
Бывалый
Reputation: 4
With us: 3 yaers 5 months

Post #123by VEG » 23.10.2013, 00:34

hobot-bobot wrote:Пробую обновить
Судя по всему вы сделали клон репозитория не для той версии, которой у вас сейчас файлы. Вы должны изначально клонировать репозиторий строго до той версии phpBBex, которая у вас используется, и только потом обновлять файлы в рабочем каталоге до последней версии.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

Post #124by JoteRuso » 23.10.2013, 20:43

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

И это при условии, что Админ форума является новоиспечённым и мало что понимает в HTML, CSS и других страшных для него словах. И первый же конфликт при слиянии файлов поставит его в тупик предложением выбрать нужный вариант между одной частью кода и другой, почти такой же. :smile:
Каковы шансы создать такой обучающий ролик? :wink:
JoteRuso M
Гуру
Avatar
Location: Москва, Россия
Reputation: 535
With us: 4 yaers 11 months

Post #125by Sumanai » 23.10.2013, 22:01

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

Для этого есть этот форум поддержки :smile: Никто же не заставляет делать выбор сразу. ПК такая вещь, что с этим уведомлением может работать сколько угодно, покуда пользователь или электрики не выключат его. Вполне можно сходить в эту тему и спросить.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 1 month

Post #126by hobot-bobot » 24.10.2013, 09:20

Это конечно хорошо, но что делать?
ОАО "РЖД" - Редко Живу Дома
hobot-bobot M
Бывалый
Avatar
Location: Череповец
Reputation: 23
With us: 3 yaers 11 months

Post #127by factotum » 24.10.2013, 09:49

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

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

Из-за большого количество правок в своей версии (в теме не осталось ничего общего с исходным просилвером) клонировал phpBBex, а свою тему выделил в отдельную. Получил:
В случае возникновения конфликтов с собственной темой после обновления - есть возможность переключиться на стандартную
Ядро стараюсь не трогать - как правило хватает простого копирования из свежего дистрибьютива.
В репозитарии не так много пуллов темы - один за одним переносится в свою тему ручками
Если "улучшение" стало "граблями" - Вы его переросли
factotum
Гуру
Location: Люксембург
Reputation: 234
With us: 4 yaers 11 months

Post #128by rbooze » 03.04.2014, 12:11

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

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

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

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

Added after 2 hours 9 minutes:
Как я апгрейдил phpBBex с версии 1.6 до 1.7.1 с помощью Mercurial и Tortoise HG на OS X 10.9.2

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

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

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

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

Image

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

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

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

Не знаю насколько это правильно, но во время обновления форум не закрывал. Закачал архив на сервер, распаковка с замещением старых файлов заняла 2 секунды. В онлайне было около 15 юзеров. Никто не пострадал :smoke:
rbooze
Гуру
Avatar
Reputation: 96
With us: 3 yaers 7 months

Post #129by Sumanai » 03.04.2014, 15:12

rbooze, про обновление БД не забыли? А так всё правильно. Только рекомендую всё же объединять правки вручную.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 1 month

Post #130by rbooze » 03.04.2014, 17:03

Sumanai, не забыл. Поэкспериментирую ещё :smile: На phpBBex 2.0! :eek: Когда выйдет :biggrin:
rbooze
Гуру
Avatar
Reputation: 96
With us: 3 yaers 7 months

Post #131by VEG » 03.04.2014, 18:16

rbooze wrote:Sumanai, не забыл. Поэкспериментирую ещё :smile: На phpBBex 2.0! :eek: Когда выйдет :biggrin:
К сожалению, такой способ обновления в случае перехода на 2.0 не годится — слишком отличаются движки. Все старые моды нужно будет переделывать.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

Post #132by Xisp » 03.04.2014, 19:16

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

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

Post #133by rbooze » 03.04.2014, 19:30

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

Ну вот, только разобрался с mercurial и всё зря! :cry:
rbooze
Гуру
Avatar
Reputation: 96
With us: 3 yaers 7 months

Post #134by Sumanai » 03.04.2014, 19:44

Инструмент полезный, так что не зря. К тому же после 3.1 тоже нужно будет обновляться :wink:
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 1 month

Post #135by VEG » 03.04.2014, 22:23

Xisp wrote:Многострадальный Quote Post Back Link (Обратная ссылка в цитате) работает (один модификатор добавился), кроме автодобавления параметров в базу данных и админ- панели.
Это потому что разработчики практически не обновили движок BBCode, хотя планировали.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

Post #136by mfana » 04.04.2014, 08:39

VEG wrote:К сожалению, такой способ обновления в случае перехода на 2.0 не годится — слишком отличаются движки.
Кстати, VEG, а шаблоны сильно отличаться будут? У меня правок в оригинальных файлах нет, кроме нескольких переменных в языковых + отдельный стиль (ну там да, правлено + свои css добавлены). Так вот я к чему: стили заработают на 2.0? :)
mfana M
Бывалый
Avatar
Age: 35
Location: ХМАО
Reputation: 18
With us: 3 yaers

Post #137by Sumanai » 04.04.2014, 14:57

Напрямую- нет. Только с ручным переносом правок. За адаптивный дизайн нужно же чем- то платить.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 1 month

Post #138by mfana » 04.04.2014, 21:38

На phpbb 3.1 бету почти корректно поставился. На первый взгляд минимум правок придется делать. :hi:
mfana M
Бывалый
Avatar
Age: 35
Location: ХМАО
Reputation: 18
With us: 3 yaers

Post #139by Алексей » 13.05.2014, 04:03

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

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

Локальный компьютер.png
Алексей M
Бывалый
Avatar
Age: 37
Reputation: 19
With us: 4 yaers 6 months

Post #140by Boroda » 13.05.2014, 11:11

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

Собственно так как у вас на картинке. За той лишь разницей, что репозиторий не на компе, а на хостинге.
Boroda M
Мастер
Avatar
Age: 42
Reputation: 39
With us: 4 yaers 10 months

PreviousNext

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

Quick reply


Enter the code exactly as it appears. All letters are case insensitive.
Confirmation code
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: View more smilies

   

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