|
412 | 412 | ФайлКомментария.Закрыть(); |
413 | 413 | Лог.Информация("Текст коммита: <"+Комментарий+">"); |
414 | 414 |
|
415 | | - ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); |
416 | | - |
417 | 415 | КомандныйФайл = Новый КомандныйФайл; |
| 416 | + |
| 417 | + КомандныйФайл.УстановитьКодировкуВывода(КодировкаТекста.UTF8); |
| 418 | + |
418 | 419 | ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); |
419 | 420 | Если ЭтоWindows Тогда |
420 | 421 | КомандныйФайл.ДобавитьКоманду("cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); |
|
423 | 424 | КонецЕсли; |
424 | 425 | КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); |
425 | 426 | КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); |
426 | | - КомандныйФайл.ДобавитьКоманду(СтрШаблон("git add -A . %1", КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина))); |
| 427 | + КомандныйФайл.ДобавитьКоманду(СтрШаблон("git add -A .")); |
427 | 428 |
|
428 | 429 | авторДляГит = Автор; |
429 | 430 | Если Найти(Автор, "<") <= Найти(Автор, ">") Тогда |
430 | 431 | авторДляГит = Автор+" <"+Автор+"@localhost>"; // e-mail может быть удобен для поиска в связанных системах //авторДляГит = Автор+" <"+Автор+">"; |
431 | 432 | КонецЕсли; |
432 | 433 |
|
433 | | - СтрокаПеренаправленияВывода = КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина, Ложь); |
434 | | - КомандаКоммита = СтрШаблон("git commit -a --file=""%1"" --author=""%2"" %3", ИмяФайлаКомментария, Автор, СтрокаПеренаправленияВывода); |
| 434 | + КомандаКоммита = СтрШаблон("git commit -a --file=""%1"" --author=""%2"" ", ИмяФайлаКомментария, Автор); |
435 | 435 |
|
436 | 436 | КомандныйФайл.ДобавитьКоманду(КомандаКоммита); |
437 | | - КомандныйФайл.ДобавитьКоманду("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 | + КонецЕсли; |
438 | 447 |
|
439 | 448 | ИмяФайлаВыполнения = КомандныйФайл.Закрыть(); |
440 | 449 |
|
|
451 | 460 |
|
452 | 461 | Лог.Информация("ВыполнитьКоммитГит: Вызов git commit вернул код <" + рез + "> "); |
453 | 462 |
|
454 | | - текстФайла = ""; |
455 | | - успешно = ПолучитьТекстФайла(ИмяФайлаЛогаКоммита, текстФайла); |
| 463 | + ВыводКоманды = КомандныйФайл.ПолучитьВывод(); |
456 | 464 | Если рез <> 0 Тогда |
457 | | - Если успешно Тогда |
458 | | - Лог.Ошибка("ВыполнитьКоммитГит: Лог команды git commit %1%2", Символы.ПС, текстФайла); |
459 | | - Иначе |
460 | | - Лог.Ошибка("ВыполнитьКоммитГит: Не удалось получить лог команды git commit"); |
461 | | - КонецЕсли; |
| 465 | + Лог.Ошибка("ВыполнитьКоммитГит: Лог неудачной команды git commit %1%2", Символы.ПС, ВыводКоманды); |
462 | 466 | Иначе |
463 | | - Лог.Отладка("ВыполнитьКоммитГит: Лог команды git commit %1%2", Символы.ПС, текстФайла); |
| 467 | + Лог.Отладка("ВыполнитьКоммитГит: Лог команды git commit %1%2", Символы.ПС, ВыводКоманды); |
464 | 468 | КонецЕсли; |
465 | 469 |
|
466 | 470 | УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаВыполнения); |
467 | 471 | УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаКомментария); |
468 | | - УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); |
469 | | - |
| 472 | + |
470 | 473 | Если Рез <> 0 Тогда |
471 | 474 | ВызватьИсключение "Коммит в git выполнить не удалось. См. лог"; |
472 | 475 | КонецЕсли; |
|
0 commit comments