Skip to content

Упрощение работы с git из OneScript

License

Notifications You must be signed in to change notification settings

nixel2007/gitrunner

Repository files navigation

gitrunner

gitrunner

Библиотека для упрощения работы с git из oscript.

Позволяет выполнять рутинные операции с репозиторием в стиле v8runner.

Пример работы:

ГитРепозиторий = Новый ГитРепозиторий();
ГитРепозиторий.УстановитьРабочийКаталог(КаталогРепозитория);

ГитРепозиторий.УстановитьНастройку("core.quotePath", "true", РежимУстановкиНастроекGit.Локально);

ГитРепозиторий.ДобавитьВнешнийРепозиторий("origin", ПутьКВнешнемуРепозиторию);

ГитРепозиторий.ПерейтиВВетку("master");
ГитРепозиторий.Получить();

ГитРепозиторий.ОбновитьПодмодули(Истина, Истина);

Расширенный режим работы (например, отправки изменений):

ГитРепозиторий = Новый ГитРепозиторий();
НастройкаОтправить = Новый НастройкаКомандыОтправить;
НастройкаОтправить.УстановитьURLРепозиторияОтправки("origin");
НастройкаОтправить.ОтображатьПрогресс();
НастройкаОтправить.ПерезаписатьИсторию();
НастройкаОтправить.ПолнаяОтправка();

ГитРепозиторий.УстановитьНастройкуКомандыОтправить(НастройкаОтправить);

ГитРепозиторий.Отправить();

Так же описание функциональности содержится в папке features. В прилагающихся step_definitions можно подсмотреть больше примеров.

Публичный интерфейс

Класс ГитРепозиторий:

Работа со свойствами объекта ГитРепозиторий

УстановитьРабочийКаталог

// Установить текущий рабочий каталог.
// Все команды git будут выполняться относительно указанного каталога.
//
// Параметры:
//   ПутьРабочийКаталог - Строка - Путь к рабочему каталогу.
//		Может быть относительным.
//

ПолучитьРабочийКаталог

// Получить текущий рабочий каталог.
//
//  Возвращаемое значение:
//   Строка - Путь к рабочему каталогу
//

ПолучитьПутьКГит

// Получить путь к исполняемому файлу git.
//
//  Возвращаемое значение:
//   Строка - Путь к исполняемому файлу.
//		По умолчанию содержит значение "git".
//

УстановитьПутьКГит

// Установить путь к исполняемому файлу git.
//
// Параметры:
//   Путь - Строка - Путь к исполняемому файлу.
//

ПолучитьВыводКоманды

// Получить вывод последней выполненной команды.
//
//  Возвращаемое значение:
//   Строка - Вывод команды
//

ПолучитьКодВозврата

// Получить код возврата последней выполненной команды.
//
//  Возвращаемое значение:
//   Число - Код возврата выполнения команды
//

УстановитьТихийРежимРаботы

// Устанавливает тихий режим работы библиотеки (без вызова исключений).
//

УстановитьНормальныйРежимРаботы

// Устанавливает нормальный режим работы библиотеки (с вызовом исключений).
//

Общие команды git

Инициализировать

// Выполняет инициализиацию репозитория в рабочем каталоге
// git init
//

Статус

// Получает состояние репозитория
// git status
//
// Параметры:
//   ВКороткомФормате - Булево - Вывод в коротком формате
//
//  Возвращаемое значение:
//   Строка   - Вывод команды
//

ДобавитьФайлВИндекс

// Добавляет файл в индекс git
// git add
//
// Параметры:
//   ПутьКДобавляемомуФайлу - Строка - Путь к файлу на диске
//

Закоммитить

// Зафиксировать проиндексированные изменения в истории git
// git commit
//
// Параметры:
//   ТекстСообщения - Строка - Текст сообщения коммита (-m ТекстСообщения)
//   ПроиндексироватьОтслеживаемыеФайлы - Булево - Автоматически добавить
//     в индекс файлы, уже отслеживаемые git (-a)
//   ПутьКФайлуКоммита - Строка - путь к файлу с текстом комментария (-F ПутьКФайлуСтекстомКоммита)
//   АвторКоммита - Строка - Автор комментария, передается в случае необходимости (--author=АвторКоммита)
//   ДатаАвтораКоммита - Дата - Дата комментария (--date=ДатаАвтораКоммита)
//   Коммитер - Строка - Коммитер комментария, передается в случае, если требуется
//   ДатаКоммита - Дата - Дата произведения коммита
//

