From ff74271d49192ce9cd88cf7e9c250b06ce8f0d00 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Tue, 14 Dec 2021 23:37:14 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=D0=BE=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D1=83=D1=81=D0=B0=D0=BC=D0=B8=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib.config | 1 + ...21\202\320\276\321\200\320\270\320\271.os" | 9 ++ ...21\202\321\203\321\201\320\276\320\274.os" | 146 ++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" diff --git a/lib.config b/lib.config index 7014e39..2626489 100644 --- a/lib.config +++ b/lib.config @@ -4,4 +4,5 @@ + \ No newline at end of file diff --git "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" index ad40984..cc31680 100644 --- "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" +++ "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" @@ -993,6 +993,15 @@ ТихийРежимРаботы = Ложь; КонецПроцедуры +// Работа со статусом репозитория +// +// Возвращаемое значение: +// РаботаСоСтатусом - Объект класса +Функция ДанныеСтатуса() Экспорт + Статус = Статус(Истина); + Возврат Новый РаботаСоСтатусом(Статус); +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" new file mode 100644 index 0000000..d4f5333 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" @@ -0,0 +1,146 @@ + +Перем Статус; +Перем ТаблицаСостоянийФайлов; +Перем ОписаниеСостояния; + +Процедура ПриСозданииОбъекта(ВыводКоманды) Экспорт + Статус = ВыводКоманды; + ЗаполнитьТаблицу(); +КонецПроцедуры + +#Область ПрограммныйИнтерфейс + +Функция Получить() Экспорт + Возврат Статус; +КонецФункции + +Функция ТаблицаИзменений() Экспорт + Возврат ТаблицаСостоянийФайлов; +КонецФункции + +Функция КДобавлению(КромеИзмененныхВДереве = Ложь) Экспорт + Массив = Новый Массив(); + Для каждого Стр Из ТаблицаСостоянийФайлов Цикл + Если СтрНайти("AMURC", Стр.СостояниеВИндексе) > 0 Тогда + Если КромеИзмененныхВДереве И НЕ ПустаяСтрока(Стр.СостояниеВДереве) Тогда + Продолжить; + КонецЕсли; + Массив.Добавить(Стр.ИмяФайла); + КонецЕсли; + КонецЦикла; + Возврат Массив; +КонецФункции + +Функция КУдалению(УчитыватьПереименование=Истина) Экспорт + Массив = Новый Массив(); + Для каждого Стр Из ТаблицаСостоянийФайлов Цикл + Если СтрНайти("D", Стр.СостояниеВИндексе) > 0 Тогда + Массив.Добавить(Стр.ИмяФайла); + ИначеЕсли СтрНайти("R", Стр.СостояниеВИндексе) > 0 + И УчитыватьПереименование Тогда + Массив.Добавить(Стр.СтароеИмяФайла); + КонецЕсли; + КонецЦикла; + Возврат Массив; +КонецФункции + +Функция ВнеИндекса() Экспорт + Массив = Новый Массив(); + Для каждого Стр Из ТаблицаСостоянийФайлов Цикл + Если ПустаяСтрока(Стр.СостояниеВДереве) Тогда + Продолжить; + КонецЕсли; + Массив.Добавить(Стр.ИмяФайла); + КонецЦикла; + Возврат Массив; +КонецФункции + +Функция НеОтслеживаются() Экспорт + Массив = Новый Массив(); + Для каждого Стр Из ТаблицаСостоянийФайлов Цикл + Если СтрНайти("?", Стр.СостояниеВИндексе) > 0 + Или СтрНайти("?", Стр.СостояниеВИндексе) > 0 Тогда + Массив.Добавить(Стр.ИмяФайла); + КонецЕсли; + КонецЦикла; + Возврат Массив; +КонецФункции + +#КонецОбласти + +Процедура ЗаполнитьТаблицу() + + Для НомерСтроки = 1 По СтрЧислоСтрок(Статус) Цикл + СтрокаСтатуса = СтрПолучитьСтроку(Статус, НомерСтроки); + Если ПустаяСтрока(СтрокаСтатуса) Тогда + Продолжить; + КонецЕсли; + + Стр = ТаблицаСостоянийФайлов.Добавить(); + Стр.СостояниеВИндексе = Сред(СтрокаСтатуса, 1, 1); + Стр.СостояниеВДереве = Сред(СтрокаСтатуса, 2, 1); + + ИмяФайла = Сред(СтрокаСтатуса, 4); + Поз = СтрНайти(ИмяФайла, " -> "); + Если Поз = 0 Тогда + Стр.СтароеИмяФайла = ""; + Стр.ИмяФайла = ИмяФайла; + Иначе + Стр.СтароеИмяФайла = СокрЛП(Лев(ИмяФайла, Поз - 1)); + Стр.ИмяФайла = СокрЛП(Сред(ИмяФайла, Поз + 4)); + КонецЕсли; + + Стр.ОписаниеСостоянияВИндексе = ОписаниеСостояния[Стр.СостояниеВИндексе]; + Стр.ОписаниеСостоянияВДереве = ОписаниеСостояния[Стр.СостояниеВДереве]; + + КонецЦикла; + +КонецПроцедуры + +Процедура Инициализация() + + ТаблицаСостоянийФайлов = Новый ТаблицаЗначений(); + ТаблицаСостоянийФайлов.Колонки.Добавить("ИмяФайла"); + ТаблицаСостоянийФайлов.Колонки.Добавить("СтароеИмяФайла"); + ТаблицаСостоянийФайлов.Колонки.Добавить("СостояниеВИндексе"); + ТаблицаСостоянийФайлов.Колонки.Добавить("СостояниеВДереве"); + ТаблицаСостоянийФайлов.Колонки.Добавить("ОписаниеСостоянияВИндексе"); + ТаблицаСостоянийФайлов.Колонки.Добавить("ОписаниеСостоянияВДереве"); + + // Описание состояний + + // M [ MD] updated in index + // A [ MD] added to index + // D deleted from index + // R [ MD] renamed in index + // C [ MD] copied in index + // [MARC] index and work tree matches + // [ MARC] M work tree changed since index + // [ MARC] D deleted in work tree + // [ D] R renamed in work tree + // [ D] C copied in work tree + // ------------------------------------------------- + // D D unmerged, both deleted + // A U unmerged, added by us + // U D unmerged, deleted by them + // U A unmerged, added by them + // D U unmerged, deleted by us + // A A unmerged, both added + // U U unmerged, both modified + // ------------------------------------------------- + // ? ? untracked + // ! ! ignored + + ОписаниеСостояния = Новый Соответствие(); + ОписаниеСостояния.Вставить("M", "модифицирован"); + ОписаниеСостояния.Вставить("A", "добавлен"); + ОписаниеСостояния.Вставить("D", "удален"); + ОписаниеСостояния.Вставить("R", "переименован"); + ОписаниеСостояния.Вставить("C", "скопирован"); + ОписаниеСостояния.Вставить("U", "обновлен"); + ОписаниеСостояния.Вставить("?", "не отслеживается"); + ОписаниеСостояния.Вставить("!", "игнорируется"); + +КонецПроцедуры + +Инициализация(); \ No newline at end of file From a6950c78468267137c476838f526911e975acfa5 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Wed, 15 Dec 2021 23:32:30 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D0=BA=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BE=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\202\321\203\321\201\320\276\320\262.os" | 86 +++++++++++++++++++ ...2\321\203\321\201\320\276\320\262.feature" | 44 ++++++++++ 2 files changed, 130 insertions(+) create mode 100644 "features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" create mode 100644 "features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" diff --git "a/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" "b/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" new file mode 100644 index 0000000..74d3e8c --- /dev/null +++ "b/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" @@ -0,0 +1,86 @@ +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + ВсеШаги.Добавить("ЯПолучаюВыводСтатусаЧерезКоманду"); + ВсеШаги.Добавить("ЯМодифицируюВременныйФайл"); + ВсеШаги.Добавить("ЯУдаляюВременныйФайл"); + ВсеШаги.Добавить("ЯПолучаюМассивФайловКДобавлениюВКоммит"); + ВсеШаги.Добавить("ЯПолучаюМассивФайловВнеИндекса"); + ВсеШаги.Добавить("ЯПолучаюМассивКУдалению"); + ВсеШаги.Добавить("ЯПолучаюМассивНеослеживаемыхФайлов"); + ВсеШаги.Добавить("МассивФайловСодержит"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + +//Я получаю вывод Статуса через команду +Процедура ЯПолучаюВыводСтатусаЧерезКоманду() Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ГитРепозиторий.ДанныеСтатуса().Получить(); +КонецПроцедуры + +//Я получаю Массив файлов к добавлению в коммит +Процедура ЯПолучаюМассивФайловКДобавлениюВКоммит() Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().КДобавлению(); + БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); +КонецПроцедуры + +//Я получаю Массив файлов вне индекса +Процедура ЯПолучаюМассивФайловВнеИндекса() Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().ВнеИндекса(); + БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); +КонецПроцедуры + +//Я получаю Массив файлов к удалению +Процедура ЯПолучаюМассивКУдалению() Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().КУдалению(); + БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); +КонецПроцедуры + +//Я получаю Массив неослеживаемых файлов +Процедура ЯПолучаюМассивНеослеживаемыхФайлов() Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().НеОтслеживаются(); + БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); +КонецПроцедуры + +//Массив файлов содержит +Процедура МассивФайловСодержит(ИмяФайла) Экспорт + ТаблицаСтатусовМассивФайлов = БДД.ПолучитьИзКонтекста("ТаблицаСтатусовМассивФайлов"); + Ожидаем.Что(ТаблицаСтатусовМассивФайлов).Содержит(ИмяФайла); +КонецПроцедуры + +//Я модифицирую временный файл +Процедура ЯМодифицируюВременныйФайл() Экспорт + ВременныйФайл = БДД.ПолучитьИзКонтекста("ВременныйФайл"); + ЗаписьФайла = Новый ЗаписьТекста(ВременныйФайл); + ЗаписьФайла.ЗаписатьСтроку("Модификация"); + ЗаписьФайла.Закрыть(); +КонецПроцедуры + +//Я удаляю временный файл +Процедура ЯУдаляюВременныйФайл() Экспорт + ВременныйФайл = БДД.ПолучитьИзКонтекста("ВременныйФайл"); + УдалитьФайлы(ВременныйФайл); +КонецПроцедуры diff --git "a/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" "b/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" new file mode 100644 index 0000000..0ebfd01 --- /dev/null +++ "b/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" @@ -0,0 +1,44 @@ +# language: ru + +Функциональность: Получение таблицы состояний файлов + +Как разработчик +Я хочу иметь возможность получать статусы файлов в/вне индекса в виде таблицы +Чтобы использовать их состояние для последующей обработки + +Контекст: + Допустим Я создаю новый объект ГитРепозиторий + И Я создаю временный каталог и сохраняю его в контекст + И Я инициализирую репозиторий во временном каталоге + +Сценарий: Я добавляю новый файл и проверяю его статусы + Допустим Я создаю временный файл "temp.tmp" во временном каталоге и сохраняю его в контекст + + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит "?? temp.tmp" + + И Я получаю Массив неослеживаемых файлов + Тогда Массив файлов содержит "temp.tmp" + + Также Я добавляю временный файл в индекс + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит "A temp.tmp" + И Я получаю Массив файлов к добавлению в коммит + Тогда Массив файлов содержит "temp.tmp" + + Также Я фиксирую изменения с сообщением "Добавлен тестовый файл" + И Я модифицирую временный файл + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит " M temp.tmp" + И Я получаю Массив файлов вне индекса + Тогда Массив файлов содержит "temp.tmp" + + Также Я фиксирую изменения с сообщением "Изменен тестовый файл" + И Я удаляю временный файл + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит " D temp.tmp" + И Я добавляю временный файл в индекс + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит "D temp.tmp" + И Я получаю Массив файлов к удалению + Тогда Массив файлов содержит "temp.tmp" From 21355fc1a04f9ba93206a54b02d8e91b4b9ec5f4 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Thu, 16 Dec 2021 00:35:26 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20+=20=D0=BE=D0=B4=D0=BD=D0=BE=D1=82=D0=B8=D0=BF=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D1=83=D1=81=D0=BB=D0=BE=D0=B2=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\270\321\202\320\276\321\200\320\270\320\271.os" | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" index cc31680..37b9f2d 100644 --- "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" +++ "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" @@ -570,7 +570,7 @@ Для сч = 1 По ЧислоСтрок Цикл Строка = СтрПолучитьСтроку(ВыводКоманды, сч); - Если НЕ ЗначениеЗаполнено(Строка) Тогда + Если ПустаяСтрока(Строка) Тогда Продолжить; КонецЕсли; @@ -693,13 +693,13 @@ Для сч = 1 По ЧислоСтрок Цикл - ДанныеПодмодуля = ТаблицаПодмодулей.Добавить(); - Строка = СтрПолучитьСтроку(ВыводКоманды, сч); Если ПустаяСтрока(Строка) Тогда Продолжить; КонецЕсли; + ДанныеПодмодуля = ТаблицаПодмодулей.Добавить(); + ДанныеСтроки = СтрРазделить(Строка, " ", Ложь); ДанныеПодмодуля.ХэшКоммита = ДанныеСтроки[0]; ДанныеПодмодуля.Имя = ДанныеСтроки[1]; @@ -834,6 +834,10 @@ Для сч = 1 По ЧислоСтрок Цикл Строка = СтрПолучитьСтроку(ВыводКоманды, сч); + Если ПустаяСтрока(Строка) Тогда + Продолжить; + КонецЕсли; + СимволРавно = СтрНайти(Строка, "="); ИмяНастройки = Лев(Строка, СимволРавно - 1); From bb974b2f1bd59224f27cf0d909e1ffcd6e09a62f Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Thu, 16 Dec 2021 19:45:19 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib.config | 2 +- ...20\267\320\270\321\202\320\276\321\200\320\270\320\271.os" | 4 ++-- ...20\241\321\202\320\260\321\202\321\203\321\201\320\260.os" | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" => "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" (100%) diff --git a/lib.config b/lib.config index 2626489..f9d243e 100644 --- a/lib.config +++ b/lib.config @@ -4,5 +4,5 @@ - + \ No newline at end of file diff --git "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" index 37b9f2d..a906e33 100644 --- "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" +++ "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" @@ -1000,10 +1000,10 @@ // Работа со статусом репозитория // // Возвращаемое значение: -// РаботаСоСтатусом - Объект класса +// ДанныеСтатуса - Объект класса Функция ДанныеСтатуса() Экспорт Статус = Статус(Истина); - Возврат Новый РаботаСоСтатусом(Статус); + Возврат Новый ДанныеСтатуса(Статус); КонецФункции #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" similarity index 100% rename from "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\276\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\274.os" rename to "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" From be677b93e53a3f6967011d6be9d3673d9c9ed9af Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 18 Dec 2021 00:37:05 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=BC=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=20=D1=81=20=D0=BF=D1=80=D0=BE=D0=B1=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...70\321\202\320\276\321\200\320\270\320\271.os" | 2 +- ...02\320\260\321\202\321\203\321\201\320\260.os" | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" index a906e33..c4946a8 100644 --- "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" +++ "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" @@ -72,7 +72,7 @@ ПараметрыЗапуска = Новый Массив; ПараметрыЗапуска.Добавить("add"); - ПараметрыЗапуска.Добавить(ПутьКДобавляемомуФайлу); + ПараметрыЗапуска.Добавить(ОбернутьВКавычки(ПутьКДобавляемомуФайлу)); ВыполнитьКоманду(ПараметрыЗапуска); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" index d4f5333..d49e090 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\241\321\202\320\260\321\202\321\203\321\201\320\260.os" @@ -84,12 +84,15 @@ Поз = СтрНайти(ИмяФайла, " -> "); Если Поз = 0 Тогда Стр.СтароеИмяФайла = ""; - Стр.ИмяФайла = ИмяФайла; + Стр.ИмяФайла = СокрЛП(ИмяФайла); Иначе Стр.СтароеИмяФайла = СокрЛП(Лев(ИмяФайла, Поз - 1)); Стр.ИмяФайла = СокрЛП(Сред(ИмяФайла, Поз + 4)); КонецЕсли; - + + Стр.ИмяФайла = УбратьКавычки(Стр.ИмяФайла); + Стр.СтароеИмяФайла = УбратьКавычки(Стр.СтароеИмяФайла); + Стр.ОписаниеСостоянияВИндексе = ОписаниеСостояния[Стр.СостояниеВИндексе]; Стр.ОписаниеСостоянияВДереве = ОписаниеСостояния[Стр.СостояниеВДереве]; @@ -97,6 +100,14 @@ КонецПроцедуры +Функция УбратьКавычки(Знач Строка) + Если Лев(Строка, 1) = """" И Прав(Строка, 1) = """" Тогда + Возврат Сред(Строка, 2, СтрДлина(Строка) - 2); + Иначе + Возврат Строка; + КонецЕсли; +КонецФункции + Процедура Инициализация() ТаблицаСостоянийФайлов = Новый ТаблицаЗначений(); From e01e7664a9ccd3d31fd2ffe0dbe497ffe01f0c6a Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 18 Dec 2021 00:39:56 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D1=81=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D0=B0=D0=BC=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\275\320\264\320\265\320\272\321\201.os" | 2 +- ...21\202\321\203\321\201\320\276\320\262.os" | 24 +++++++++++++++---- ...2\321\203\321\201\320\276\320\262.feature" | 22 ++++++++++++++++- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git "a/features/step_definitions/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\260\320\222\320\230\320\275\320\264\320\265\320\272\321\201.os" "b/features/step_definitions/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\260\320\222\320\230\320\275\320\264\320\265\320\272\321\201.os" index 33b27f6..c4d18a6 100644 --- "a/features/step_definitions/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\260\320\222\320\230\320\275\320\264\320\265\320\272\321\201.os" +++ "b/features/step_definitions/\320\224\320\276\320\261\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\260\320\222\320\230\320\275\320\264\320\265\320\272\321\201.os" @@ -30,7 +30,7 @@ КонецПроцедуры -//Я создаю временный файл во "temp.tmp" временном каталоге и сохраняю его в контекст +//Я создаю временный файл "temp.tmp" во временном каталоге и сохраняю его в контекст Процедура ЯСоздаюВременныйФайлВоВременномКаталогеИСохраняюЕгоВКонтекст(ИмяФайла) Экспорт ВременныйКаталог = БДД.ПолучитьИзКонтекста("ВременныйКаталог"); ВременныйФайл = ОбъединитьПути(ВременныйКаталог, ИмяФайла); diff --git "a/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" "b/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" index 74d3e8c..b981490 100644 --- "a/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" +++ "b/features/step_definitions/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.os" @@ -9,10 +9,11 @@ ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯПолучаюВыводСтатусаЧерезКоманду"); ВсеШаги.Добавить("ЯМодифицируюВременныйФайл"); + ВсеШаги.Добавить("ЯИзменяюГитомИмяВременногоФайлаНа"); ВсеШаги.Добавить("ЯУдаляюВременныйФайл"); - ВсеШаги.Добавить("ЯПолучаюМассивФайловКДобавлениюВКоммит"); + ВсеШаги.Добавить("ЯПолучаюМассивФайловКДобавлению"); ВсеШаги.Добавить("ЯПолучаюМассивФайловВнеИндекса"); - ВсеШаги.Добавить("ЯПолучаюМассивКУдалению"); + ВсеШаги.Добавить("ЯПолучаюМассивФайловКУдалению"); ВсеШаги.Добавить("ЯПолучаюМассивНеослеживаемыхФайлов"); ВсеШаги.Добавить("МассивФайловСодержит"); @@ -37,8 +38,8 @@ ГитРепозиторий.ДанныеСтатуса().Получить(); КонецПроцедуры -//Я получаю Массив файлов к добавлению в коммит -Процедура ЯПолучаюМассивФайловКДобавлениюВКоммит() Экспорт +//Я получаю Массив файлов к добавлению +Процедура ЯПолучаюМассивФайловКДобавлению() Экспорт ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().КДобавлению(); БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); @@ -52,7 +53,7 @@ КонецПроцедуры //Я получаю Массив файлов к удалению -Процедура ЯПолучаюМассивКУдалению() Экспорт +Процедура ЯПолучаюМассивФайловКУдалению() Экспорт ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); ТаблицаСтатусовМассивФайлов = ГитРепозиторий.ДанныеСтатуса().КУдалению(); БДД.СохранитьВКонтекст("ТаблицаСтатусовМассивФайлов", ТаблицаСтатусовМассивФайлов); @@ -84,3 +85,16 @@ ВременныйФайл = БДД.ПолучитьИзКонтекста("ВременныйФайл"); УдалитьФайлы(ВременныйФайл); КонецПроцедуры + +//Я изменяю имя временного файла на "tempХ.tmp" +Процедура ЯИзменяюГитомИмяВременногоФайлаНа(ИмяФайла) Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ВременныйФайл = БДД.ПолучитьИзКонтекста("ВременныйФайл"); + Файл = Новый Файл(ВременныйФайл); + ПараметрыКоманды = Новый Массив(); + ПараметрыКоманды.Добавить("mv"); + ПараметрыКоманды.Добавить("""" + Файл.Имя + """"); + ПараметрыКоманды.Добавить("""" + ИмяФайла + """"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + БДД.СохранитьВКонтекст("ВременныйФайл", ИмяФайла); +КонецПроцедуры diff --git "a/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" "b/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" index 0ebfd01..85d8e0a 100644 --- "a/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" +++ "b/features/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\241\321\202\320\260\321\202\321\203\321\201\320\276\320\262.feature" @@ -23,7 +23,7 @@ Также Я добавляю временный файл в индекс И Я получаю вывод Статуса через команду Тогда Вывод команды содержит "A temp.tmp" - И Я получаю Массив файлов к добавлению в коммит + И Я получаю Массив файлов к добавлению Тогда Массив файлов содержит "temp.tmp" Также Я фиксирую изменения с сообщением "Добавлен тестовый файл" @@ -42,3 +42,23 @@ Тогда Вывод команды содержит "D temp.tmp" И Я получаю Массив файлов к удалению Тогда Массив файлов содержит "temp.tmp" + +Сценарий: Добавление файла с пробелами в имени и получении его статусов + Допустим Я создаю временный файл "temp 2.tmp" во временном каталоге и сохраняю его в контекст + + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит '?? "temp 2.tmp"' + + И Я получаю Массив неослеживаемых файлов + Тогда Массив файлов содержит "temp 2.tmp" + + Также Я добавляю временный файл в индекс + И Я фиксирую изменения с сообщением "Изменен тестовый файл" + И Я изменяю гитом имя временного файла на "temp 3.tmp" + И Я добавляю временный файл в индекс + И Я получаю вывод Статуса через команду + Тогда Вывод команды содержит 'R "temp 2.tmp" -> "temp 3.tmp"' + И Я получаю Массив файлов к удалению + Тогда Массив файлов содержит "temp 2.tmp" + И Я получаю Массив файлов к добавлению + Тогда Массив файлов содержит "temp 3.tmp" From bda053c709a45de39ceb369a9d2b939bfbcc35be Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Sat, 18 Dec 2021 11:26:12 +0300 Subject: [PATCH 7/7] 1.7.0 --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index ebbc98e..397d22b 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("gitrunner") - .Версия("1.6.3") + .Версия("1.7.0") .ЗависитОт("1bdd") .ВерсияСреды("1.0.17") .ЗависитОт("1commands", "1.3.1")