Работа с репозиторием (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
Репутация: 1653
С нами: 11 лет 11 месяцев


Сообщение #81 Валентин » 26.02.2013, 18:02

VEG
Ок, большое спасибо, перекрестясь, попробую получить новые ништяки вручную :nervious:

Добавлено спустя 2 часа 28 минут 43 секунды:
Фух, обновился... пришлось еще вручную вносить записи в украинский язык (не планируешь внести его в репозитарий?). И пришлось разобраться с грехом пополам с функцией merge...
При первом сохранении настроек новых параметров в панели администратора ругнулся SQL Database на что-то, я уж перепугался, вернулся обратно, пересохранился - все нормально, конференция работает, новые плюшки тоже, старые (мои моды) вроде не пострадали.
Валентин
Репутация: 21
С нами: 11 лет 2 месяца

Сообщение #82 VEG » 26.02.2013, 22:20

Для всех последних изменений в теме новшеств в репозитории указал запросы необходимые для обновления до описанной ревизии. В будущем тоже буду указывать — чтобы вам не приходилось вручную составлять нужные запросы. Надеюсь, так будет проще.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #83 madbatman » 28.02.2013, 11:48

JoteRuso:Понятно... ((( Шансов у меня, видимо, никаких.
Репозиторий фишка клевая из описания, но и у меня вот тоже шансов никаких нет,сложно для меня.
Буду ждать обновочку от phpBBeх, тогда всё ништяки и пощупаю руками.
madbatman M
Аватара
Откуда: Москва
Репутация: 4
С нами: 11 лет 1 месяц

Сообщение #84 alex88 » 01.03.2013, 19:23

madbatman все просто так то, сливаешь клиент, устанавливаешь, создаешь папку, по ней кликаешь правой клавишей, выбираешь Clone, пишешь адрес репа из первого сообщения, все копируется, вот и все у тебя последняя версия, если надо копируешь это на хостинг, потом при обновлении, кликаешь по папке правой клавишей, выбираешь Hg workbench, там слева в меню кликаешь по имени форума выбираешь, Terminal, вводишь hg pull, если апдейты есть вводишь потом hg update и все, копируешь на хостинг если надо.
alex88
Репутация: 6
С нами: 11 лет 6 месяцев

Сообщение #85 madbatman » 02.03.2013, 10:14

alex88, спасибо.
Просто конечно, для профи.

Видео бы подробное с рабочего стола кто бы записал как пользоваться репозиторием.
Тогда бы наверное и у меня бы получилось.
:smile:
madbatman M
Аватара
Откуда: Москва
Репутация: 4
С нами: 11 лет 1 месяц

Сообщение #86 VEG » 02.03.2013, 11:03

alex88, там и для остальных команд есть кнопки :) Просто мне кажется, в консоли всё проще и понятнее (конкретно в этом случае), а в кнопках я постоянно путаюсь.

madbatman, в первом сообщении есть пример работы по шагам. Попробуйте повторить всё что там написано.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #87 madbatman » 03.03.2013, 09:02

VEG:Попробуйте повторить всё что там написано.

Это подойдет?

phpBB [media]
madbatman M
Аватара
Откуда: Москва
Репутация: 4
С нами: 11 лет 1 месяц

Сообщение #88 VEG » 03.03.2013, 11:11

Ну на этом видео лишнее показано. Вам коммиты не нужны. На самом деле достаточно освоить три операции из первого сообщения темы.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #89 dream.reckless » 05.03.2013, 00:55

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

Сообщение #90 Валентин » 05.03.2013, 01:46

dream.reckless
И не только до версии 1.6, а и до любого изменения в репозитарии:
1. Форум закрыть, 2. сделать бэкап базы данных и 3. бэкап файлов, 4. потом меркуриалом обновить файлы, 5. сделать файл импорта новшеств в базе данных, 6. применить его на хостинге, 7. скопировать обновленные файлы на хостинг, 8. сделать очистку кеша, 9. включить форум...
Для уменьшения времени простоя форума до минимума (пара минут) можно в такой последовательности: 3 - 4 - 5 - 1 - 2 - 6 - 7 - 8 - 9
В скором времени сделаю подробнейшую инструкцию от и до как обновлять вручную, схема у меня может и не оптимальная, но на 100% рабочая.
Валентин
Репутация: 21
С нами: 11 лет 2 месяца

Сообщение #91 VEG » 05.03.2013, 10:41

dream.reckless:Скажите, а чтобы обновится до версии 1.6 - тоже будет достаточно всего лишь обновления файлов? И на момент обновления - форум лучше "закрыть" от пользователей?
Я так понимаю, у вас сейчас версия 1.5.3, а не версия из репозитория? При выходе новой стабильной версии будет опубликована инструкция по обновлению. Как правило, обновление заключается в обновлении файлов и выполнении небольшого SQL скрипта в базе.

Если у вас версия из репозитория, то при обновлении до последней ревизии смотрите здесь какие запросы нужно выполнить, чтобы привести базу к актуальному состоянию. На этой странице все описанные изменения — это то, что появилось в phpBBex после выхода 1.5.3 и уже доступно в репозитории. Ну и через какое-то время это войдёт в phpBBex 1.6.0.
При этом если у вас хостинг с установленным Mercurial, то вы сможете обновлять файлы прямо на сервере — в таком случае процесс будет занимать секунд 5, и в закрытии форума просто нет необходимости.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #92 HD321kbps » 21.03.2013, 13:36

думаю как-то изучить спасибо за видео madbatman,
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет

Сообщение #93 VEG » 23.03.2013, 13:15

В первое сообщение добавлено несколько полезных команд для тех, кто делает свои стили и локализации.

Получение изменений в стиле между версиями 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
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #94 VEG » 24.03.2013, 17:47

Все эти команды выводят данные в 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
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #95 JoteRuso » 02.04.2013, 19:09

VEG:Хостинги, на которых был замечен предустановленный Mercurial:
nic.ru (на 201 тарифе)
hc.ru
hc.ru можно смело вычёркивать из списка.
Код: Выделить всё
Здравствуйте!

К сожалению, Mercurial отсутствует на Вашем хостинге и ее установка невозможна.
Для использования Mercurial Вы можете воспользоваться VPS-хостингом:
http://spb.hc.ru/ru/services/hosting/vps/

--
С уважением,
Виктор Зоткин
Департамент по работе с клиентами Хостинг-Центра
Телефоны:
+7 495 544-55-66
+7 812 448-30-04
 8 800 100-14-14 (для регионов России)
Факс: +7 495 514-09-57
http://hc.ru

30.03.2013 13:32 - JoteRuso написал(а):

> Номер договора: 102347838
> Здравствуйте!
> Подскажите, есть ли на тарифе cPanel2 предустановленная система
> контроля версий Mercurial?
> Если нет, то есть ли возможность её установки по заявке клиента?
>
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #96 VEG » 02.04.2013, 19:12

JoteRuso, вот уж странно, ибо когда я ранее с ними сталкивался — Mercurial у них был. Может быть, повезло.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #97 JoteRuso » 02.04.2013, 19:23

VEG:Может быть, повезло.
Наверное. Только хотел перейти к ним, а тут такое... Ну ладно. Одного клиента они потеряли )))
Хотел ещё взять пробный (двухнедельный, "бесплатный") хостинг на nic.ru, но там народ хитрый - "Вы сначала денег у нас на свой счёт положите, а там и пробуйте". Причём на пробу даётся урезанный в возможностях вариант.
Вот такой вот ненавязчивый сервис.
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #98 VEG » 02.04.2013, 19:39

JoteRuso, но зато хостинг у них очень приятный. Что-то среднее между shared и VPS. Можно настраивать свой сервер как душе угодно :) Я с 2009 года пользуюсь их услугами.

Добавлено спустя 2 минуты 28 секунд:
И да, на shared-хостингах наличие Mercurial обычно неофициальная фича. Но на nic.ru я работал с несколькими площадками — Mercurial везде был. Хоть и в характеристиках нигде не указано. Судя по всему, у них все площадки работают на одной настроенной ими конфигурации, поэтому и софт везде одинаковый.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #99 Heroin » 11.04.2013, 22:47

установка, на сколько я понимаю, прошла успешно, осталось научиться пользоваться
ssh.png
Heroin M
Аватара
Откуда: syzran
Репутация: 39
С нами: 11 лет 11 месяцев

Сообщение #100 JoteRuso » 11.04.2013, 22:52

Heroin, повеселила предпоследняя строчка с их конКЕРТными задачами :smile:
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Пред.След.

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