Используем Mercurial для хранения текущей конфигурации P3D — Начинающим пилотам

Всем привет. Очень часто мы сталкиваемся с необходимостью обновлять P3D. При каждой новой версии нам приходится как минимум устанавливать свежий клиент. От версии к версии меняется структура файла Prepar3d.cfg (какие-то параметры появляются, какие-то уходят), причем какие-то параметры мы часто изменяем сами (в т.ч. через GUI настройки) и не хотели бы терять их при чистке P3D или переустановке винды. Плюс ко всему, часто бывает так, что по какой-то непонятной причине P3D начинает вести себя как-то не так. В всех этих случаях хотелось бы иметь возможность отслеживать изменения во всех конфигурационных файлах (prepar3d.cfg, scenery.cfg, terrain.cfg), чтобы, так скажем, не терять situation awareness над своими конфигами. Вот такую инфу можно получить по файлу Prepar3d.cfg при обновлении клиента P3D, если папку %APPDATA%RoamingLockheed MartinPrepar3D v5 добавить в локальный репозиторий. 

2021-01-11_17-04-24.jpg

Ответов: 7

Теперь гайд, как это сделать.

1. Устанавливаем tortoiseHG https://tortoisehg.bitbucket.io/

2. запускаем tortoiseHG, заходим в «file — new repository», выбираем папку (ctrl+V или browse).  расположение основных конфигов (под каждую папку создаем свой репозиторий) :
— prepar3d.cfg: %APPDATA%RoamingLockheed MartinPrepar3D v5
— terrain.cfg, scenery.cfg: %PROGRAMDATA%Lockheed MartinPrepar3D v5
для примера я создаю тестовый репозиторий в папке C:UsersromanDesktoptest, в котором у меня лежит всего один файл copy_web_extensions.bat

2021-01-11_17-17-55.jpg

3. теперь мы готовы сделать первый коммит. выделяем все файлы, которые хотим отслеживать (выделим всё), указываем комментарий и нажимаем commit

2021-01-11_17-23-16.jpg

4. пробуем поменять что-то в отслеживаемом файле и посмотреть, как это выглядит в tortoiseHG. чтобы зафиксировать изменения, делаем очередной коммит (в коммит попадают только те файлы, которые вы отметили флагом)

2021-01-11_17-28-03.jpg

йцуйцу.jpg

5. теперь откатываем изменения. выделяем предыдущий коммит, жмем ПКМ и выбираем Update. файл откатится до нужного состояния

123.jpg

final.jpg

6. можем посмотреть историю по файлу. сделаем еще один коммит для наглядности:

apple.jpg

7. теперь выберем другой режим отображения файлов — «отображать все файлы» (в данном случае необязательно, но в будущем у вас может не быть нужного файла в данном окне, т.к. окно может отображать либо все файлы, либо только измененные файлы). заходим в «file history/annotate» и видим все отслеживаемые изменения данного файла:

hist1.jpg

hist.gif


Edited by aiRoNe

Почему не git?

И насколько хорошо работает вот это?

1570812952_.png.23af0f700b029cc8ddc3f9ad7125f5e0.png

хотите гит — юзайте гит. а по поводу органайзера я не знаю, что вам сказать, я им не пользуюсь.

репозиторий можно выгрузить в public. например, для этого вполне подойдет бесплатный sourceForge.

1. создаем репозиторий в sourceforge

sf1.jpg

sf2.jpg

2. копируем информацию для .hgrc (для ssh скорее всего должен быть установлен ssh-клиент по типу putty; если у вас нет — выбирайте https)

sf3.jpg

 

файл .hgrc находится в папке .hg вашего репозитория 

sf4.jpg

3. после того, как добавили path в .hgrc, нажимаете «push outgoing changes to» (в подсказке высветится адрес удаленного репозитория, который вы добавили в pathsdefault файла .hgrc), нажимаем «yes», вводим пароль — и ваш репозиторий выгрузится в public, после чего его можно будет склонировать откуда угодно и когда угодно, но только не сейчас, т.к. sourceforge в данный момент выдает ошибку 500 при попытке clone :(((sf99.jpg

sf5.jpg

вот так выглядит наш репозиторий в веб-интерфейсе sourceforge:

sf6.jpg

 

sf88.jpg

 


Edited by aiRoNe

вот так выглядит папка репозитория для fslabs. очень удобно отслеживать изменения между обновлениями. переключаться между версиями можно в один клик (через update). например, обновился до v126 и что-то пошло не так — встал через update на коммит предыдущей версии и проверил, все ли в порядке, т.к. все файлы вернулись к тому состоянию, которое тобой уже было облетано.

345.jpg

также при обновлении можно спокойно вернуть на место изменения, которые были затерты файлами из стандартной поставки (например, модифицированные текстуры кокпита) — когда вы коммитите очередные изменения, вы можете коммитить только те файлы, которые должны обновиться. не ставим флаги на тех файлах, которые не надо затирать, и они не попадают в коммит. после коммита выделяем их, находясь в режиме в working copy (вкладка commit), дале ПКМ и «revert…» — изменения сбросятся

sf10.jpg


Edited by aiRoNe

On 1/11/2021 at 6:26 PM, aiRoNe said:

после чего его можно будет склонировать откуда угодно и когда угодно, но только не сейчас, т.к. sourceforge в данный момент выдает ошибку 500 при попытке clone :(((

не могу понять, как использовать клонирование по https. но я понял, как склонировать репу по ssh. для этого нужно сгенерировать пару ключей и сохранить public key в account setttings — ssh settings на сайте.

для того, чтобы сгенерировать ключ (да и вообще, чтобы работал ssh), я установил putty. ключ я сгенерировал по инструкции c sourceforge (https://p.sf.net/sourceforge/sshkey). сначала генерируем пару ключей через puttygen: выбираем тип Ed25519, нажимаем Generate, создаем мышкой рандомность. далее в comment указываем USERNAME@shell.sourceforge.net (USERNAME — ваш логин на sourceforge).

puttygen.jpg

public key.jpg

далее public key отправляем на сайт sourceforge в ssh settings.

site1.jpg

site2.jpg

после этого заходим в tortoiseHG, заходим в file — clone, указываем адрес ssh в source (адрес начинается с ssh://, т.е. hg clone в этом поле tortoiseHG — лишнее) и нажимаем clone. вводим пароль и репозиторий склонирован (он появится в вашем workbench со всей историей изменения). представьте, что вы произвели этот маневр после переустановки винды. важное замечание: security key на сайте обновится не сразу.

hg.jpg

довольно сложный гайд получился, всем спасибо.


Edited by aiRoNe

В 21.01.2021 в 01:19, aiRoNe пишет:

после переустановки винды

Тут главное — добиться чтобы такого не происходило.