|
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