Created
March 9, 2017 09:27
-
-
Save EvilBeaver/06993ae42f47728a88d75cc9a661a2f1 to your computer and use it in GitHub Desktop.
Пакетное сжатие всех папок с репозиториями GIT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Использовать logos | |
#Использовать fs | |
Процедура ВыполнитьОбработку(Знач Каталог) | |
ВсеПапки = НайтиФайлы(Каталог, ПолучитьМаскуВсеФайлы()); | |
Для Каждого НайденныйКаталог Из ВсеПапки Цикл | |
Если Не НайденныйКаталог.ЭтоКаталог() Тогда | |
Продолжить; | |
КонецЕсли; | |
ОбработатьКаталогРепо(НайденныйКаталог); | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьКаталогРепо(Знач КаталогРепо) | |
Сообщить("Вхожу в каталог " + КаталогРепо.ПолноеИмя); | |
Если ЭтоКаталогРепо(КаталогРепо) Тогда | |
ВыполнитьСжатие(КаталогРепо); | |
Иначе | |
Сообщить("Каталог не является репозиторием. Пробую поискать внутри рекурсивно."); | |
ВыполнитьОбработку(КаталогРепо.ПолноеИмя); | |
КонецЕсли; | |
Сообщить("Выхожу из каталога " + КаталогРепо.ПолноеИмя); | |
Сообщить(Символы.ПС); | |
КонецПроцедуры | |
Функция ЭтоКаталогРепо(Знач Каталог) | |
Путь = ОбъединитьПути(Каталог.ПолноеИмя, ".git"); | |
Возврат ФС.КаталогСуществует(Путь); | |
КонецФункции | |
Процедура ВыполнитьСжатие(Знач КаталогРепо) | |
Сообщить("Начинаю сжатие"); | |
Процесс = СоздатьПроцесс("git gc --quiet", КаталогРепо.ПолноеИмя, Истина, Истина); | |
Процесс.Запустить(); | |
Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные ИЛИ Процесс.ПотокОшибок.ЕстьДанные Цикл | |
Приостановить(20); | |
ОчереднаяСтрокаВывода = Процесс.ПотокВывода.Прочитать(); | |
ОчереднаяСтрокаОшибок = Процесс.ПотокОшибок.Прочитать(); | |
Если ОчереднаяСтрокаВывода <> "" Тогда | |
Сообщить(ОчереднаяСтрокаВывода); | |
КонецЕсли; | |
Если ОчереднаяСтрокаОшибок <> "" Тогда | |
Сообщить(ОчереднаяСтрокаОшибок); | |
КонецЕсли; | |
КонецЦикла; | |
Сообщить("Команда git вернула код: " + Процесс.КодВозврата); | |
Сообщить("Сжатие завершено"); | |
КонецПроцедуры | |
//////////////////////////////////////////////////////////////////////////// | |
Если АргументыКоманднойСтроки.Количество() > 0 Тогда | |
Каталог = АргументыКоманднойСтроки[0]; | |
Если Не ФС.КаталогСуществует(Каталог) Тогда | |
ВызватьИсключение "Не найден каталог " + Каталог; | |
КонецЕсли; | |
Иначе | |
Каталог = ТекущийКаталог(); | |
КонецЕсли; | |
ВыполнитьОбработку(Каталог); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment