|
413 | 413 | Лог.Информация("Текст коммита: <"+Комментарий+">"); |
414 | 414 |
|
415 | 415 | КомандныйФайл = Новый КомандныйФайл; |
| 416 | + |
| 417 | + КомандныйФайл.УстановитьКодировкуВывода(КодировкаТекста.UTF8); |
| 418 | + |
416 | 419 | ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); |
417 | 420 | Если ЭтоWindows Тогда |
418 | 421 | КомандныйФайл.ДобавитьКоманду("cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); |
|
421 | 424 | КонецЕсли; |
422 | 425 | КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); |
423 | 426 | КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); |
424 | | - КомандныйФайл.ДобавитьКоманду("git add -A ."); |
425 | | - |
426 | | - ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); |
| 427 | + КомандныйФайл.ДобавитьКоманду(СтрШаблон("git add -A .")); |
427 | 428 |
|
428 | 429 | авторДляГит = Автор; |
429 | 430 | Если Найти(Автор, "<") <= Найти(Автор, ">") Тогда |
430 | 431 | авторДляГит = Автор+" <"+Автор+"@localhost>"; // e-mail может быть удобен для поиска в связанных системах //авторДляГит = Автор+" <"+Автор+">"; |
431 | 432 | КонецЕсли; |
432 | 433 |
|
433 | | - // КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" >"+ИмяФайлаЛогаКоммита; |
434 | | - КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" "+КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина); |
| 434 | + КомандаКоммита = СтрШаблон("git commit -a --file=""%1"" --author=""%2"" ", ИмяФайлаКомментария, Автор); |
| 435 | + |
435 | 436 | КомандныйФайл.ДобавитьКоманду(КомандаКоммита); |
436 | | - КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); |
| 437 | + |
| 438 | + Если Не ЭтоWindows Тогда |
| 439 | + КомандныйФайл.ДобавитьКоманду("exit $#"); |
| 440 | + Иначе |
| 441 | + // сейчас аккуратно верну кодировку, |
| 442 | + // иначе после выполнения коммита все последующие команды скриптов будут неверно отображаться в консоли! |
| 443 | + КомандныйФайл.ДобавитьКоманду("set gitsync_exit=%ERRORLEVEL%"); |
| 444 | + КомандныйФайл.ДобавитьКоманду("chcp 866 >nul");// >nul важен для исключения ненужной надписи с иероглифами |
| 445 | + КомандныйФайл.ДобавитьКоманду("exit /b %gitsync_exit%"); |
| 446 | + КонецЕсли; |
437 | 447 |
|
438 | 448 | ИмяФайлаВыполнения = КомандныйФайл.Закрыть(); |
439 | 449 |
|
|
450 | 460 |
|
451 | 461 | Лог.Информация("ВыполнитьКоммитГит: Вызов git commit вернул код <" + рез + "> "); |
452 | 462 |
|
| 463 | + ВыводКоманды = КомандныйФайл.ПолучитьВывод(); |
453 | 464 | Если рез <> 0 Тогда |
454 | | - текстФайла = ""; |
455 | | - успешно = ПолучитьТекстФайла(ИмяФайлаЛогаКоммита, текстФайла); |
456 | | - Если успешно Тогда |
457 | | - Лог.Ошибка("ВыполнитьКоммитГит: Лог команды git commit"+Символы.ПС+текстФайла); |
458 | | - Иначе |
459 | | - Лог.Ошибка("ВыполнитьКоммитГит: Не удалось получить лог команды git commit"); |
460 | | - КонецЕсли; |
| 465 | + Лог.Ошибка("ВыполнитьКоммитГит: Лог неудачной команды git commit %1%2", Символы.ПС, ВыводКоманды); |
| 466 | + Иначе |
| 467 | + Лог.Отладка("ВыполнитьКоммитГит: Лог команды git commit %1%2", Символы.ПС, ВыводКоманды); |
461 | 468 | КонецЕсли; |
462 | 469 |
|
463 | 470 | УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаВыполнения); |
464 | 471 | УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаКомментария); |
465 | | - УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); |
466 | | - |
| 472 | + |
467 | 473 | Если Рез <> 0 Тогда |
468 | 474 | ВызватьИсключение "Коммит в git выполнить не удалось. См. лог"; |
469 | 475 | КонецЕсли; |
|
1097 | 1103 | Возврат Ложь; |
1098 | 1104 | КонецЕсли; |
1099 | 1105 |
|
1100 | | - ФайлОтчета = Новый ЧтениеТекста(ИмяФайла); |
| 1106 | + Кодировка = "utf-8"; |
| 1107 | + |
| 1108 | + ФайлОтчета = Новый ЧтениеТекста(ИмяФайла, Кодировка); |
1101 | 1109 | МассивСтрок = Новый Массив; |
1102 | 1110 |
|
1103 | 1111 | Попытка |
|
1108 | 1116 | КонецЦикла; |
1109 | 1117 | ФайлОтчета.Закрыть(); |
1110 | 1118 | Исключение |
1111 | | - Лог.Ошибка("При выводе файла возникла ошибка: "+ОписаниеОшибки()); |
| 1119 | + Лог.Ошибка("При выводе файла возникла ошибка: %1", ОписаниеОшибки()); |
1112 | 1120 | Возврат Ложь; |
1113 | 1121 | КонецПопытки; |
1114 | 1122 | Если МассивСтрок.Количество() = 0 Тогда |
|
0 commit comments