ВывестиИсторию

// Вывести историю репозитория
// git log
//
// Параметры:
//   Графически - Булево - Вывести историю в виде графа (--graph)
//

Получить

// Получить изменения из удаленного репозитория
// git pull
//
// Параметры:
//   ИмяРепозитория - Строка - Имя репозитория, из которого необходимо
// 		получить изменения
//   ИмяВетки - Строка - Имя ветки, из которой необходимо получить изменения
//

Извлечь

// Получить изменения из удаленного репозитория без обновления ветки
// git fetch
//
// Параметры:
//   ИмяРепозитория - Строка - Имя репозитория, из которого необходимо
// 		получить изменения
//

Отправить

// git push
//
// Параметры:
//   ИмяРепозитория - Строка - Имя репозитория, в который необходимо
// 		отправить изменения
//   ИмяВетки - Строка - Имя ветки, в который необходимо отправить изменения
//   ПерезаписатьИсторию - Булево - Флаг отправки с перезаписью истории (--force)
//

УстановитьНастройкиРежимаОтправки

// Установить настройки отправки изменений.
// Позволяет произвести тонкую настройку необходимых флагов команды отправки изменений
//
// Параметры:
//   НастройкаКомандыОтправить - НастройкаКомандыОтправить - инстанс класса НастройкаКомандыОтправить с необходимыми
//                                                          настройками
//

КлонироватьРепозиторий

// git clone
//
// Параметры:
//   ПутьУдаленномуРепозиторию - Строка - Путь к удаленному репозиторию
//   КаталогКлонирования - Строка - Каталог, в который необходимо выполнить
//		клонирование
//

УстановитьНастройкуКомандыКлонировать

// Установить настройки клонирования репозитория.
// Позволяет произвести тонкую настройку необходимых флагов команды клонирования репозитория
//
// Параметры:
//   НастройкаКомандыКлонировать - НастройкаКомандыКлонировать - инстанс класса НастройкаКомандыКлонировать с необходимыми
//                                                          настройками
//

ЭтоРепозиторий

// Возвращает признак того, что РабочийКаталог является репозиторием git
//

Работа с ветками

ПолучитьТекущуюВетку

// Получить имя текущей ветки
//
//  Возвращаемое значение:
//   Строка   - Имя текущей ветки
//

ПерейтиВВетку

// Выполнить переход в ветку
// git checkout
//
// Параметры:
//   ИмяВетки - Строка - Имя ветки, в которую необходимо перейти
//   СоздатьНовую - Булево - Флаг необходимости создания новой ветки (-b)
//   Принудительно - Булево - Флаг необходимости принудительно перейти в ветку (-f)
//
// @unstable
//

СоздатьВетку

// Создать новую ветку без выполнения перехода в нее
// git branch
//
// Параметры:
//   ИмяВетки - Строка - Имя создаваемой ветки
//

ПолучитьСписокВеток

// Получить список веток
//
// Параметры:
//   ВключаяУдаленные - Булево - Включать информацию об удаленных ветках
//
//  Возвращаемое значение:
//   ТаблицаЗначений   - Таблица с информацией о текущих ветках.
//		Содержит колонки:
//			Текущая - Булево - Признак текущей ветки
//			Имя - Строка - Имя ветки
//

Работа с внешними репозиториями

ДобавитьВнешнийРепозиторий

// Добавить внешний репозиторий
// git remote add 
//
// Параметры:
//   ИмяРепозитория - Строка - Имя внешнего репозитория
//   АдресВнешнегоРепозитория - Строка - Путь к внешнему репозиторию
//

УдалитьВнешнийРепозиторий

// Удалить внешний репозиторий
// git remote remove
//
// Параметры:
//   ИмяРепозитория - Строка - Имя внешнего репозитория
//

ПолучитьСписокВнешнихРепозиториев

// Получить список внешних репозиториев
//
//  Возвращаемое значение:
//   ТаблицаЗначений   - Таблица с информацией о внешних репозиториях.
//		Содержит колонки:
//			Имя - Строка - Имя внешнего репозитория
//			Адрес - Строка - Путь к внешнему репозиторию
//			Режим - Строка - Режим работы с внешним репозиторием (push/fetch)
//

