|
431 | 431 |
|
432 | 432 | // Выполняет фиксацию изменений в локальном каталоге git |
433 | 433 | // |
434 | | -Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено) Экспорт |
| 434 | +Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено, Знач НоваяМетка = "") Экспорт |
435 | 435 |
|
436 | 436 | Если Дата = Неопределено Тогда |
437 | 437 | Дата = ТекущаяДата(); |
|
465 | 465 | КомандаКоммита = СтрШаблон("git commit -a --file=""%1"" --author=""%2"" ", ИмяФайлаКомментария, Автор); |
466 | 466 |
|
467 | 467 | КомандныйФайл.ДобавитьКоманду(КомандаКоммита); |
| 468 | + |
| 469 | + Если ЗначениеЗаполнено(НоваяМетка) Тогда |
| 470 | + |
| 471 | + ДобавитьКоманду(КомандныйФайл, "git tag " + Строка(НоваяМетка)); |
| 472 | + |
| 473 | + КонецЕсли; |
468 | 474 |
|
469 | 475 | Если Не ЭтоWindows Тогда |
470 | 476 | КомандныйФайл.ДобавитьКоманду("exit $#"); |
|
509 | 515 |
|
510 | 516 | // Cтандартная процедура git push |
511 | 517 | // |
512 | | -Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено) Экспорт |
| 518 | +Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено, Знач ОтправитьМетки = Ложь) Экспорт |
513 | 519 |
|
514 | 520 | КомандныйФайл = Новый КомандныйФайл; |
515 | 521 | ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); |
|
534 | 540 | КонецЕсли; |
535 | 541 |
|
536 | 542 | КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); |
| 543 | + Если ОтправитьМетки Тогда |
| 544 | + КомандныйФайл.ДобавитьКоманду(ПолучитьСтрокуКомандыPushTags(ЛокальныйРепозиторий,УдаленныйРепозиторий)); |
| 545 | + КонецЕсли; |
537 | 546 | КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); |
538 | 547 |
|
539 | 548 | Результат = КомандныйФайл.Исполнить(); |
|
546 | 555 |
|
547 | 556 | КонецФункции |
548 | 557 |
|
| 558 | +Функция ПолучитьСтрокуКомандыPushTags(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено)) |
| 559 | + |
| 560 | + ПараметрыКоманды = Новый Массив; |
| 561 | + ПараметрыКоманды.Добавить("git push -u"); |
| 562 | + ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); |
| 563 | + ПараметрыКоманды.Добавить("--tags "); |
| 564 | + ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); |
| 565 | + |
| 566 | + СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); |
| 567 | + Если Лог.Уровень() = УровниЛога.Отладка Тогда |
| 568 | + сообщение = "строкаКоманды push tags= <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; |
| 569 | + Лог.Отладка(сообщение); |
| 570 | + КонецЕсли; |
| 571 | + |
| 572 | + Возврат СтрокаКоманды; |
| 573 | + |
| 574 | +КонецФункции |
| 575 | + |
| 576 | + |
549 | 577 | // Cтандартная процедура git pull |
550 | 578 | // |
551 | 579 | Функция ВыполнитьGitPull(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт |
|
919 | 947 | Знач КоличествоКоммитовДоPush = 0, |
920 | 948 | Знач URLРепозитория = Неопределено, |
921 | 949 | Знач Лимит = 0, |
922 | | - Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь) Экспорт |
| 950 | + Знач ПрерватьВыполнениеБезКомментарияКВерсии = Ложь, |
| 951 | + Знач ИмяВетки = Неопределено, |
| 952 | + Знач АвтоматическаяУстановкаТэговПоВерсиям = Ложь) Экспорт |
923 | 953 |
|
924 | 954 | Лог.Информация("Начало синхронизации с git"); |
925 | 955 | ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); |
|
964 | 994 | ИспользоватьПромежуточныйPUSH = КоличествоКоммитовДоPush > 0; |
965 | 995 | СчетчикКоммитов = 0; |
966 | 996 |
|
| 997 | + СтрокаТекущейВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии"); |
| 998 | + Если СтрокаТекущейВерсии <> Неопределено Тогда |
| 999 | + ПоследнняяВерсияКонфигурации = СтрокаТекущейВерсии.Тэг; |
| 1000 | + КонецЕсли; |
| 1001 | + |
967 | 1002 | Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл |
968 | 1003 |
|
969 | 1004 | СтрокаВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии"); |
|
978 | 1013 | ВызватьИсключение СтрШаблон("Нашли следующую версию %1, а комментарий не задан! Автор %2.", СледующаяВерсия, СтрокаВерсии.Автор);; |
979 | 1014 | КонецЕсли; |
980 | 1015 |
|
| 1016 | + НоваяМетка = ""; |
| 1017 | + Если ПоследнняяВерсияКонфигурации <> СтрокаВерсии.Тэг |
| 1018 | + И АвтоматическаяУстановкаТэговПоВерсиям Тогда |
| 1019 | + ОтправитьНовыеМетки = Истина; |
| 1020 | + НоваяМетка = СтрокаВерсии.Тэг; |
| 1021 | + КонецЕсли; |
| 1022 | + |
981 | 1023 | Попытка |
982 | 1024 | Лог.Информация("Получаем исходники для версии " + СледующаяВерсия + ", " + ТекущаяДата()); |
983 | 1025 |
|
984 | 1026 | РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат); |
985 | 1027 | Лог.Отладка("Фиксируем в файле VERSION версию " + СледующаяВерсия); |
986 | 1028 | ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия); |
987 | | - ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата); |
| 1029 | + ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата, НоваяМетка); |
988 | 1030 | СчетчикКоммитов = СчетчикКоммитов + 1; |
989 | 1031 |
|
990 | 1032 | Если ИспользоватьПромежуточныйPUSH И |
991 | 1033 | СчетчикКоммитов = КоличествоКоммитовДоPush Тогда |
992 | | - ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория); |
| 1034 | + ВыполнитьGitPush(КаталогРабочейКопии, URLРепозитория, ИмяВетки, ОтправитьНовыеМетки); |
993 | 1035 | СчетчикКоммитов = 0; |
| 1036 | + ОтправитьНовыеМетки = Ложь; |
994 | 1037 | КонецЕсли; |
995 | 1038 |
|
996 | 1039 |
|
|
0 commit comments