Skip to content

Latest commit

 

History

History
30 lines (19 loc) · 4.69 KB

WORK_WITH_MAP.md

File metadata and controls

30 lines (19 loc) · 4.69 KB

F.A.Q. по картам

Q: Хочу изменить карту, куда смотреть, что делать?
A: Зайди в папку tools/_git-hooks и запусти install скрипт под твою ОС. После этого найди карту которую хочешь изменить и изменяй.

Q: Что за хуки и зачем они мне нужны?
A: Хуки автоматизируют некоторые моменты при работе с репозиторием. В частности, когда ты коммитишь изменённую карту один из хуков производит её чистку и конверт в TGM формат.

Q: Без хуков никак?
А: Вообще можно и без этого. Зайди в папку tools/dmm-merge-tool и прочти README. Без хуков тебе нужно будет каждый раз проделывать работу описанную в параграфе про ручной способ использования, тогда как в с хуками всё будет происходить автоматически и без твоего участия. Но зачем?

Q: Зачем всё это нужно? Нельзя просто изменить карту в редакторе и залить через вебинтерфейс?
А: Нельзя. Наши карты находятся в формате TGM, это не нативный для бьёнда формат, поэтому необходимо чтобы форматирование делалось сторонней тулой.

Q: Что такое TGM формат?
А: Особый формат придуманный контрибьютером с tgstation. Удобство данного формата в том, что он крайне приветлив для работы с git. Детальней можно прочитать в ПРе, в котором данный формат был представлен tgstation/tgstation#10623

Q: Создал ПР с изменениями на карте. Сейчас гитхаб пишет, что на моей карте мерж конфликт, что делать?
А: Мерж конфликт может возникнуть в нескольких случаях. Первый: другой контрибьютер, в результате своих изменений, создал новые ключи для тайлов. Тоже самое произошло в твоём ПРе. Второй: ты изменил тот же тайл, что и другой контрибьютер в другом ПРе и его изменения были смержены раньше. Третий: придумай сам.

Do not panic!

Рецепт для всего один. Во-первых, если ты этого ещё не сделал, установи хуки в папке _git-hooks. В процессе установки будет сконфигурирован мерж драйвер для карт, который как-раз предназначен для разрешения конфликтов. Далее синхронизируй свою локальную ветку с апстрим мастер веткой. Как сконфигурировать апстрим ветку и проводить синхронизацию с ней читай тут wiki/Git-console

Тезисно: ты должен должен сделать git merge upstream/master. Если всё пройдёт гладко, то перед тобой не откроется окно с надписью CONFLICT и дело за малым. Но если такое окно откроется, то это значит, что ты изменил тот же тайл, что и другой контрибьютер. Ты можешь выбрать чьи изменения оставить: твои или его. Но принимай решение с умом и перепроверь, что ничего после не сломал. (Выбор будет предоставляться столько раз, сколько пересеклись ваши изменения.)

После того как синхронизация завершена ещё раз проверь, что всё твоё и чужое на месте и делай git push. Если всё сделал правильно конфликт будет разрешён.