- PVSM.RU - https://www.pvsm.ru -

Автоматическое обновление приложений с использованием GIT репозитория

image
Думаю, многие программисты в тот или иной момент сталкивались с тем, что нужно как-то решить проблему с доставкой обновлений своего ПО до пользователей.
Способов ее решения множество, я хочу предложить еще один, который мне показался интересным. Он не претендует на звание идеального, но имеет право жить.
Всем программистам я думаю известно, что такое GIT [1](распределённая система управления версиями), данный способ публикации приложения основан на данной системе.

Но при использовании GIT под Windows есть некоторые проблемы, например все найденные мною клиенты GIT, даже в Portable (без установки) версии:
• Занимают много памяти на диске, много требуется скачивать (от 15 до 450 МБ)
• Содержат множество папок и файлов, неудобно их все переносить вместе со своим приложением

Решением данных проблем я и занялся. Что из этого вышло:
Клиент для GIT, который имеет 2 функции (Clone и Pull) на основе LibGit2Sharp [2]
Вес клиента 1,5 Мб в архиве и 3 Мб на диске
Запуск из командной строки
• Всего 5 файлов, которые при желании можно объединить в 1. (1 исполняемый и 4 dll библиотеки)

Процесс публикации в GIT обычно состоит из нескольких простых этапов:

  1. Регистрация и вход в систему управления репозиторием GIT,
  2. Создание репозитория,
  3. Инициализация репозитория на локальной машине,
  4. Загрузка в него проекта,
  5. Commit (сохранение изменений) и публикация репозитория.

Первые 4 шага производятся 1 раз и занимают обычно пару минут [3].
Последний шаг производится каждый раз, когда требуется опубликовать новую версию приложения.

Какие преимущества это дает:

  • Хранение каждой версии приложения и при необходимости быстрый «откат» к старой версии;
  • Загрузка только измененных файлов, вместо загрузки всего приложения (GIT PULL);
  • Публикация «загрузчика» вместо приложения, чтобы быть уверенным, что с какого бы источника не было скачено приложение, оно всегда будет загружать последнюю его версию;
  • Сбой в работе приложения никак не влияет на его загрузчик; соответственно даже при неудачной публикации приложение можно восстановить, достаточно опубликовать рабочую его версию и она снова загрузится всем пользователям;
  • Для дистрибутива и исходных кодов можно использовать отдельные репозитории;
  • Обновлять можно любое приложение, так как ничего в приложении переделывать не требуется;
  • При желании можно обновлять все что угодно, будь то библиотека документации например.

image

Как это работает?
Достаточно создать Bat файл или ярлык на приложение с параметрами, в которых указать URL репозитория и название папки в которую приложение будет загружено. gitnano [urlgit] [dirname]

Например
gitnano.exe github.com/vpuhoff/GitNanoCompiled [4] GitNano

Приложение:

  • если найдет уже скачанный репозиторий, попробует сделать Pull.
  • Если что пойдет не так (например конфликты возникнут), то просто сделает clone еще раз и заменит старую папку на новую.

Естественно все изменения в старой папке сотрутся, что отлично подходит для задачи обновления приложений.

Исходники [5]и ссылка на приложение [4]размещены в GITHUB [6]и доступны все желающим. Предложения по доработке приветствуются.

Надеюсь эта статья поможет тем, кто ищет простой и удобный способ обновлять свое приложение из сети.

Автор: vpuhoff

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-2/189174

Ссылки в тексте:

[1] GIT : https://ru.wikipedia.org/wiki/Git

[2] LibGit2Sharp: https://github.com/libgit2/libgit2sharp

[3] пару минут: https://habrahabr.ru/post/125799/

[4] github.com/vpuhoff/GitNanoCompiled: https://github.com/vpuhoff/GitNanoCompiled/

[5] Исходники : http://neurowareblog.blogspot.com/2016/09/git-c.html

[6] GITHUB : https://github.com/vpuhoff/GitRepoAutoUpdater/

[7] Источник: https://habrahabr.ru/post/310290/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best