Работа с подмодулями

ДобавитьПодмодуль

// Добавить новый подмодуль
// git submodule add
//
// Параметры:
//   АдресВнешнегоРепозитория - Строка - Путь к внешнему репозиторию
//   Местоположение - Строка - Каталог, в который необходимо поместить
//		указанный подмодуль
//   Ветка - Строка - Имя ветки внешнего репозитория для получения
//   ИмяПодмодуля - Строка - Имя, под которым подмодуль будет сохранен
//		в настройках
//

ОбновитьПодмодули

// Обновить данные о зарегистрированных подмодулях
// git submodule update
//
// Параметры:
//   Инициализировать - Булево - Выполнять инициализацию подмодуля
//   Рекурсивно - Рекурсивно - Обновлять подмодули подмодулей
//

ПолучитьСостояниеПодмодулей

// Получить состояние подмодулей
//
//  Возвращаемое значение:
//   ТаблицаЗначений - Таблица с информацией о подмодулях.
//		Содержит колонки:
//			ХэшКоммита - Строка - Хэш коммита, на который указывает подмодуль
//			Имя - Строка - Имя подмодуля
//			Указатель - Строка - указатель на внешний репозиторий
//

Работа с настройками

ПолучитьНастройку

// Получить значение настройки git
//
// Параметры:
//   ИмяНастройки - Строка - Имя настройки
//   РежимУстановкиНастроекGit - РежимУстановкиНастроекGit - Режим установки настройки.
//		Значения параметра содержатся в перечислении РежимУстановкиНастроекGit
//
//  Возвращаемое значение:
//   Строка - Значение настройки
//

УстановитьНастройку

// Установить настройку git
// git config
//
// Параметры:
//   ИмяНастройки - Строка - Имя настройки
//   ЗначениеНастройки - Строка - Устанавливаемое значение
//   РежимУстановкиНастроекGit - РежимУстановкиНастроекGit - Режим установки настройки.
//		Значения параметра содержатся в перечислении РежимУстановкиНастроекGit
//

УдалитьСекциюНастроек

// Удаление секции настроек git
//
// Параметры:
//   ИмяСекции - Строка - Имя секции
//   РежимУстановкиНастроекGit - РежимУстановкиНастроекGit - Режим установки настройки.
//

ПолучитьСписокНастроек

// Получить список настроек git
//
// Параметры:
//   РежимУстановкиНастроекGit - РежимУстановкиНастроекGit - Уровень, на котором
//		необходимо искать значения настроек
//
//  Возвращаемое значение:
//   Соответствие - Список настроек.
//		Ключ соответствия - ключ настройки
//		Значение соответствия - значение настройки
//

Выполнение произвольных команд

ВыполнитьКоманду

// Выполнение произвольной команды git
//
// Параметры:
//   Параметры - Массив - Массив строковых аргументов, передаваемых в командную
//		строку. Добавляются после исполняемого файла.
//

Класс НастройкаКомандыОтправить:

ПолучитьПараметрыКоманды

// Функция возвращает массив параметров выполнения команды git
//
```bsl

#### ПолучитьНастройки
```bsl
// Функция возвращает стурктуру с текущими настройками отправки
//
//  Возвращаемое значение:
//   Структура  
//		Доступные ключи:
//			URLРепозитория - Строка - Признак текущей ветки
//			ЗаголовкиОтправки - Массив - Массив строк заголовков
//          ПараметрыКомандыОтправки - Соответсвие - Соответвие настроек команды (ключ - имя параметра, значение - булево)

УстановитьНастройки

// Процедура устанавливает текущими настройками отправки по переданный структуре
//
//  Параметры
//     НовыеНастройкиОтправки - Структура  
//		  Доступные ключи:
//			  URLРепозитория - Строка - Признак текущей ветки
//			  ЗаголовкиОтправки - Массив - Массив строк заголовков
//            ПараметрыКомандыОтправки - Соответсвие - Соответвие настроек команды (ключ - имя параметра, значение - булево)

ДобавитьПроизвольныйЗаголовокОтправки

// Процедура добавляет произвольный заголовок настройками отправки
//
//  Параметры
//     ЗаголовокОтправки - Строка - значение заголовка отправки  
//	

УстановитьURLРепозиторияОтправки

