Работа с новым репозиторием (Mercurial на Bitbucket)

Список разделов phpBBex 1.x (поддерживается) Мастерская 1.x

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

Сообщение #1 VEG » 04.07.2014, 21:04

Разработка phpBBex ведётся под управлением системы управления версиями Mercurial. Если вы разберётесь с ним, то получите удобный и быстрый инструмент для обновления вашего форума. Mercurial может сам загружать все самые свежие изменения в phpBBex прямо на ваш хостинг (через SSH), автоматически объединяя (если это возможно) ваши правки со свежим кодом phpBBex. Это намного удобнее, чем самостоятельно загружать все файлы и вручную переносить свои правки на новые версии. Mercurial стоит того, чтобы потратить время на его изучение.

Ранее исходные коды phpBBex находились в репозитории на Google Code. Если вы пользовались старым репозиторием, вам необходимо по этой инструкции перейти на новый репозиторий, который находится на сервисе Bitbucket.

Обратите внимание, что для использования Mercurial на вашем хостинге, он должен быть там установлен. Проверить, установлен ли у вас Mercurial очень просто — нужно подключиться по SSH и ввести команду hg version. Если вы увидите не ошибку, а информацию о версии — значит всё установлено. Иначе обратитесь в техническую поддержку хостинга, чтобы они вам установили Mercurial — как правило, хостеры без проблем соглашаются на это. На некоторых хостингах вы можете установить Mercurial и самостоятельно, но проще всё-таки через тех-поддержку, не зря же вы им деньги платите.

Хостинги, на которых был замечен предустановленный Mercurial:
  • nic.ru (на 201 тарифе)

Рассмотрим работу на вашем локальном компьютере. Для начала работы скачайте и установите подходящую версию TortoiseHg. Работать с Mercurial можно как при помощи GUI, так и при помощи командной строки. Управлять репозиторием значительно проще из командной строки, поэтому здесь будут примеры именно для неё.

Начинаем работать с Mercrurial (пример работы)

1. В Total Commander заходим в каталог, где нужно будет создать каталог с форумом.
2. Запускаем консоль в текущем каталоге (внизу есть поле для ввода команд — пишем cmd и жмём enter).
3. Скачиваем phpBBex v1.7.1 в подкаталог forum командой:
Код: Выделить всё
hg clone -r v1.7.1 https://bitbucket.org/vegalogic/phpbbex forum
4. Закрываем консоль. У нас появился каталог forum с файлами phpBBex версии 1.7.1.
5. Изменяем что-нибудь (например, в шаблоне).
6. В каталоге forum (наш рабочий каталог) запускаем cmd.
7. Скачиваем последние изменения (рабочий каталог не изменится, они закачаются в каталог .hg):
Код: Выделить всё
hg pull
8. Обновляем код в рабочем каталоге до версии 1.8.0 (не указывайте версию вообще, если хотите последнюю нестабильную версию):
Код: Выделить всё
hg update v1.8.0
В результате у вас должен получиться phpBBex версии 1.8.0, но с вашими правками.

Установка репозитория на уже существующий форум и его обновление

1. Возьмите каталог вашего форума и удалите в нём весь ненужный мусор (чем больше левых файлов — тем больше может быть проблем), а также удалите каталог install (или во что вы его переименовали) и файл .hgtags.
2. В Total Commander заходим в любой временный каталог, где будет создан каталог с форумом.
3. Запускаем консоль в текущем каталоге (внизу есть поле для ввода команд — пишем cmd и жмём enter).
4. Скачиваем вашу версию phpBBex (например, v1.7.1 — важно правильно выбрать версию) в подкаталог forum командой:
Код: Выделить всё
hg clone -r v1.7.1 https://bitbucket.org/vegalogic/phpbbex forum
5. В появившийся каталог перенесите все файлы вашего оригинального форума, заменяя оригиналы.
6. В каталоге forum (наш рабочий каталог) запускаем cmd.
7. Скачиваем последние изменения (рабочий каталог не изменится, они закачаются в каталог .hg):
Код: Выделить всё
hg pull
8. Обновляем код в рабочем каталоге до версии 1.8.0 (не указывайте версию вообще, если хотите последнюю нестабильную версию):
Код: Выделить всё
hg update v1.8.0
В результате у вас должен получиться phpBBex версии 1.8.0, но с вашими правками. Всё, теперь ваш форум уже под управлением Mercurial и обновлён. Можете перенести получившийся каталог в нужное место. Не удаляйте подкаталог .hg и файл .hgtags. При необходимости дальнейшего обновления просто выполняйте команды hg pull и hg update v1.8.0 (указывайте нужную версию) в рабочем каталоге. Когда ваш форум под управлением Mercurial — не изменяйте и не удаляйте файлы без надобности (например, не нужно удалять каталог install_forum и styles/prosilver), также не захламляйте рабочий каталог лишними файлами — мусор также может создать вам неприятности.

При обновлении могут возникнуть конфликты, если вы исправляли тот же код, который исправлен и в новой версии phpBBex. Если у вас не слишком много правок по отношению к phpBBex, то вероятность конфликта невелика. С установленным TortoiseHg в случае конфликта выскочит графическое окошко для разрешения конфликта (там будет код оригинала, ваш код, код из нового phpBBex), где вы сможете объединить ваш код и код из нового phpBBex.
Без TortoiseHg команда hg update просто отрапортует, что «n files unresolved» с n больше нуля (читайте что пишут эти команды), а перед этим укажет в каких файлах проблемы. Внутри тех файлов проблемные участки будут помечены знаками <<< (поиском по файлу найдёте), и будет вставлен как ваш (будет подписан local), так и код из нового phpBBex (будет подписан other). Вы должны объединить этот участок и сохранить.

Если у вас на хостинге при конфликтах открывается vimdiff, но вы хотите разрешать конфликты, например, в Notepad++ (подключившись удалённо), можете в файле ~/.hgrc прописать:
Код: Выделить всё
[ui]
merge=internal:merge
После этого у вас все конфликтные места в файлах будут помечаться способом, описанным выше (символами <<< и т.д.). При конфликтах в каких-то файлах система будет предупреждать вас таким образом:
Код: Выделить всё
merging language/ru/help_rules.php incomplete! (edit conflicts, then use 'hg resolve --mark')
После того, как вы разрешите все перечисленные таким образом конфликты, выполните команду hg resolve --mark, чтобы Mercurial знал, что вы разрешили все конфликты.

Чтобы лучше разобраться с Mercurial, рекомендуем серию статей о Mercurial для новичков: Hg Init. Скорее всего, когда вы начнёте пользоваться Mercurial, не будете понимать, как вы жили без него раньше :)

Замечания касательно репозитория 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.7.1 и 1.8.0:
Код: Выделить всё
hg diff -r v1.7.1 -r v1.8.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в стиле между версией 1.8.0 и последней в репозитории:
Код: Выделить всё
hg diff -r v1.8.0 ./styles/prosilver/ > prosilver.diff
Получение изменений в русскоязычных языковых файлах между версиями 1.7.1 и 1.8.0:
Код: Выделить всё
hg diff -r v1.7.1 -r v1.8.0 ./language/ru/ > langru.diff
Получение изменений в русскоязычных языковых файлах между версией 1.8.0 и последней в репозитории:
Код: Выделить всё
hg diff -r v1.8.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 месяцев


Сообщение #41 puxtelka » 18.09.2014, 22:12

А как быть если я потерял локальный репозиторий что делать в этом случае???
puxtelka
Репутация: 0
С нами: 9 лет 11 месяцев

Сообщение #42 Sumanai » 18.09.2014, 22:30

Выполняйте инструкцию "Установка репозитория на уже существующий форум". Старые ревизии потеряны навсегда.
Как вариант- начать повторять правки с закреплением изменений отдельными пулл реквестами, для порядка.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #43 puxtelka » 18.09.2014, 22:42

По сайту сделано только установлен портал и галерея, тоесть если я правильно Вас понял мне надо сделать бекап базы и потом установить форум галерею и портал и потом залить бекап базы???
puxtelka
Репутация: 0
С нами: 9 лет 11 месяцев

Сообщение #44 Sumanai » 18.09.2014, 22:58

Какая база, о чём вы? В закреплённом сообщении, инструкция "Установка репозитория на уже существующий форум", берёте и выполняете.
Если галерею качали из репозитория, то на четвёртом этапе выбирать нужно ветку с галереей. Как- дождитесь VEG, я как- то это делал, но не уверен, что это было правильно.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #45 VEG » 05.10.2014, 23:13

puxtelka, проще всего вам будет поступить так. Делайте бэкап всего того что у вас есть. Затем делайте клон phpBBex версии 1.7.1, копируйте в него файл config.php из вашего старого форума, файлы аватар и файлы вложений. То есть устанавливать его как обычно не нужно, он заработает на вашей текущей базе. Затем обновляйтесь по инструкции до последней версии phpBBex 1.8, после корректного обновления выполните команду hg update gallery — вернётся галерея. Выполнять install галереи также не нужно, у вас в базе уже всё есть (только не забудьте после этой команды в появившийся каталог галереи скопировать копии ваших изображений). Ну и поставьте портал как вы его ставили (но инструкции по изменению БД тоже не выполняйте, у вас уже там всё есть).
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #46 HD321kbps » 22.10.2014, 17:14

Подскажите что значит цвет линий при решении конфликтов! Я так понимаю нужно исправлять только красные? остальные он исправит сам?

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

Сообщение #47 modjo » 23.11.2014, 18:58

Может я конечно всех хочу обмануть, но не получится ли сделать таким образом:
- делаем резервное копирование через меню админки в закладке обслуживание
- удаляем абсолютно всё в каталоге, где был форум
- очищаем полностью базу
- качаем версию 1.8
- распаковываем её, делаем установку
- заходим в админку и делаем восстановление (предварительно залив в папку store файл резерва)
- правим файлы (шаблонов и т.д.)
:biggrin:
...просто делать сначала до 1.6, потом до 1.7.1 и только потом до 1.8 :insane: я читаю и мне уже плохо :weirdface: :ill: :nervious: а в итоге ведь всё равно файлы править надо будет точно так же.
Или я неправильно мыслю?
modjo M
Репутация: 6
С нами: 10 лет 11 месяцев

Сообщение #48 Sumanai » 23.11.2014, 22:58

modjo, вы задали вопрос в теме об управления версиями. Так вот, меркуриалу всё равно, через сколько версий обновлять, и никаких правок в лучшем случаи делать не нужно будет. Нужно будет только последовательно выполнить запросы с 1.6, и не забыть запустить оригинальный скрипт обновления для обновления схемы БД с 3.0.11 на 3.0.12..
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #49 modjo » 23.11.2014, 23:37

Ну как же никаких правок, когда думаю у каждого есть какие-то изменения в шаблоне.
Те же вставки AdSense... ну и т.п.
modjo M
Репутация: 6
С нами: 10 лет 11 месяцев

Сообщение #50 Sumanai » 24.11.2014, 00:14

Если их мало, то меркуриал сам в автоматическом режиме их объединит.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #51 malkin » 18.07.2015, 23:50

Пытаюсь обновиться 1.9.0 до 1.9.1
в .hgrc прописано:
[ui]
merge=internal:merge
При обновлении 5 конфликтов:
Безымянный.png

При открытии этих файлов там ничего не отмечено.
Хотя должно:
VEG:Если у вас на хостинге при конфликтах открывается vimdiff, но вы хотите разрешать конфликты, например, в Notepad++ (подключившись удалённо), можете в файле ~/.hgrc прописать:

Код: Выделить всё
[ui]
merge=internal:merge

Не подскажите что делать?

После этого у вас все конфликтные места в файлах будут помечаться способом, описанным выше (символами <<< и т.д.). При конфликтах в каких-то файлах система будет предупреждать вас таким образом:

Код: Выделить всё
merging language/ru/help_rules.php incomplete! (edit conflicts, then use 'hg resolve --mark')

После того, как вы разрешите все перечисленные таким образом конфликты, выполните команду hg resolve --mark, чтобы Mercurial знал, что вы разрешили все конфликты.
malkin
Репутация: 1
С нами: 10 лет 5 месяцев

Сообщение #52 VEG » 18.07.2015, 23:56

malkin, написано же 0 files unresolved. То есть оно всё сделало автоматически и ваше вмешательство не требуется.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Пред.

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



cron