Skip to content

Commit 5e39c51

Browse files
committed
При инициализации через gitsync подкаталога, который находится внутри git-репозитория, не создается лишний каталог .git в этом подкаталоге fix #112
1 parent 6b2fb17 commit 5e39c51

File tree

4 files changed

+70
-13
lines changed

4 files changed

+70
-13
lines changed

features/gitsync-init.feature

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@
1717
И я создал каталог исходников
1818
Когда я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
1919
И я передаю путь каталога исходников для запуска gitsync
20+
И я передаю режим отладки "off" для запуска gitsync
21+
И я выполняю команду gitsync "init"
22+
Тогда в каталоге исходников создается файл "AUTHORS"
23+
И в каталоге исходников создается файл "VERSION"
24+
И в каталоге исходников не создается файл ".git"
25+
26+
Сценарий: Инициализация нового, еще не созданного каталога исходников внутри git-репозитория
27+
Допустим я создал каталог git-репозитория "git-repo"
28+
И установил каталог "git-repo" как текущий
29+
И я задал путь каталога исходников
30+
Когда я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
31+
И я передаю путь каталога исходников для запуска gitsync
2032
И я выполняю команду gitsync "init"
2133
Тогда в каталоге исходников создается файл "AUTHORS"
2234
И в каталоге исходников создается файл "VERSION"

features/step_definitions/gitsync-init.os

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,18 @@
2121
ВсеШаги.Добавить("ЯСоздалКаталогИсходников");
2222
ВсеШаги.Добавить("ЯПередаюПутьТестовогоКаталогаХранилищаКонфигурацииДляЗапускаGitsync");
2323
ВсеШаги.Добавить("ЯПередаюПутьКаталогаИсходниковДляЗапускаGitsync");
24+
ВсеШаги.Добавить("ЯПередаюРежимОтладкиДляЗапускаGitsync");
2425
ВсеШаги.Добавить("ЯВыполняюКомандуGitsync");
2526
ВсеШаги.Добавить("ВКаталогеИсходниковСоздаетсяФайл");
2627
ВсеШаги.Добавить("ВКаталогеИсходниковНеСоздаетсяФайл");
28+
ВсеШаги.Добавить("ЯЗадалПутьКаталогаИсходников");
2729

2830
Возврат ВсеШаги;
2931
КонецФункции
3032

3133

34+
35+
3236
// Реализация шагов
3337

3438
// Процедура выполняется перед запуском каждого сценария
@@ -90,11 +94,22 @@
9094
БДД.СохранитьВКонтекст("ПутьКаталогаИсходников", Новый Файл(ПутьКаталогаИсходников));
9195
КонецПроцедуры
9296

97+
//я задал путь каталога исходников
98+
Процедура ЯЗадалПутьКаталогаИсходников() Экспорт
99+
ПутьКаталогаИсходников = ОбъединитьПути(ТекущийКаталог(), "src");
100+
БДД.СохранитьВКонтекст("ПутьКаталогаИсходников", Новый Файл(ПутьКаталогаИсходников));
101+
КонецПроцедуры
102+
93103
//я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
94104
Процедура ЯПередаюПутьТестовогоКаталогаХранилищаКонфигурацииДляЗапускаGitsync() Экспорт
95105
ДобавитьПараметрыГитсинк(БДД.ПолучитьИзКонтекста("ПутьКФайлуХранилища1С").ПолноеИмя);
96106
КонецПроцедуры
97107

108+
//я передаю режим отладки "on" для запуска gitsync
109+
Процедура ЯПередаюРежимОтладкиДляЗапускаGitsync(Знач РежимОтладки) Экспорт
110+
ДобавитьПараметрыГитсинк("-verbose "+РежимОтладки);
111+
КонецПроцедуры
112+
98113
//я передаю путь каталога исходников для запуска gitsync
99114
Процедура ЯПередаюПутьКаталогаИсходниковДляЗапускаGitsync() Экспорт
100115
ДобавитьПараметрыГитсинк(КаталогИсходниковИзКонтекстаБДД());
@@ -188,6 +203,7 @@
188203
БДД.СохранитьВКонтекст("ПараметрыГитсинк", ПараметрыГитсинк);
189204
КонецПроцедуры
190205

206+
191207
Функция ИнициализироватьТестовоеХранилищеГит(Знач КаталогРепозитория, Знач КакЧистое = Ложь)
192208

193209
КодВозврата = Неопределено;
@@ -217,4 +233,4 @@
217233

218234
Лог = Логирование.ПолучитьЛог(ИмяЛога());
219235
//Лог.УстановитьУровень(Логирование.ПолучитьЛог("bdd").Уровень());
220-
Лог.УстановитьУровень(УровниЛога.Отладка);
236+
//Лог.УстановитьУровень(УровниЛога.Отладка);

src/core/Классы/МенеджерСинхронизации.os

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,33 @@
817817

818818
КонецФункции
819819

