Урок Работа над проектом через GitHub в DOTA2

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
ВСЕ НИЖЕ СКАЗАННОЕ НЕОБХОДИМО ТОЛЬКО ДЛЯ РАБОТЫ В КОМАНДЕ ! ! !

Если вы работаете один или делитесь своим кодом через любой анологичный сервис, возможно вам это не интересно, не удобно, не привычно будет!
Во избежание медицинских противопоказаний, вы даете согласие не выдвигать претензий к автору после прочтения

Многие из вас знакомы с тем что такое хранилище (репозитарий) git , так же как и сервисом github.com предоставляющий более удобное взаимодествие с хранилищами через их интерфейс на сайте и их ПО для основых ОС ( GitHub Desktop ) .

Репозито́рий, хранилище — место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Существуют репозитории для хранения программ, написанных на одном языке или предназначенных для одной платформы
Git (произносится «гит»[7]) — распределённая система управления версиями.
Одно из множества ПО для работы с git через графический интерфейс

1589109921615.png

И все было бы ничего, да только наши умельцы из Valve сделали структуру аддонов в DOTA2, не совсем удобной.
Система git следит за папкой и всем ее содержимым на предмет изменения, то что не требуется для отслеживания заносится в игнор.
В нашем случае без ухищрений мы можем получить 1 проект с хранилищем в git в папке с установленной DOTA2. (возможно вы даже этим не пользуетесь)
1589111074674.png
Тот же самый хаос есть и в папке Content, нас интересует только 1 папка из dota_addons - тот самый наш проект/кастомная_карта/дополнение_dota2
У нас это папка testmklink полный путь :
D:\Steam\steamapps\common\dota 2 beta\content\dota_addons\testmklink
D:\Steam\steamapps\common\dota 2 beta\game\dota_addons\testmklink
Я специально выделил красным цветом то, за чем следить нашему гит не следует. Мы это не изменяем, к нашему проекту это относится косвенно, там Valve производит свои обновления , патчи, кеши итп.
Мы хотим следить и делиться с участниками команды - только содержимым папки testmklink , большей частью ее содержимого.
Все что находится на красном пути мы можем занести в игнор систему гит, и сразу встает большая проблема - за этим игнор списком надо следить, все ли игнорируется после очередного обновления из стима.
1 Можно упороться и придумать много хороших масок для игнора - но вы никогда не сможете себе дать 100% гарантию работы этого игнор списка.
2 У вас не будет возможности параллельно работать с несколькими проектами (основной и тестовые, или просто другие кастомки из разных команд).

Мы подошли к основному вопросу - можно ли как то изменить ситуацию ? - ответ ДА. Ниже не большой гайд:

Всем вам знакомы ярлыки (на файл или папку), нечто подобное мы и сделаем, только что бы любая внешняя программа не заметила разницу.
Наш git будет следить за содержимым нашего проекта :
наш проект в папке Dota2:
D:\Steam\steamapps\common\dota 2 beta\content\dota_addons\testmklink
D:\Steam\steamapps\common\dota 2 beta\game\dota_addons\testmklink
эти папки использует Dota 2 Workshop Tools
Всем остальным мы создадим прозрачный доступ к этим папкам.
Наш проект в папке git:
D:\Apro\test\content\dota_addons\testmklink
D:\Apro\test\game\dota_addons\testmklink
1589113983704.png
Снизу стрелочкой указан наш скрипт выполняющий первую часть "магии".
!!!ВАЖНО в пути папок и названиях не должен быть восклицательный знак !!!

  1. Вы создали проект 1589114152303.png
  2. Добавляете мой скрипт (это обычный bat файл) скачать отсюда можно клонировать проект, он пустой.
  3. Редактируем скрипт под себя 1589114988085.png сохраняем
  4. Затем проверив что у нас есть папки content\dota_addons и game\dota_addons , а так же в самой доте есть ваш проект "имя папки" которой отредактированно в скрипте выше - ЗАПУСКАЕМ СКРИПТ
  5. 1589115163487.png Скрипт проверяет где лежит ваш проект в доте (2 папки), затем проверяет, что в папках гит нету мешающих папок с названием как в доте. И только после этого создает заветные "ярлыки".
  6. 1589115287215.png Повторный запуск демонстрирует ошибку: тут сказанно, что папка или ссылка уже существует и ее надо удалить.
  7. 1589115395876.png На этом работа скрипта и действия с ним окончены, мы получили 2 окна к проекту в папке дота2 (на самих папках видна стрелочка как на обычных ярлыках).
  8. Теперь осталось исправить маленькую особенность работы github или git в windows.
    При работе с ветками, или иными откатами в git проекте, какое то ПО удаляет нашу ссылку и восстанавливает на ее место обычную папку с содержимым из архива. Решение не совсем мне нравится, но пока что это лучшее, что смог придумать. Мы запретим системе удалять эти ссылки, при этом внутри папки и подпапок должен оставаться полный доступ к содержимому, Поехали!
  9. Продолжение в следующем сообщении (лимит на скриншоты).
 
