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


Сообщение #141 VEG » 13.05.2014, 12:02

Алексей, Mercurial поддерживает работу с под-репозиториями. То есть создаёте репозиторий в каталоге /forum/, в дополнение к этому можете создать ещё один репозиторий в родительском каталоге.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #142 Алексей » 13.05.2014, 12:56

Boroda, на локальном компе репозитория всего сайта, а на хостинге его клон. Но на локальном компе в репозитории всего сайта содержится подрепозиторий клона репозитория файлов форума phpbbex . В общем смысл - вложенность одного репозитория в другой.

Добавлено спустя 43 секунды:
VEG, спасибо, не ожидал - действительно поддерживает вложенность. В "родительском" репозитории файлов вложенного репозитория уже нет, т.е. при изменении файлов форума изменения будут только в репозитории форума, а не в двух сразу, как я думал, - в "родительском" и вложенном(форум).

Только вот следующие действия не понятно для чего нужны:

Изображение
Изображение

В родителськом репозитории появился файл .hgsub
Изображение

После коммита в родительском репозитории структура репозиториев стала вот такой:
Изображение
Т.е. изменения в репозитории forum без значка дублируются в репозиторий forum со значком S ( в группе site.ru ). Получается что репозиторий forum со значком S - это вроде ярлыка или символьной ссылки на репозиторий forum без значка
Алексей M
Аватара
Репутация: 19
С нами: 11 лет 6 месяцев

Сообщение #143 VEG » 13.05.2014, 20:32

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

Сообщение #144 Гость » 27.06.2014, 16:14

Не могу разобраться:
1. Подключаюсь к серверу через putty.
2. Ввожу команду
Код: Выделить всё
hg clone https://code.google.com/p/phpbbex/ forum    
после чего на сервере появляется папка forum
3. В putty перехожу в папку forum и при вводе команды:
Код: Выделить всё
hg pull
пишет ошибку - no changes found (изменения не найдено).

Что не так сделалано?
Гость
Гость

Сообщение #145 Гость » 28.06.2014, 11:27

Хер ответят (
Гость
Гость

Сообщение #146 VEG » 30.06.2014, 21:12

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

Сообщение #147 VEG » 04.07.2014, 21:03

Переезд исходных кодов на Bitbucket

С самого появления phpBBex его исходный код находился на сервисе Google Code. Однако, к сожалению, Google давно не развивает этот сервис, а недавно там и вовсе запретили создавать новые файлы в разделе Downloads. Хорошо, что они хотя бы оставили возможность скачивать старые файлы (для архивных целей). А для нас это отличный повод поменять хостинг исходных кодов на что-то более современное. Мы выбрали Bitbucket. Этот сервис позволяет создавать репозитории Mercurial или Git на выбор. Мы остаёмся на Mercrurial, поскольку он более приятен в использовании.

Адрес нового репозитория: https://bitbucket.org/vegalogic/phpbbex/
Команда для клонирования нового репозитория:
Код: Выделить всё
hg clone https://bitbucket.org/vegalogic/phpbbex

В репозитории была изменена мета-информация, поэтому если вы ранее получали исходные коды phpBBex из репозитория на Google Code, просто указать новый родительский репозиторий не выйдет. Следуйте этой инструкции:

  1. Загрузите все доступные на Google Code изменения в ваш репозиторий, выполнив следующие команды:
    Код: Выделить всё
    hg pull -r v1.8.0
    hg update -r v1.8.0
  2. Удалите в вашем репозитории (или переместите куда-нибудь на всякий случай) каталог .hg и файл .hgtags.
  3. В любом другом каталоге клонируйте новый репозиторий до версии 1.8.0 командой:
    Код: Выделить всё
    hg clone -r v1.8.0 https://bitbucket.org/vegalogic/phpbbex
  4. В появившемся каталоге phpbbex возьмите каталог .hg и файл .hgtags, и скопируйте их в каталог с вашим форумом.

Готово. Теперь ваш репозиторий привязан к новому репозиторию phpBBex на Bitbucket. Можете сделать hg pull и hg update, чтобы получить самые свежие изменения.

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

Пред.

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