820+
// Возвращает Истина, если каталог является каталогом или подкаталогом гит-репозитория, иначе возвращается Ложь.
821+
//
822+
Функция ПроверитьНаличиеРепозитарияГит(Знач КаталогЛокальнойКопии) Экспорт
823+
Батник = СоздатьКомандныйФайл();
824+
Лог.Отладка(КаталогЛокальнойКопии);
825+
826+
ДопСтрокаПерехода = ?(ЭтоWindows, "/d", "");
827+
ДобавитьВКомандныйФайл(Батник, СтрШаблон("cd %2 ""%1""", КаталогЛокальнойКопии, ДопСтрокаПерехода));
828+
ФайлЛога = ВременныеФайлы.СоздатьФайл("log");
829+
830+
ПараметрыКоманды = Новый Массив;
831+
ПараметрыКоманды.Добавить("git status");
832+
ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ФайлЛога, Истина));
833+
834+
КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды);
835+
Лог.Отладка(КоманднаяСтрока);
836+
ДобавитьВКомандныйФайл(Батник, КоманднаяСтрока);
837+
ДобавитьВКомандныйФайл(Батник, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#"));
838+
839+
КодВозврата = ВыполнитьКомандныйФайл(Батник);
840+
841+
ВывестиТекстФайла(ФайлЛога);
842+
УдалитьВременныеФайлыПриНеобходимости(ФайлЛога);
843+
844+
Возврат КодВозврата = 0;
845+
КонецФункции // ПроверитьНаличиеРепозитарияГит(Знач Каталог) Экспорт
846+
820847
// Определяет необходимость синхронизации хранилища и репо GIT.
821848
//
822849
Функция ТребуетсяСинхронизироватьХранилищеСГит(Знач ФайлХранилища, Знач ЛокальныйКаталогГит) Экспорт

src/gitsync.os

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,16 @@
194194
Процедура ПодготовитьНовыйРепозитарий(Знач Параметры, Знач РежимИнициализации)
195195

196196
Распаковщик = ПолучитьИНастроитьРаспаковщик(Параметры);
197-
КаталогРабочейКопии = ПодготовитьКаталогНовойРабочейКопии(Параметры);
197+
КаталогРабочейКопии = ПодготовитьКаталогНовойРабочейКопии(Параметры["ЛокальныйКаталогГит"]);
198198

199199
// инициализировать с нуля
200200
СоздатьКаталог(КаталогРабочейКопии);
201-
Результат = Распаковщик.ИнициализироватьРепозитарий(КаталогРабочейКопии);
202-
Если Результат <> 0 Тогда
203-
ВызватьИсключение "git init вернул код <"+Результат+">";
201+
ЭтоКаталогГит = Распаковщик.ПроверитьНаличиеРепозитарияГит(КаталогРабочейКопии);
202+
Если Не ЭтоКаталогГит Тогда
203+
Результат = Распаковщик.ИнициализироватьРепозитарий(КаталогРабочейКопии);
204+
Если Результат <> 0 Тогда
205+
ВызватьИсключение "git init вернул код <"+Результат+">";
206+
КонецЕсли;
204207
КонецЕсли;
205208

206209
НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, Параметры["ПутьКХранилищу"]);
@@ -219,7 +222,7 @@
219222
Процедура КлонироватьРепозитарий(Знач Параметры)
220223

221224
Распаковщик = ПолучитьИНастроитьРаспаковщик(Параметры);
222-
КаталогРабочейКопии = ПодготовитьКаталогНовойРабочейКопии(Параметры);
225+
КаталогРабочейКопии = ПодготовитьКаталогНовойРабочейКопии(Параметры["ЛокальныйКаталогГит"]);
223226

224227
URL = Параметры["URLРепозитория"];
225228
Если ПустаяСтрока(URL) Тогда
@@ -248,17 +251,16 @@
248251
Возврат Распаковщик;
249252
КонецФункции
250253

251-
Функция ПодготовитьКаталогНовойРабочейКопии(Знач Параметры)
254+
Функция ПодготовитьКаталогНовойРабочейКопии(Знач КаталогРабочейКопииГит)
252255

253-
КаталогРабочейКопии = Параметры["ЛокальныйКаталогГит"];
254-
Если КаталогРабочейКопии = Неопределено Тогда
255-
КаталогРабочейКопии = ТекущийКаталог();
256+
Если КаталогРабочейКопииГит = Неопределено Тогда
257+
КаталогРабочейКопииГит = ТекущийКаталог();
256258
Иначе
257-
ФайлРК = Новый Файл(КаталогРабочейКопии);
258-
КаталогРабочейКопии = ФайлРК.ПолноеИмя;
259+
ФайлРК = Новый Файл(КаталогРабочейКопииГит);
260+
КаталогРабочейКопииГит = ФайлРК.ПолноеИмя;
259261
КонецЕсли;
260262

261-
Возврат КаталогРабочейКопии;
263+
Возврат КаталогРабочейКопииГит;
262264

263265
КонецФункции
264266

0 commit comments

Comments
 (0)