Последнее редактирование:

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Продолжаем пункт 9:
  1. 1589116898753.png Открываем свойства только что созданной папки, видим Группы или пользователи, которые создаются при работе скрипта, нажимаем дополнительно:
  2. 1589116912460.png Отключаем все наследования:
  3. 1589117033813.png Соглашаемся удалить:
  4. 1589117068692.png Жмем добавить:
  5. 1589117102983.png Выбираем:
  6. 1589117126436.png Пишем Все - если нажать "проверить имена" должно стать подчеркнутым (значит такая категория доступа есть)
  7. 1589117407663.png Делаем в указанной очередности.
  8. 1589117471217.png Нажимаем применить и ок (соглашаемся на продолжение операции)
  9. 1589117534294.png Вот такие свойства мы должны получить в итоге. Повторяем тоже самое для другого ярлыка-папки.
Теперь корректность работы всех компонентов повышена на порядок. Я не гарантирую что этот способ не будет иметь недостатков или особенностей.
Протестирован запрет на удаление на Win10 Pro для других программ (удалить вы сможете, т.к. владелец, после всех изменений зайдите в папки и нажмите ок в предупреждении)
Сам скрипт работает так же на версии Win7 Pro. (протестирую запрет на удаление, возможно добавлю инструкцию, если она будет отличаться)

Скрипт можете дорабатывать и менять на свое усмотрение, как вам захочется (оставляйте только информацию внутри об авторах, которые использованы для его создания, включая меня)
 
Последнее редактирование:
  • Влюблен
Реакции: EHOT_Art

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Краткий вариант без проверок, без визуальной состовляющей, без автопоисков и т.д.
Версия для тех кто в теме:

Огромное спасибо всем кто дочитал и понял.
На простые вопросы отвечаю в топике. Сделать за вас стоит дорого.

Написано по настоянию vulkantsk, спс за пинки )
 

Вложения

  • create_mklink.zip
    1 KB · Просмотры: 23
Последнее редактирование:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Какой монстр писал этот скрипт ради двух простых команд в консоли?
 

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Какой монстр писал этот скрипт ради двух простых команд в консоли?
самый обыкновенный, которые не имеет навыков магии например удаленно сделать эти 2 команды на компьтере дизайнера/моделлера/сценариста , да и программисты не все понимают как и с чем это употребить.
многим действительно проще сказать мне так удобнее отстаньте . этот скрипт работает без меня и моих подсказок. да забыл упомянуть что гайд как раз для тех кто не знал и не понимал о такой возможности как упростить себе жизнь.
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Пожалуй один из самых полезных гайдов на custom games :cool:
 
  • Влюблен
Реакции: kain

LAPKI

Продвинутый
26 Окт 2018
271
61
1589272111387.png
почему? система контроля версий используется и в соло разработке, ведь можно накосячить в проекте и потом не восстановить, а хранить кучу копий кастомки в ручную такая себе идея, да и в принципе гит можно использовать как удаленное хранилище
 
  • Нравится
Реакции: vulkantsk

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Не знаю по какой причине, но до текущего момента никак не мог заставить себя посмотреть данную статью целиком.
Не понятно по какой именно причине так получилось, из за того что статья написана слишком громоздко или еще по какой-то не понятной причине. Большой обьем, много цвета и работы со шрифтами...
Да здесь действительно много информации, которой разработчику молодому/старому знать не обязательно, а если ему надо то он сам разберется. В общем статья могла быть раза в 2-3 меньше, не потеряв в этом ни капли смысла.
Учтем еще тот момент, что не описывается применение ключевой функции mklink, которая является основополагающей в данном гайде...
вызываем панель управления через "cmd"
Код:
mklink /j "место_откуда_тянем" "место_куда_притянем" // делаем для game
mklink /j "место_откуда_тянем" "место_куда_притянем" // делаем для content

В общем я ничего в этой статье изменять не буду, она достаточна хороша и так.
Пусть микрочелики набивают шишки в поисках верных ответов )
Всех благ и удачи )
 
Реклама: