Last active
December 25, 2015 08:52
-
-
Save EvilBeaver/14292ad7269d9d17ea8e to your computer and use it in GitHub Desktop.
Set Git Remote
This file contains hidden or 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
////////////////////////////////////////////////////////////////////// | |
// | |
// Изменение remote для нескольких репозитариев GIT | |
// Copyright EvilBeaver <[email protected]> 2015 | |
// | |
////////////////////////////////////////////////////////////////////// | |
Перем СтарыйПрефикс; | |
Перем НовыйПрефикс; | |
// Перерегистрация репозитариев | |
Процедура ОбойтиВсеРепозитарииВКаталоге(Знач РабочийКаталог); | |
Каталоги = НайтиФайлы(РабочийКаталог, "*.*", Ложь); | |
Для Каждого НайденныйФайл Из Каталоги Цикл | |
Если НайденныйФайл.ЭтоКаталог() Тогда | |
ОбработатьКаталог(НайденныйФайл.ПолноеИмя); | |
КонецЕсли; | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьКаталог(Знач Каталог) | |
Сообщить("Обрабатываю каталог " + Каталог); | |
КаталогГит = Новый Файл(Каталог + "\.git"); | |
Если Не КаталогГит.Существует() Тогда | |
Сообщить("Каталог не является git-репозиторием"); | |
Возврат; | |
КонецЕсли; | |
ЛогГит = ПолучитьИмяВременногоФайла(); | |
КодВозврата = -1; | |
ЗапуститьПриложение("cmd /C git remote -v > " + ЛогГит, Каталог, Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить("Ошибка получения git remote"); | |
Сообщить(ПрочитатьФайл(ЛогГит)); | |
Возврат; | |
КонецЕсли; | |
ОсновнойАдрес = ПрочитатьАдрес(ЛогГит); | |
Если ОсновнойАдрес = Неопределено Тогда | |
Возврат; | |
КонецЕсли; | |
Сообщить("URL: " + ОсновнойАдрес); | |
НовыйУрл = СтрЗаменить(ОсновнойАдрес, СтарыйПрефикс, НовыйПрефикс); | |
Сообщить("Перенаправляю на " + НовыйУрл); | |
КодВозврата = -1; | |
ЗапуститьПриложение("cmd /C git remote set-url origin " + НовыйУрл + " > " + ЛогГит, Каталог, Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить("Ошибка git set-url"); | |
Сообщить(ПрочитатьФайл(ЛогГит)); | |
Возврат; | |
КонецЕсли; | |
ЗапуститьПриложение("cmd /C git branch -u origin/master > " + ЛогГит, Каталог, Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить("Ошибка git set-upstream"); | |
Сообщить(ПрочитатьФайл(ЛогГит)); | |
Возврат; | |
КонецЕсли; | |
Сообщить("Каталог " + Каталог + " обработан"); | |
КонецПроцедуры | |
Функция ПрочитатьФайл(Знач Путь) | |
Чтение = Новый ЧтениеТекста(Путь); | |
Текст = Чтение.Прочитать(); | |
Чтение.Закрыть(); | |
Возврат Текст; | |
КонецФункции | |
Функция ПрочитатьАдрес(Знач Путь) | |
Чтение = Новый ЧтениеТекста(Путь); | |
Адрес = Чтение.ПрочитатьСтроку(); | |
Чтение.Закрыть(); | |
Адрес = СокрЛП(СтрЗаменить(СтрЗаменить(Адрес, "origin", ""),"(fetch)", "")); | |
Возврат Адрес; | |
КонецФункции | |
////////////////////////////////////////////////////////////////////// | |
РабочийКаталог = АргументыКоманднойСтроки[0]; | |
СтарыйПрефикс = АргументыКоманднойСтроки[1]; | |
НовыйПрефикс = АргументыКоманднойСтроки[2]; | |
ОбойтиВсеРепозитарииВКаталоге(РабочийКаталог); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment