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

Сообщение #2 Гость » 05.07.2014, 15:35

VEG:2. Запускаем консоль в текущем каталоге (внизу есть поле для ввода команд — пишем cmd и жмём enter)
А он в ответ "cmd 500 Unknown command."
Гость
Гость

Сообщение #3 VEG » 05.07.2014, 16:00

Гость, у вас какая ОС? Также консоль можно запустить при помощи Win+R, ввести cmd, затем enter. После этого командой cd нужно перейти в нужный вам каталог. При запуске консоли через Total Commander или любой другой подобный файловый менеджер рабочий каталог будет устанвлен сразу. Если вы делаете через Total Commander, и вас беспокоит эта ошибка, вероятно, проблема в том, что у вас какая-то сторонняя сборка со странными настройками.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #4 Гость » 05.07.2014, 16:10

Правильно ли я делаю через putty

Создаю в корне форума папку forum
В неё качаю hg clone -r v1.7.1 https://bitbucket.org/vegalogic/phpbbex forum (так как у меня 1,6)
Далее hg pull
И hg update v1.7.0
Ну а потом запросы в БД
Гость
Гость

Сообщение #5 VEG » 05.07.2014, 17:33

Если у вас 1.6, то вы должны изначально скачивать репозиторий до версии 1.6:
Код: Выделить всё
hg clone -r v1.6.0 https://bitbucket.org/vegalogic/phpbbex forum
Затем поместите файлы вашего форума в рабочий каталог (но при этом сохраните каталог install_forum и templates/subsiler2, чтобы Mercurial не задавал лишних вопросов, и лучше не заменять файл .hgtags копией с вашего форума).
Затем:
Код: Выделить всё
hg pull
hg update v1.8.0
В первой команде мы указывали версию 1.6.0, потому что с неё обновляем файлы. А после — версию 1.8.0, потому что на неё обновляемся. В дальнейшем, если вы не будете удалять репозиторий, будет достаточно делать hg pull и hg update для обновления.

Ни в коем случае не делайте этого на рабочей версии форума, пока не разберётесь чётко в том, что вы делаете!
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #6 Гость » 05.07.2014, 17:46

После hg update v1.8.0

Изображение

Добавлено спустя 42 минуты 35 секунд:
А запросы в БД как делать - сразу как для 1.8 или сначала на 1.7 потом на 1.8
Гость
Гость

Сообщение #7 VEG » 05.07.2014, 18:29

Гость, похоже на конфликт. К сожалению, у меня на хостинге Mercurial не предлагает таких удобств, и я разрешаю редкие конфликты на сервере в обычном текстовом редакторе, а серьёзные обновления я делаю на локалке, где есть удобный оконный kdiff3 (он по умолчанию появляется при конфликтах). То есть интерфейс на скриншоте мне незнаком.

Изображение

На экране разрешения конфликта должно выводиться 3 файла: оригинальный файл откуда мы обновляемся (версия 1.6.0), ваша исправленная версия файла и версия этого файла из целевой версии (1.8.0). Судя по всему, первая колонка здесь — это ваша версия файла из 1.6.0 с вашими правками, вторая колонка — версия из целевого 1.8.0, а в третьей — исходный файл из 1.6.0. И вам должна быть дана возможность «слепить» из трёх вариантов один. Что странно, я не вижу на скриншоте конфликта. Вы добавили строки в самом начали и в конце файла, по идее должно было смержиться без проблем. Может быть у вас Mercurial настроен на отображение всех файлов, которые он мержит?
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #8 Гость » 05.07.2014, 18:36

Да уже кое как обновил :smile: А запросы в БД как делать - сразу как для 1.8 или сначала на 1.7 потом на 1.8
Гость
Гость

Сообщение #9 VEG » 05.07.2014, 18:38

Гость, всё что не касается файлов — сразу для 1.7 (включая действия в админке), затем для 1.8.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #10 Гость » 05.07.2014, 18:50

VEG:Гость, всё что не касается файлов — сразу для 1.7 (включая действия в админке), затем для 1.8.
Спасибо, почти всё получилось, кое что придётся ручками. А так мне понравился Mercurial (почти разобрался)

Добавлено спустя 16 минут 44 секунды:
Править ни чего не пришлось, всё ок (невнимательно посмотрел) Я люблю Mercurial :biggrin:
Гость
Гость

Сообщение #11 Давний Гость » 05.07.2014, 19:39

Пожалуйста. выпустите обновление phpbbex
Давний Гость
Гость

Сообщение #12 Давний Гость » 06.07.2014, 22:09

Задал вопрос хостеру о Mercurial, вот ответ:

Здравствуйте.

Да, система управления версиями установлена и доступна для использования. Воспользуйтесь, пожалуйста, утилитой hg.

p.s. Научите, что и как использовать? Хочу научиться и без проблем обновлять форум.

Спасибо
Давний Гость
Гость

Сообщение #13 Sumanai » 06.07.2014, 22:10

В первом, прикреплённом сообщении всё есть.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 8 месяцев

Сообщение #14 Давний Гость » 06.07.2014, 23:00

Sumanai, без особых знаний, все же реально этому научиться и сделать всё без косяков?
Давний Гость
Гость

Сообщение #15 Sumanai » 07.07.2014, 03:53

Конечно. Просто думайте, что делаете, гуглите, что не понимаете, спрашивайте, что не гуглиться. И думайте. Я же освоил, хотя хотя образования в этом направлении не имею.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 8 месяцев

Сообщение #16 VEG » 07.07.2014, 10:08

Давний Гость, в первом сообщении есть ссылка на обучающий цикл статей hg init (там вы сможете освоить даже больше нужного, но это может вам пригодиться) и пример работы с Mercurial. Для начала рекомендую разбраться с примером работы на локалке, а потом вы сможете перенести этот опыт на сервер. Для примера, обновление 4 моих форумов занимает у меня обычно секунды 3, пока я набираю команду updateall (я написал эту команду для себя, она сама заходит в каталоги форумов и делает там hg pull и hg update). У меня форумы почти не модифицированы, поэтому конфликты бывают исключительно редко, и я их быстро разрешаю на месте (но здесь уже нужно понимание в PHP/HTML и т.д., чтобы из двух вариантов кода слепить общий). Если вы планируете сильно модифицировать форум, и не уверены, что сможете быстро сами разрешать конфликты в случае их возникновения, лучше обновления всё же делать на локалке, чтобы ваш форум не простаивал.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #17 Давний Гость » 07.07.2014, 23:28

к сожалению я ничего не осилил и не понял как запустить всё это, скачал и ничего не понял.
есть возможность у кого-нибудь как-то удаленно обновить? модов никаких нет
Давний Гость
Гость

Сообщение #18 VEG » 08.07.2014, 01:05

Давний Гость, если модов никаких нет, то в этом нет необходимости, вы можете использовать станадртную инструкцию по обновлению путём простой заменой файлов. Смотрите в ветке с анонсом под заголовком «Обновление c phpBBex 1.7.1 до 1.8.0».
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

Сообщение #19 puxtelka » 08.07.2014, 09:09

Почемучка и незнайка спрашивают...

Делаю таким образом
1)
Код: Выделить всё
hg clone -r v1.7.1 https://bitbucket.org/vegalogic/phpbbex forum
2) hg pull
3) Поле в нее копирую с хостинга рабочий форум
4) hg pull
5) hg update v1.8.0
6)Становлюсь на строчку Merge Conflict и выбираю сторону "С" Конфликт повторяется 2 раза
7)Копирую все на тестовую площадку а там так и остается версия 1.7.1.

На сайте навешен портал и галерея.Если обновляться заменой всех фаилов к чему это может привести??

Спасибо за внимание =)
Вложения
repozitorii.jpg
puxtelka
Репутация: 0
С нами: 10 лет 6 месяцев

Сообщение #20 VEG » 08.07.2014, 11:54

puxtelka, Если у вас есть галерея, вы скорее всего вы её устанавливали при помощи Mercurial, и у вас уже должен быть репозиторий. Вы должны использовать его, делать новый клон репозитория не нужно. Дело в том, что ветка с галереей — это отдельный код, который обновляется в пределах ветки gallery без номеров версий, а номера получают только версии без галереи. То есть если у вас есть галерея из репозитория — то у вас не версия v1.7.1, которую вы клонируете, а какая-то ревизия из ветки gallery. Поэтому и возникает конфликт с файлами jQuery и т.д.

В общем вам сейчас нужно найти ваш старый репозиторий, и обновить код форума и сам репозиторий по этой инструкции. В будущем для обновления вам нужно будет вводить только команды hg pull и hg update без всяких номеров версий (потому что если вы укажете номер версии, вы обновитесь до phpBBex с этой версией без галереи). Главное найдите ваш локальный репозиторий и больше не теряйте его :)
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1667
С нами: 12 лет 5 месяцев

След.

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