// Процедура устанавливает URL репозитория git в настройками отправки
//
//  Параметры
//     НовыйURLРепозитория - Строка - значение URL git репозитория или имя внешнего репозитория  
//	

УстановитьЗаголовкиОтправки

// Процедура устанавливает массив заголовков отправки репозитория git в настройки отправки
//
//  Параметры
//     НовыйЗаголовкиОтправки - Строка/Массив - Строка или массив готовый заголовок отправки  
//

УстановитьПараметрыКомандыОтправки

// Процедура устанавливает параметры команды в настройки отправки
//
//  Параметры
//     Параметры - Соответвие - Соответвие настроек команды (ключ - имя параметра, значение - булево)  
//

ДобавитьЗаголовкиОтправки

// Процедура добавляет заголовки отправки в настройки отправки
//
//  Параметры
//     ЗаголовокРабочейКопии - строка - строка с именем ветки или refspec рабочей копии   
//     ЗаголовокУдаленногоСервера - строка - строка с именем ветки или refspec удаленного сервера   
//	

ОтображатьПрогресс

// Процедура устанавливает параметры отображения прогресса выполнения команды в настройки отправки
// git push --progress
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

РежимТишины

// Процедура устанавливает параметры режима тишины выполнения команды в настройки отправки
// git push --quiet
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

РежимЗеркала

// Процедура устанавливает параметры режима зеркала выполнения команды в настройки отправки
// git push --mirror
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

РежимУдаления

// Процедура устанавливает параметры режима удаления выполнения команды в настройки отправки
// git push --delete
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

ПолнаяОтправка

// Процедура устанавливает параметры режима полной отправки при выполнении команды в настройки отправки
// git push --all
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

ПерезаписатьИсторию

// Процедура устанавливает режим перезаписи истории при выполнении команды в настройки отправки
// git push --force
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

Отслеживать

// Процедура устанавливает необходимость отслеживать отправленные заголовки при выполнении команды в настройки отправки
// git push --set-upstream
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

РежимПрограммнойОбработкаРезультата

// Процедура устанавливает режим программной обработки результатов при выполнении команды в настройки отправки
// git push --porcelain
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

ОтправкаТегов

// Процедура устанавливает режим отправки тегов при выполнении команды в настройки отправки
// git push --tags
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

УстановитьПроизвольныйРежим

// Процедура устанавливает произвольную настройку при выполнении команды в настройки отправки
//
//  Параметры
//     НаименованиеПараметра - строка - Наименование параметра настройки
//     ЗначениеУстановки - булево - По умолчанию Истина

Класс НастройкаКомандыКлонировать:

ПолучитьПараметрыКоманды

// Функция возвращает массив параметров выполнения команды git
//

УстановитьURLРепозиторияКлонирования

// Процедура устанавливает URL репозитория git в настройками отправки
//
//  Параметры
//     НовыйURLРепозитория - Строка - значение URL git репозитория или имя внешнего репозитория  
//	

УстановитьКаталогКлонирования

// Процедура устанавливает каталог рабочей копии репозитория git в настройками клонирования
//
//  Параметры
//     КаталогКлонирования - Строка - значение URL git репозитория или имя внешнего репозитория  
//	

УстановитьПараметрыКомандыКлонирования

// Процедура устанавливает параметры команды в настройки отправки
//
//  Параметры
//     Параметры - Соответвие - Соответвие настроек команды (ключ - имя параметра, значение - булево)  
//

РежимЗеркала

// Процедура устанавливает параметры режима зеркала выполнения команды в настройки 
//  --mirror
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

РежимБезРабочейКопии

// Процедура устанавливает параметры режима без рабочей выполнения команды в настройки 
//  --bare
//  Параметры
//     ЗначениеУстановки - булево - По умолчанию Истина 

ГлубинаКопии

// Процедура устанавливает параметры глубина получения коммитов команды в настройки 
//  --depth
//  Параметры
//     ЗначениеУстановки - Число - По умолчанию 0 

УстановитьПроизвольныйРежим

// Процедура устанавливает произвольную настройку при выполнении команды в настройки
//
//  Параметры
//     НаименованиеПараметра - строка - Наименование параметра настройки
//     ЗначениеУстановки - булево - По умолчанию Истина

Перечисления

РежимУстановкиНастроекGit:

Значения:

  • Локально
  • Глобально
  • Системно