Coder Social home page Coder Social logo

gitrunner's Introduction

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:

Значения:

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

gitrunner's People

Contributors

240596448 avatar artbear avatar asosnoviy avatar dmpas avatar dtsarapkin avatar evilbeaver avatar khorevaa avatar lo0p3r avatar nixel2007 avatar reallinfo avatar realmaxa avatar theshadowco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gitrunner's Issues

Gitrunner logo proposal

Hello, I am a graphic designer. I contribute to open source softwares by designing logos. Do you want me to design a logo for Gitrunner?. I will wait for feedback. Have a nice day!

Ошибка проведения тестирования приложения использующего библиотеку

Выдается ошибка

{Модуль /usr/share/oscript/lib/package-loader.os / Ошибка в строке: 90 / Невозможно загрузить модуль РежимУстановкиНастроекGit. Такой символ уже определен.}

Комментирование строчки https://github.com/nixel2007/gitrunner/blob/master/src/%D0%93%D0%B8%D1%82%D0%A0%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9.os#L6 помогает убрать ошибку

ПолучитьИсторию в виде коллекции

нужно получить историю в виде массива, таблицы для последующей обработки логики

то есть примерно так:

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

Ошибка проведения тестирования для руссифицированной версии git!!

При тестировании на XUBUNTU с руссификацией git status выводит

Функциональность Получение состояния репозитория
-
-
-
-       На ветке master
-
-       Начальный коммит
-
-       нечего коммитить (создайте/скопируйте файлы, затем запустите «git add», чтобы отслеживать их)
-       ) СОДЕРЖИТ (On branch master).}
-               ВызватьИсключение Префикс + " " + СообщениеОшибки;
ОШИБКА   -       Вывод команды содержит "On branch master"
            Сломался

git version 2.9.3

Клонирование последнего коммита

git clone --depth=1 <remote_repo_url>

Было бы здорово получить этот функционал.
Он очень пригодится в тестах/фичах

Например, у меня в ванесса-раннер нужно протестировать прогон тестов через xUnitFor1C и Vanessa-behavior.
Как сабмодули их подключать не хочется, т.к. эти модули нужны для только тестирования.

В тесте я бы клонировал нужную ветку с ограничением объема клонирования и использовал.

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

Установка параметров содержащих пробел

При установке параметров типа "user.name" и значении "Тестовый пользователь" происходит не корректная установка значения. Устанавливается только слово "Тестовый"

ПолучитьСписокВнешнихРепозиториев() возвращает непустую таблицу при отсутствии remote

ВнешнийРепозиторий = ТаблицаВнешнихРепозиториев.Добавить();

После этой строки идут условия с пропусками "продолжить". Это же явная ошибка?
Добавлять строку нужно после проверок строки.

Авторизация

Коллеги, подскажите можно ли использовать гитраннер в случае получения/пуша из непубличных (т.е. закрытых и требующих авторизации) репозиториев?
Спасибо

Определение существования git-репозитория

Нужна штатная возможность определения того, что рабочий каталог является репозиторием git.

Например данная операция реализована в gitsync следующим образом: https://github.com/oscript-library/gitsync/blob/v2.0.2/src/core/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B/%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80%D0%A1%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8.os#L834

Добавить логи в ВыполнитьКоманду - команда Гита + параметры команды

нужно добавить логи в ВыполнитьКоманду, т.к. в ней показаны только коды возврата, но нифига не понятно, какая именно команда гита выполняется.
Хотелось бы видеть команду Гита + параметры команды
В режиме отладки.

Вызывать процедуру ВосстановитьКоммитера() безусловно

Если в репозитории не был указан коммитер (user.name и user.mail) локально, а использовалась глобальная настройка, то после синхронизации с хранилищем в локальной настройке остаётся автор последнего коммита, из-за чего новые коммиты, сделанные вручную, начинают попадать в репозиторий от имени не того пользователя, который их делает.
Чтобы такого не возникало, внутри ВосстановитьКоммитера() в случае пустых настроек нужно выполнять команды git config --unset user.name и/или git config --unset user.email.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.