|
1 | | -// Copyright 2016 xDrivenDevelopment |
| 1 | +// Copyright 2016 xDrivenDevelopment |
2 | 2 | // |
3 | 3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
4 | 4 | // you may not use this file except in compliance with the License. |
|
18 | 18 | #Использовать asserts |
19 | 19 | #Использовать v8runner |
20 | 20 | #Использовать strings |
| 21 | +#Использовать gitrunner |
21 | 22 |
|
22 | 23 | Перем Лог; |
23 | 24 | Перем КодВозврата; |
24 | 25 | Перем мВозможныеКоманды; |
25 | 26 | Перем ЭтоWindows; |
26 | 27 | Перем ИспользоватьКонфигуратор; |
27 | 28 | Перем КонтекстКонфигуратора; |
| 29 | +Перем ГитРепозиторий; |
28 | 30 |
|
29 | 31 | Функция Версия() Экспорт |
30 | 32 |
|
|
196 | 198 | ИспользоватьКонфигуратор = Ложь; |
197 | 199 | КонтекстКонфигуратора = Неопределено; |
198 | 200 |
|
| 201 | + ГитРепозиторий = Новый ГитРепозиторий(); |
| 202 | + ГитРепозиторий.УстановитьРабочийКаталог(ТекущийКаталог()); |
| 203 | + |
199 | 204 | Попытка |
200 | 205 |
|
201 | 206 | Лог_cmdline = Логирование.ПолучитьЛог("oscript.lib.cmdline"); |
|
418 | 423 |
|
419 | 424 | Процедура УстановитьВКаталог(Знач Каталог) Экспорт |
420 | 425 |
|
421 | | - КаталогГит = Новый Файл(ОбъединитьПути(Каталог, ".git")); |
422 | | - Если Не КаталогГит.Существует() Тогда |
| 426 | + Если Не ГитРепозиторий.ЭтоРепозиторий() Тогда |
423 | 427 | ВызватьИсключение "Каталог не является репозиторием GIT"; |
424 | 428 | КонецЕсли; |
425 | 429 |
|
|
436 | 440 | ДополнитьФайлХукаДаннымиПодключения(КаталогХуков); |
437 | 441 | КонецЕсли; |
438 | 442 |
|
439 | | - ЗапуститьПриложение("git config --local core.quotepath false", Каталог, Истина); |
440 | | - ЗапуститьПриложение("git config --local core.longpaths true", Каталог, Истина); |
| 443 | + ГитРепозиторий.УстановитьНастройку("core.quotePath", "false", РежимУстановкиНастроекGit.Локально); |
| 444 | + ГитРепозиторий.УстановитьНастройку("core.longpaths", "true", РежимУстановкиНастроекGit.Локально); |
441 | 445 |
|
442 | 446 | Лог.Информация("Установка завершена"); |
443 | 447 |
|
|
583 | 587 |
|
584 | 588 | Процедура УдалитьФайлИзИндексаГит(Знач ПолныйПуть) |
585 | 589 | Лог.Отладка("Удаляю файл из индекса"); |
586 | | - Вывод = ПолучитьВыводПроцесса("git rm --cached """ + ПолныйПуть + """", КодВозврата); |
587 | | - Лог.Отладка("Вывод git rm --cached: " + Вывод); |
588 | | - Если КодВозврата <> 0 Тогда |
589 | | - ВызватьИсключение "Не удалось удалить файл из журнала изменений git"; |
590 | | - КонецЕсли; |
| 590 | + ПараметрыКоманды = Новый Массив; |
| 591 | + ПараметрыКоманды.Добавить("rm"); |
| 592 | + ПараметрыКоманды.Добавить("--cached"); |
| 593 | + ПараметрыКоманды.Добавить(ОбернутьПутьВКавычки(ПолныйПуть)); |
| 594 | + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); |
591 | 595 | КонецПроцедуры |
592 | 596 |
|
593 | 597 | Процедура ПроверитьНастройкиРепозитарияГит() Экспорт |
|
598 | 602 | Процедура ПроверитьНастройкуРепозитарияГит(Настройка, ПравильноеЗначение) |
599 | 603 | Перем КодВозврата; |
600 | 604 |
|
601 | | - КомандаПроверкаСостояния = СтрШаблон("git config %1", Настройка); |
602 | | - Лог.Отладка("Выполняю команду %1", КомандаПроверкаСостояния); |
603 | | - |
604 | | - Вывод = ПолучитьВыводПроцесса(КомандаПроверкаСостояния, КодВозврата); |
605 | | - Вывод = СокрЛП(Вывод); |
606 | | - Лог.Отладка(" Код возврата %1", КодВозврата); |
607 | | - Лог.Отладка(" Вывод команды <%1>", Вывод); |
608 | | - Если КодВозврата = 0 И Вывод = ПравильноеЗначение Тогда |
| 605 | + Лог.Отладка("Выполняю проверку настройки %1", Настройка); |
| 606 | + ЗначениеНастройки = ГитРепозиторий.ПолучитьНастройку(Настройка); |
| 607 | + Если ЗначениеНастройки = ПравильноеЗначение Тогда |
609 | 608 | Возврат; |
610 | 609 | КонецЕсли; |
611 | 610 |
|
|
620 | 619 | Функция ПолучитьЖурналИзмененийГит() |
621 | 620 |
|
622 | 621 | Перем КодВозврата; |
623 | | - |
624 | | - Вывод = ВыполнитьКомандуГит("git diff-index --name-status --cached HEAD", КодВозврата, Ложь); |
625 | | - Если КодВозврата <> 0 Тогда |
626 | | - Вывод = ВыполнитьКомандуГит("git status --porcelain", КодВозврата, Ложь); |
627 | | - |
628 | | - Если КодВозврата <> 0 Тогда |
629 | | - ВызватьИсключение "Не удалось собрать журнал изменений git"; |
630 | | - КонецЕсли; |
631 | | - |
632 | | - КонецЕсли; |
| 622 | + Попытка |
| 623 | + ПараметрыКоманды = СтрРазделить("diff-index --name-status --cached HEAD", " "); |
| 624 | + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); |
| 625 | + Вывод = ГитРепозиторий.ПолучитьВыводКоманды(); |
| 626 | + Исключение |
| 627 | + ПараметрыКоманды = СтрРазделить("status --porcelain", " "); |
| 628 | + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); |
| 629 | + Вывод = ГитРепозиторий.ПолучитьВыводКоманды(); |
| 630 | + КонецПопытки; |
633 | 631 |
|
634 | 632 | Возврат Вывод; |
635 | 633 |
|
636 | 634 | КонецФункции |
637 | 635 |
|
638 | | -Функция ВыполнитьКомандуГит(КомандаГит, КодВозврата = Неопределено, ПроверятьНулевойКодВозврата = Истина) |
639 | | - |
640 | | - Лог.Отладка("Запускаю "+КомандаГит); |
641 | | - Вывод = ПолучитьВыводПроцесса(КомандаГит, КодВозврата); |
642 | | - Лог.Отладка(" Вывод команды гит: " + Вывод); |
643 | | - Если ПроверятьНулевойКодВозврата Тогда |
644 | | - Ожидаем.Что(КодВозврата, "Код возврата `"+КомандаГит+"` должен быть 0, а это не так").Равно(0); |
645 | | - КонецЕсли; |
646 | | - Возврат Вывод; |
647 | | -КонецФункции |
648 | | - |
649 | 636 | Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата) |
650 | 637 |
|
651 | 638 | // // Это для dev версии 1.0.11 |
|
706 | 693 | Для Каждого Каталог Из СписокНовыхКаталогов Цикл |
707 | 694 |
|
708 | 695 | Лог.Отладка("Запуск git add для каталога " + Каталог); |
709 | | - Вывод = ПолучитьВыводПроцесса("git add --all " + ОбернутьПутьВКавычки(Каталог), КодВозврата); |
710 | | - Лог.Отладка("Вывод git add: " + Вывод); |
711 | | - Если КодВозврата <> 0 Тогда |
712 | | - Лог.Ошибка(Вывод); |
713 | | - ЗавершитьРаботу(КодВозврата); |
714 | | - КонецЕсли; |
| 696 | + ПараметрыКоманды = Новый Массив; |
| 697 | + ПараметрыКоманды.Добавить("add"); |
| 698 | + ПараметрыКоманды.Добавить("--all"); |
| 699 | + ПараметрыКоманды.Добавить(ОбернутьПутьВКавычки(Каталог)); |
| 700 | + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); |
715 | 701 |
|
716 | 702 | КонецЦикла |
717 | 703 |
|
|
0 commit comments