Работа с репозиторием (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: 6 years 2 months


Post #81by Валентин » 26.02.2013, 18:02

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

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

Post #82by VEG » 26.02.2013, 22:20

Для всех последних изменений в теме новшеств в репозитории указал запросы необходимые для обновления до описанной ревизии. В будущем тоже буду указывать — чтобы вам не приходилось вручную составлять нужные запросы. Надеюсь, так будет проще.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #83by madbatman » 28.02.2013, 11:48

JoteRuso wrote:Понятно... ((( Шансов у меня, видимо, никаких.
Репозиторий фишка клевая из описания, но и у меня вот тоже шансов никаких нет,сложно для меня.
Буду ждать обновочку от phpBBeх, тогда всё ништяки и пощупаю руками.
madbatman M
Бывалый
Avatar
Age: 48
Location: Москва
Reputation: 4
With us: 5 years 4 months

Post #84by alex88 » 01.03.2013, 19:23

madbatman все просто так то, сливаешь клиент, устанавливаешь, создаешь папку, по ней кликаешь правой клавишей, выбираешь Clone, пишешь адрес репа из первого сообщения, все копируется, вот и все у тебя последняя версия, если надо копируешь это на хостинг, потом при обновлении, кликаешь по папке правой клавишей, выбираешь Hg workbench, там слева в меню кликаешь по имени форума выбираешь, Terminal, вводишь hg pull, если апдейты есть вводишь потом hg update и все, копируешь на хостинг если надо.
alex88
Новичок
Reputation: 6
With us: 5 years 8 months

Post #85by madbatman » 02.03.2013, 10:14

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

Видео бы подробное с рабочего стола кто бы записал как пользоваться репозиторием.
Тогда бы наверное и у меня бы получилось.
:smile:
madbatman M
Бывалый
Avatar
Age: 48
Location: Москва
Reputation: 4
With us: 5 years 4 months

Post #86by VEG » 02.03.2013, 11:03

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

madbatman, в первом сообщении есть пример работы по шагам. Попробуйте повторить всё что там написано.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #87by madbatman » 03.03.2013, 09:02

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

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

phpBB [media]
madbatman M
Бывалый
Avatar
Age: 48
Location: Москва
Reputation: 4
With us: 5 years 4 months

Post #88by VEG » 03.03.2013, 11:11

Ну на этом видео лишнее показано. Вам коммиты не нужны. На самом деле достаточно освоить три операции из первого сообщения темы.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #89by dream.reckless » 05.03.2013, 00:55

Скажите, а чтобы обновится до версии 1.6 - тоже будет достаточно всего лишь обновления файлов? И на момент обновления - форум лучше "закрыть" от пользователей?
dream.reckless
Бывалый
Avatar
Reputation: 5
With us: 5 years 6 months

Post #90by Валентин » 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% рабочая.
Валентин
Новичок
Reputation: 21
With us: 5 years 5 months

Post #91by VEG » 05.03.2013, 10:41

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

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

Post #92by HD321kbps » 21.03.2013, 13:36

думаю как-то изучить спасибо за видео madbatman,
HD321kbps M
Гуру
Avatar
Age: 27
Location: Армянск
Reputation: 367
With us: 5 years 3 months

Post #93by VEG » 23.03.2013, 13:15

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

Получение изменений в стиле между версиями 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
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #94by 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
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #95by JoteRuso » 02.04.2013, 19:09

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

К сожалению, 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
Гуру
Avatar
Location: Москва, Россия
Reputation: 536
With us: 6 years 1 month

Post #96by VEG » 02.04.2013, 19:12

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

Post #97by JoteRuso » 02.04.2013, 19:23

VEG wrote:Может быть, повезло.
Наверное. Только хотел перейти к ним, а тут такое... Ну ладно. Одного клиента они потеряли )))
Хотел ещё взять пробный (двухнедельный, "бесплатный") хостинг на nic.ru, но там народ хитрый - "Вы сначала денег у нас на свой счёт положите, а там и пробуйте". Причём на пробу даётся урезанный в возможностях вариант.
Вот такой вот ненавязчивый сервис.
JoteRuso M
Гуру
Avatar
Location: Москва, Россия
Reputation: 536
With us: 6 years 1 month

Post #98by VEG » 02.04.2013, 19:39

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

Added after 2 minutes 28 seconds:
И да, на shared-хостингах наличие Mercurial обычно неофициальная фича. Но на nic.ru я работал с несколькими площадками — Mercurial везде был. Хоть и в характеристиках нигде не указано. Судя по всему, у них все площадки работают на одной настроенной ими конфигурации, поэтому и софт везде одинаковый.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 6 years 2 months

Post #99by Heroin » 11.04.2013, 22:47

установка, на сколько я понимаю, прошла успешно, осталось научиться пользоваться
ssh.png
ЁмоЁВарКутаГин
Heroin M
Гуру
Avatar
Age: 31
Location: syzran
Reputation: 39
With us: 6 years 2 months

Post #100by JoteRuso » 11.04.2013, 22:52

Heroin, повеселила предпоследняя строчка с их конКЕРТными задачами :smile:
JoteRuso M
Гуру
Avatar
Location: Москва, Россия
Reputation: 536
With us: 6 years 1 month

PreviousNext

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



Who is online (over the past 10 minutes)

Users browsing this forum: 1 guest