mirror of
https://github.com/1C-Company/GitConverter.git
synced 2025-03-19 21:08:00 +02:00
Merge pull request #138 from 1C-Company/feature/121
Подключение удаленного репозитория
This commit is contained in:
commit
5c879bf1b5
@ -2095,22 +2095,120 @@
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ИмяВетки</name>
|
||||
<id>107</id>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>Группа12</name>
|
||||
<id>211</id>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ИмяВетки</name>
|
||||
<id>107</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:MultiLanguageDataPath">
|
||||
<paths xsi:type="form:DataPath">
|
||||
<segments>Объект.ИмяВетки</segments>
|
||||
</paths>
|
||||
</dataPath>
|
||||
<shortcut>Ctrl+S</shortcut>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>В Git репозитории основную (главную) ветку принято называть master. Если репозиторий публикуется на сервере (синхронизируется с сервром) запросите список векток, созданных в репозитории, по кнопке <-. Если необходимая ветка отсутствует на сервере или репозиторий пуст - укажите имя ветки которая будет создана.</value>
|
||||
</toolTip>
|
||||
<extendedTooltip>
|
||||
<name>ИмяВеткиРасширеннаяПодсказка1</name>
|
||||
<id>109</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ИмяВеткиКонтекстноеМеню1</name>
|
||||
<id>108</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>InputField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:InputFieldExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<wrap>true</wrap>
|
||||
<dropListButton>true</dropListButton>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>master (?)</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>master</value>
|
||||
</value>
|
||||
</choiceList>
|
||||
<inputHint>
|
||||
<key>ru</key>
|
||||
<value>Загрузките ветки с сервера или создайте новую...</value>
|
||||
</inputHint>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ЗагрузитьСписокВеток</name>
|
||||
<id>215</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ЗагрузитьСписокВетокРасширеннаяПодсказка</name>
|
||||
<id>216</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<type>UsualButton</type>
|
||||
<commandName>Form.Command.ЗагрузитьСписокВеток</commandName>
|
||||
<representation>Picture</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<toolTipRepresentation>Balloon</toolTipRepresentation>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:MultiLanguageDataPath">
|
||||
<paths xsi:type="form:DataPath">
|
||||
<segments>Объект.ИмяВетки</segments>
|
||||
</paths>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>ИмяВеткиРасширеннаяПодсказка1</name>
|
||||
<id>109</id>
|
||||
<name>Группа12РасширеннаяПодсказка</name>
|
||||
<id>212</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@ -2123,28 +2221,13 @@
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ИмяВеткиКонтекстноеМеню1</name>
|
||||
<id>108</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>InputField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:InputFieldExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<wrap>true</wrap>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
<type>UsualGroup</type>
|
||||
<extInfo xsi:type="form:UsualGroupExtInfo">
|
||||
<group>AlwaysHorizontal</group>
|
||||
<showLeftMargin>true</showLeftMargin>
|
||||
<united>true</united>
|
||||
<throughAlign>Auto</throughAlign>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
@ -2237,9 +2320,46 @@
|
||||
<type>UsualButton</type>
|
||||
<commandName>Form.Command.УстановитьАдресРепозиторияGit</commandName>
|
||||
<representation>Picture</representation>
|
||||
<width>4</width>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<toolTipRepresentation>Balloon</toolTipRepresentation>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ПроверитьДоступКРепозиториюGit</name>
|
||||
<id>209</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Проверить доступ...</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ПроверитьДоступКРепозиториюGitРасширеннаяПодсказка</name>
|
||||
<id>210</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<type>UsualButton</type>
|
||||
<commandName>Form.Command.ПроверитьДоступКРепозиториюGit</commandName>
|
||||
<representation>PictureAndText</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<toolTipRepresentation>Balloon</toolTipRepresentation>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
@ -2289,6 +2409,10 @@
|
||||
<segments>Объект.ПользовательСервераGit</segments>
|
||||
</paths>
|
||||
</dataPath>
|
||||
<handlers>
|
||||
<event>OnChange</event>
|
||||
<name>ПользовательСервераGitПриИзменении</name>
|
||||
</handlers>
|
||||
<extendedTooltip>
|
||||
<name>ПользовательСервераGitРасширеннаяПодсказка</name>
|
||||
<id>74</id>
|
||||
@ -2349,6 +2473,10 @@
|
||||
<segments>Объект.ПарольСервераGit</segments>
|
||||
</paths>
|
||||
</dataPath>
|
||||
<handlers>
|
||||
<event>OnChange</event>
|
||||
<name>ПарольСервераGitПриИзменении</name>
|
||||
</handlers>
|
||||
<extendedTooltip>
|
||||
<name>ПарольСервераGitРасширеннаяПодсказка</name>
|
||||
<id>77</id>
|
||||
@ -3728,6 +3856,19 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>РепозиторийСоздан</name>
|
||||
<id>15</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>ОбновитьСостояние</name>
|
||||
<title>
|
||||
@ -3922,6 +4063,54 @@
|
||||
</action>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ПроверитьДоступКРепозиториюGit</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Проверить доступ к репозиторию git</value>
|
||||
</title>
|
||||
<id>10</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Проверить доступ к серверному репозиторию git на сервере 1С предприятия от имени пользователя под которым запущен сервер 1С.</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.CheckSyntax</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ПроверитьДоступКРепозиториюGit</name>
|
||||
</handler>
|
||||
</action>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ЗагрузитьСписокВеток</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Загрузить список веток</value>
|
||||
</title>
|
||||
<id>11</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Загрузить список веток сервера</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.MoveLeft</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ЗагрузитьСписокВеток</name>
|
||||
</handler>
|
||||
</action>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</formCommands>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
|
@ -141,9 +141,25 @@
|
||||
Процедура АдресРепозиторияGitПриИзменении(Элемент)
|
||||
|
||||
УстановитьДоступность(ЭтаФорма);
|
||||
ЗадатьВопросПроверкиДоступаПриИзменении();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПользовательСервераGitПриИзменении(Элемент)
|
||||
|
||||
ЗадатьВопросПроверкиДоступаПриИзменении();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПарольСервераGitПриИзменении(Элемент)
|
||||
|
||||
ЗадатьВопросПроверкиДоступаПриИзменении();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ТипХранилищаПриИзменении(Элемент)
|
||||
|
||||
@ -204,7 +220,40 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СоздатьРепозиторийGitНаСервере();
|
||||
Если ЗначениеЗаполнено(Объект.АдресРепозиторияGit) Тогда
|
||||
|
||||
Результат = ПроверитьДоступКРепозиториюGitНаСервере();
|
||||
|
||||
Если Не Результат.Успешно Тогда
|
||||
ПоказатьПредупреждение( , НСтр("ru = 'Ошибка доступа к репозиторию на сервере:'") + Символы.ПС
|
||||
+ Результат.ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьИменаВеток(Результат.Ветки);
|
||||
|
||||
Если Результат.Ветки.Количество() > 0 Тогда
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("СоздатьРепозиторийGitНаСервереОтвет", ЭтотОбъект);
|
||||
ТекстВопроса = НСтр("ru = 'Указанный репозиторий на сервере не пустой, содержит ветки.
|
||||
|Всё равно, создать новый локальный репозиторий?'");
|
||||
Кнопки = Новый СписокЗначений;
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Создать новый, установить адрес!'"));
|
||||
Если Результат.Ветки.Найти(Объект.ИмяВетки) <> Неопределено Тогда
|
||||
Кнопки.Добавить(КодВозвратаДиалога.ОК, НСтр("ru = 'Клонировать эту ветку с сервера'"));
|
||||
Иначе
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Клонировать с сервера и создать ветку'"));
|
||||
КонецЕсли;
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Отмена);
|
||||
ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Внимание!'"));
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЛога = Новый ТекстовыйДокумент();
|
||||
СоздатьРепозиторийGitНаСервере(ТекстЛога);
|
||||
ТекстЛога.Показать(НСтр("ru = 'Лог операции'"), "log.txt");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -242,7 +291,31 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьАдресРепозиторияGitНаСервере();
|
||||
Результат = ПроверитьДоступКРепозиториюGitНаСервере();
|
||||
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Ошибка доступа к репозиторию на сервере:'") + Символы.ПС + Результат.ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьИменаВеток(Результат.Ветки);
|
||||
|
||||
Если Результат.Ветки.Найти(Объект.ИмяВетки) <> Неопределено Тогда
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("УстановитьАдресРепозиторияGitОтвет", ЭтотОбъект);
|
||||
ТекстВопроса = СтрШаблон(НСтр("ru = 'Ветка %1 существует на сервере. При отправке изменений могут возникнуть конфилкты, которые необходимо будет разрешить вручную.
|
||||
|Установить адрес сервера?'"), Объект.ИмяВетки);
|
||||
Кнопки = Новый СписокЗначений();
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Понимаю, установить адрес сервера!'"));
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Выбрать другую ветку'"));
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Отмена);
|
||||
ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки, ,КодВозвратаДиалога.Отмена, НСтр("ru = 'Внимание!'"));
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЛога = Новый ТекстовыйДокумент();
|
||||
УстановитьАдресРепозиторияGitНаСервере(ТекстЛога, Ложь);
|
||||
ТекстЛога.Показать(НСтр("ru = 'Лог операции'"), "log.txt");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -315,6 +388,59 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПроверитьДоступКРепозиториюGit(Команда)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Объект.АдресРепозиторияGit) Тогда
|
||||
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Не указан адрес репозитория на сервере Git'"));
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ПроверитьДоступКРепозиториюGitНаСервере();
|
||||
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Ошибка доступа к репозиторию на сервере:'") + Символы.ПС + Результат.ТекстОшибки);
|
||||
Возврат;
|
||||
Иначе
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Проверка доступа к репозиторию на сервере выполнена успешно.
|
||||
|На сервере веток:'") + " " + Результат.Ветки.Количество());
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьИменаВеток(Результат.Ветки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗагрузитьСписокВеток(Команда)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Объект.АдресРепозиторияGit) Тогда
|
||||
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Не указан адрес репозитория на сервере Git'"));
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ПроверитьДоступКРепозиториюGitНаСервере();
|
||||
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Ошибка запроса списка веток:'") + Символы.ПС + Результат.ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьИменаВеток(Результат.Ветки);
|
||||
|
||||
Если Результат.Ветки.Количество() > 0 Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ВыборИмениВеткиОтвет", ЭтотОбъект);
|
||||
Элементы.ИмяВетки.СписокВыбора.ПоказатьВыборЭлемента(Оповещение, НСтр("ru = 'Выберите ветку серверного репозитория'"));
|
||||
Иначе
|
||||
ПоказатьПредупреждение( , НСтр("ru = 'На сервере 0 веток.'"));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -502,7 +628,7 @@
|
||||
|
||||
Если МассивФоновыхЗаданий.Количество() > 0 Тогда
|
||||
Задание = МассивФоновыхЗаданий[0];
|
||||
СостояниеЗадания = НСтр("ru='Выполняется конвертация с %Дата%'");
|
||||
СостояниеЗадания = НСтр("ru = 'Выполняется конвертация с %Дата%'");
|
||||
СостояниеЗадания = СтрЗаменить(СостояниеЗадания, "%Дата%", Задание.Начало);
|
||||
|
||||
Иначе
|
||||
@ -585,11 +711,19 @@
|
||||
Форма.Элементы.ФормаКонвертироватьВФорматEDT.Видимость = НЕ Форма.Объект.КонвертироватьВФорматEDT;
|
||||
Форма.Элементы.ДобавлятьМеткиСВерсиейКонфигурации.Видимость = Форма.Объект.КонвертироватьВФорматEDT;
|
||||
|
||||
ЭтоHTTPАдрес = СтрНачинаетсяС(Форма.Объект.АдресРепозиторияGit, "http://")
|
||||
ИЛИ СтрНачинаетсяС(Форма.Объект.АдресРепозиторияGit, "https://");
|
||||
Форма.Элементы.СоздатьРепозиторийGit.Доступность = НЕ Форма.РепозиторийСоздан;
|
||||
Форма.Элементы.ФормаСоздатьРепозиторийGit.Доступность = НЕ Форма.РепозиторийСоздан;
|
||||
|
||||
ЕстьАдрес = ЗначениеЗаполнено(Форма.Объект.АдресРепозиторияGit);
|
||||
|
||||
ЭтоHTTPАдрес = ЭтоHTTPАдрес(Форма.Объект.АдресРепозиторияGit);
|
||||
|
||||
Форма.Элементы.ПользовательСервераGit.АвтоОтметкаНезаполненного = ЭтоHTTPАдрес;
|
||||
Форма.Элементы.ПарольСервераGit.АвтоОтметкаНезаполненного = ЭтоHTTPАдрес;
|
||||
Форма.Элементы.ЗагрузитьСписокВеток.Доступность = ЕстьАдрес;
|
||||
Форма.Элементы.УстановитьАдресРепозиторияGit.Доступность = ЕстьАдрес И Форма.РепозиторийСоздан;
|
||||
Форма.Элементы.ПроверитьДоступКРепозиториюGit.Доступность = ЕстьАдрес;
|
||||
|
||||
|
||||
ЭтоРасширение = Форма.Объект.ТипХранилища =
|
||||
ПредопределенноеЗначение("Перечисление.ТипыХранилищаКонфигураций.Расширение");
|
||||
@ -671,29 +805,24 @@
|
||||
&НаСервере
|
||||
Процедура ПроверитьНаличиеРепозитория()
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Объект.ЛокальныйКаталогGit) Тогда
|
||||
РепозиторийСоздан = Ложь;
|
||||
Если ЗначениеЗаполнено(Объект.ЛокальныйКаталогGit) Тогда
|
||||
|
||||
Элементы.СоздатьРепозиторийGit.Доступность = Ложь;
|
||||
Элементы.ФормаСоздатьРепозиторийGit.Доступность = Ложь;
|
||||
Возврат;
|
||||
|
||||
НайденныеФайлы = НайтиФайлы(Объект.ЛокальныйКаталогGit, "*");
|
||||
Для Каждого Файл Из НайденныеФайлы Цикл
|
||||
|
||||
Если НРег(Файл.Имя) = ".git" Тогда
|
||||
|
||||
РепозиторийСоздан = Истина;
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
НайденныеФайлы = НайтиФайлы(Объект.ЛокальныйКаталогGit, "*");
|
||||
Для каждого Файл Из НайденныеФайлы Цикл
|
||||
|
||||
Если НРег(Файл.Имя) = ".git" Тогда
|
||||
|
||||
Элементы.СоздатьРепозиторийGit.Доступность = Ложь;
|
||||
Элементы.ФормаСоздатьРепозиторийGit.Доступность = Ложь;
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Элементы.СоздатьРепозиторийGit.Доступность = Истина;
|
||||
Элементы.ФормаСоздатьРепозиторийGit.Доступность = Истина;
|
||||
УстановитьДоступность(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -749,18 +878,36 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура СоздатьРепозиторийGitНаСервере()
|
||||
Процедура СоздатьРепозиторийGitНаСервере(ЛогОперации)
|
||||
|
||||
КонвертацияХранилища.СоздатьРепозиторийGit(Объект.Ссылка);
|
||||
КонвертацияХранилища.СоздатьРепозиторийGit(Объект.Ссылка, ЛогОперации);
|
||||
|
||||
ПроверитьНаличиеРепозитория();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура УстановитьАдресРепозиторияGitНаСервере()
|
||||
Процедура КлонироватьРепозиторийGitСоздатьВеткуНаСервере(ЛогОперации)
|
||||
|
||||
КонвертацияХранилища.УстановитьАдресРепозиторияGit(Объект.Ссылка);
|
||||
КонвертацияХранилища.СоздатьРепозиторийGit(Объект.Ссылка, ЛогОперации, Истина, Истина);
|
||||
|
||||
ПроверитьНаличиеРепозитория();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура КлонироватьРепозиторийGitНаСервере(ЛогОперации)
|
||||
|
||||
КонвертацияХранилища.СоздатьРепозиторийGit(Объект.Ссылка, ЛогОперации, Истина, Ложь);
|
||||
|
||||
ПроверитьНаличиеРепозитория();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура УстановитьАдресРепозиторияGitНаСервере(ЛогОперации, ВеткаСуществует)
|
||||
|
||||
КонвертацияХранилища.УстановитьАдресРепозиторияGit(Объект.Ссылка, ЛогОперации, ВеткаСуществует);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -771,4 +918,141 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СоздатьРепозиторийGitНаСервереОтвет(Ответ, ДополнительныеПараметры) Экспорт
|
||||
|
||||
ТекстЛога = Новый ТекстовыйДокумент();
|
||||
ПоказыватьЛог = Ложь;
|
||||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||||
ПоказыватьЛог = Истина;
|
||||
СоздатьРепозиторийGitНаСервере(ТекстЛога);
|
||||
ИначеЕсли Ответ = КодВозвратаДиалога.ОК Тогда
|
||||
ПоказыватьЛог = Истина;
|
||||
КлонироватьРепозиторийGitНаСервере(ТекстЛога);
|
||||
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
|
||||
ПоказыватьЛог = Истина;
|
||||
КлонироватьРепозиторийGitСоздатьВеткуНаСервере(ТекстЛога);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПоказыватьЛог Тогда
|
||||
ТекстЛога.Показать(НСтр("ru = 'Лог операции'"), "log.txt");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура УстановитьАдресРепозиторияGitОтвет(Ответ, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||||
ТекстЛога = Новый ТекстовыйДокумент();
|
||||
УстановитьАдресРепозиторияGitНаСервере(ТекстЛога, Истина);
|
||||
ТекстЛога.Показать(НСтр("ru = 'Лог операции'"), "log.txt");
|
||||
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
|
||||
Объект.ИмяВетки = "";
|
||||
Модифицированность = Истина;
|
||||
ЭтотОбъект.ТекущийЭлемент = Элементы.ИмяВетки;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗадатьВопросПроверкиДоступаПриИзменении()
|
||||
|
||||
Если ЗначениеЗаполнено(Объект.АдресРепозиторияGit)
|
||||
И НЕ РепозиторийСоздан
|
||||
И (НЕ ЭтоHTTPАдрес(Объект.АдресРепозиторияGit)
|
||||
ИЛИ ЗначениеЗаполнено(Объект.ПользовательСервераGit)
|
||||
И ЗначениеЗаполнено(Объект.ПарольСервераGit)) Тогда
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ЗадатьВопросПроверкиДоступаПриИзмененииОтвет", ЭтотОбъект);
|
||||
ТекстВопроса = НСтр("ru = 'Проверить доступ к репозиторию на сервере и загрузить список веток?'");
|
||||
Кнопки = Новый СписокЗначений();
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Проверить и загрузить список веток'"));
|
||||
Кнопки.Добавить(КодВозвратаДиалога.Нет);
|
||||
ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки, ,КодВозвратаДиалога.Да, НСтр("ru = 'Внимание!'"));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗадатьВопросПроверкиДоступаПриИзмененииОтвет(Ответ, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||||
Объект.ИмяВетки = "";
|
||||
Модифицированность = Истина;
|
||||
|
||||
Результат = ПроверитьДоступКРепозиториюGitНаСервере();
|
||||
Если Не Результат.Успешно Тогда
|
||||
ПоказатьПредупреждение( , НСтр("ru = 'Ошибка запроса списка веток:'") + Символы.ПС + Результат.ТекстОшибки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьИменаВеток(Результат.Ветки);
|
||||
|
||||
ЭтотОбъект.ТекущийЭлемент = Элементы.ИмяВетки;
|
||||
Если Результат.Ветки.Количество() > 0 Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ВыборИмениВеткиОтвет", ЭтотОбъект);
|
||||
Элементы.ИмяВетки.СписокВыбора.ПоказатьВыборЭлемента(Оповещение, НСтр("ru = 'Выберите ветку серверного репозитория'"));
|
||||
Иначе
|
||||
ПоказатьПредупреждение( , НСтр("ru = 'На сервере 0 веток.'"));
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыборИмениВеткиОтвет(Ответ, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если ТипЗнч(Ответ) = Тип("ЭлементСпискаЗначений") Тогда
|
||||
Объект.ИмяВетки = Ответ.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры:
|
||||
// Адрес - Строка - адрес для проверки
|
||||
// Возвращаемое значение:
|
||||
// Булево - Истина, если это адресс HTTP или HTTPS
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
функция ЭтоHTTPАдрес(Адрес)
|
||||
Возврат СтрНачинаетсяС(Адрес, "http://") ИЛИ СтрНачинаетсяС(Адрес, "https://");
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьИменаВеток(Ветки)
|
||||
|
||||
Элементы.ИмяВетки.СписокВыбора.Очистить();
|
||||
Если Ветки.Найти("master") = Неопределено Тогда
|
||||
Элементы.ИмяВетки.СписокВыбора.Добавить("master", "master (?)");
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Ветка Из Ветки Цикл
|
||||
Элементы.ИмяВетки.СписокВыбора.Добавить(Ветка);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
&НаСервере
|
||||
Функция ПроверитьДоступКРепозиториюGitНаСервере()
|
||||
|
||||
ЭтоHTTPАдрес = ЭтоHTTPАдрес(Объект.АдресРепозиторияGit);
|
||||
|
||||
АдресРепозиторияGit = Объект.АдресРепозиторияGit;
|
||||
Если ЭтоHTTPАдрес Тогда
|
||||
ПозицияРазделителя = СтрНайти(АдресРепозиторияGit, "://");
|
||||
Если ПозицияРазделителя > 0 и ЗначениеЗаполнено(Объект.ПользовательСервераGit) Тогда
|
||||
АдресРепозиторияGit = Лев(АдресРепозиторияGit, ПозицияРазделителя + 2)
|
||||
+ Объект.ПользовательСервераGit + ":"
|
||||
+ Объект.ПарольСервераGit + "@"
|
||||
+ Прав(АдресРепозиторияGit, СтрДлина(АдресРепозиторияGit)
|
||||
- ПозицияРазделителя - 2);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КонвертацияХранилища.ПолучитьИнформациюРепозиторияGitНаСервере(АдресРепозиторияGit);
|
||||
КонецФункции
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1525,7 +1525,7 @@
|
||||
// ВерсияEDT - Строка - номер версии EDT;
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - Список версий поддерживаемых в EDT
|
||||
// Массив из Строка - Список версий поддерживаемых в EDT
|
||||
//
|
||||
Функция ПолучитьСписокВерсийПлатформыEDT(ВерсияEDT) Экспорт
|
||||
|
||||
@ -1563,7 +1563,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Определяет количестов установленныз версий EDT. Если Истина,
|
||||
// Определяет количестов установленных версий EDT. Если Истина,
|
||||
// при работе с ring необходимо указать номер версии.
|
||||
//
|
||||
// Параметры:
|
||||
@ -1593,6 +1593,61 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получает информацию о серверном репозитории или возвращает текст ошибки доступа
|
||||
//
|
||||
// Параметры:
|
||||
// АдресРепозиторияGit - Строка - адрес репозитория Git на сервере
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Результат запроса информации с сервера, содержит:
|
||||
// * Успешно - Булево - Истина, если результат запроса к серверу был успешный
|
||||
// * ТекстОшибки - Строка - текст ошибки если запрос к серверу был не успешный
|
||||
// * Ветки - Массив из Строка - список имен веток доступных на сервере
|
||||
//
|
||||
Функция ПолучитьИнформациюРепозиторияGitНаСервере(АдресРепозиторияGit) Экспорт
|
||||
|
||||
ЭтоWindowsСервер = ОбщегоНазначенияПовтИсп.ЭтоWindowsСервер();
|
||||
|
||||
ИмяФайлаВывода = ПолучитьИмяВременногоФайла("txt");
|
||||
|
||||
СтрокаКоманды = "git ls-remote --heads %АдресРепозиторияGit%> ""%ИмяФайлаВывода%"" 2>&1";
|
||||
|
||||
|
||||
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%ИмяФайлаВывода%", ИмяФайлаВывода);
|
||||
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%АдресРепозиторияGit%", АдресРепозиторияGit);
|
||||
|
||||
КодВозврата = Неопределено;
|
||||
ЗапуститьПриложение(?(ЭтоWindowsСервер, "cmd /C ", "")
|
||||
+ СтрокаКоманды, КаталогВременныхФайлов(), Истина, КодВозврата);
|
||||
|
||||
Результат = Новый Структура("Успешно, ТекстОшибки, Ветки", Ложь, "", Новый Массив());
|
||||
|
||||
ФайлВывода = Новый ТекстовыйДокумент();
|
||||
ФайлВывода.Прочитать(ИмяФайлаВывода, КодировкаТекста.UTF8);
|
||||
|
||||
Если КодВозврата = 0 Тогда
|
||||
Результат.Успешно = Истина;
|
||||
Для НомерСтроки = 1 По ФайлВывода.КоличествоСтрок() Цикл
|
||||
ИмяВетки = СокрЛП(ФайлВывода.ПолучитьСтроку(НомерСтроки));
|
||||
ПозицияТаб = СтрНайти(ИмяВетки, Символы.Таб);
|
||||
Если ПозицияТаб > 0 Тогда
|
||||
ИмяВетки = СокрЛП(Сред(ИмяВетки, ПозицияТаб + 1));
|
||||
КонецЕсли;
|
||||
Если СтрНачинаетсяС(ИмяВетки, "refs/heads/") Тогда
|
||||
ИмяВетки = Сред(ИмяВетки, 12);
|
||||
КонецЕсли;
|
||||
Результат.Ветки.Добавить(ИмяВетки);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
Результат.Успешно = Ложь;
|
||||
Результат.ТекстОшибки = ФайлВывода.ПолучитьТекст();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Считывает структуру выгрузки версии из файлов
|
||||
//
|
||||
// Параметры:
|
||||
@ -1952,7 +2007,10 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Хранилище - СправочникСсылка.ХранилищаКонфигураций - Ссылка на хранилище, по которому выполняются коммиты
|
||||
Процедура СоздатьРепозиторийGit(Хранилище) Экспорт
|
||||
// ЛогОперации - ТекстовыйДокумент - документ в который будет прочитан лог выполенения операции
|
||||
// Клонировать - Булево - клонировать с сервера существующий репозиторий
|
||||
// СоздатьВетку - Булево - Создать новую ветку от основной ветки серверного репозитория
|
||||
Процедура СоздатьРепозиторийGit(Хранилище, ЛогОперации, Клонировать = Ложь, СоздатьВетку = Ложь) Экспорт
|
||||
|
||||
ЭтоWindowsСервер = ОбщегоНазначенияПовтИсп.ЭтоWindowsСервер();
|
||||
|
||||
@ -1960,28 +2018,20 @@
|
||||
| ИмяПроектаEDT, ПользовательСервераGit, ПарольСервераGit, ИмяВетки",
|
||||
"ВерсияВGit", "ВерсияВGit.Код");
|
||||
РеквизитыХранилища = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Хранилище, ИменаРеквизитов);
|
||||
|
||||
Файл = Новый Файл(РеквизитыХранилища.ЛокальныйКаталогGit);
|
||||
Если Не Файл.Существует() Тогда
|
||||
СоздатьКаталог(РеквизитыХранилища.ЛокальныйКаталогGit);
|
||||
КонецЕсли;
|
||||
КаталогВыгрузкиВРепозитории = КаталогФайловПроектаВРепозитории(РеквизитыХранилища);
|
||||
МассивКаталогов = СтрРазделить(КаталогВыгрузкиВРепозитории, ПолучитьРазделительПути(), Ложь);
|
||||
ПутьККаталогу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit);
|
||||
|
||||
Для Каждого ИмяКаталога Из МассивКаталогов Цикл
|
||||
ПутьККаталогу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьККаталогу + ИмяКаталога);
|
||||
Файл = Новый Файл(ПутьККаталогу);
|
||||
Если Не Файл.Существует() Тогда
|
||||
СоздатьКаталог(ПутьККаталогу);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
СоздатьКаталогиВИерерахии(РеквизитыХранилища.КаталогВыгрузкиВерсий);
|
||||
СоздатьКаталогиВИерерахии(РеквизитыХранилища.ЛокальныйКаталогGit);
|
||||
|
||||
КаталогВыгрузкиВРепозитории = КаталогФайловПроектаВРепозитории(РеквизитыХранилища);
|
||||
|
||||
ФайлЛога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.КаталогВыгрузкиВерсий)
|
||||
+ "git_log_init" + ".txt";
|
||||
ФайлКомандыGit = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.КаталогВыгрузкиВерсий)
|
||||
+ "git_command_init" + ?(ЭтоWindowsСервер, ".bat", ".sh");
|
||||
|
||||
|
||||
Параметры = Новый Структура("ИмяФайлаЛога", ФайлЛога);
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Начало инициализации Git репозитория'"));
|
||||
|
||||
ФайлКоманды = Новый ТекстовыйДокумент;
|
||||
|
||||
Если НЕ ЭтоWindowsСервер Тогда
|
||||
@ -2009,8 +2059,38 @@
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКомандыУстановкиКаталога);
|
||||
|
||||
// Инициализация репозитория
|
||||
ТекстКоманды = "git init" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
АдресРепозиторияGit = РеквизитыХранилища.АдресРепозиторияGit;
|
||||
ПозицияРазделителя = СтрНайти(АдресРепозиторияGit, "://");
|
||||
Если ПозицияРазделителя > 0 Тогда
|
||||
АдресРепозиторияGit = Лев(АдресРепозиторияGit, ПозицияРазделителя + 2)
|
||||
+ РеквизитыХранилища.ПользовательСервераGit + ":" + РеквизитыХранилища.ПарольСервераGit + "@" + Прав(
|
||||
АдресРепозиторияGit, СтрДлина(АдресРепозиторияGit) - ПозицияРазделителя - 2);
|
||||
КонецЕсли;
|
||||
|
||||
Если Клонировать И Не СоздатьВетку И ЗначениеЗаполнено(АдресРепозиторияGit) Тогда
|
||||
ТекстКоманды = "git clone -b ""%ИмяВетки%"" %АдресРепозиторияGit% ." + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%АдресРепозиторияGit%", АдресРепозиторияGit);
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ИначеЕсли Клонировать И СоздатьВетку И ЗначениеЗаполнено(АдресРепозиторияGit) Тогда
|
||||
ТекстКоманды = "git clone %АдресРепозиторияGit% ." + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%АдресРепозиторияGit%", АдресРепозиторияGit);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git checkout -b ""%ИмяВетки%""" + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
Иначе
|
||||
ТекстКоманды = "git init" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
Если ЗначениеЗаполнено(АдресРепозиторияGit) Тогда
|
||||
ТекстКоманды = "git remote add origin %АдресРепозиторияGit%" + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%АдресРепозиторияGit%", АдресРепозиторияGit);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git fetch origin" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
// Делаем пути к файлам русскоязычными
|
||||
ТекстКоманды = "git config --local core.quotepath false" + ВыводЛога;
|
||||
@ -2042,38 +2122,20 @@
|
||||
КонецЕсли;
|
||||
ТекстКоманды = "git config --local core.safecrlf warn" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
|
||||
// Инициализация репозитория на сервере
|
||||
АдресРепозиторияGit = РеквизитыХранилища.АдресРепозиторияGit;
|
||||
ПозицияРазделителя = СтрНайти(АдресРепозиторияGit, "://");
|
||||
Если ПозицияРазделителя > 0 Тогда
|
||||
|
||||
ТекстКоманды = "git remote add origin %АдресРепозиторияGit%" + ВыводЛога;
|
||||
АдресРепозиторияGit = Лев(АдресРепозиторияGit, ПозицияРазделителя + 2)
|
||||
+ РеквизитыХранилища.ПользовательСервераGit + ":"
|
||||
+ РеквизитыХранилища.ПарольСервераGit + "@"
|
||||
+ Прав(АдресРепозиторияGit, СтрДлина(АдресРепозиторияGit)
|
||||
- ПозицияРазделителя - 2);
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%АдресРепозиторияGit%", АдресРепозиторияGit);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git fetch origin" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git branch --set-upstream-to=origin/%ИмяВетки% %ИмяВетки%" + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
|
||||
КонецЕсли;
|
||||
ТекстКоманды = "git status" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
|
||||
Если ЭтоWindowsСервер Тогда
|
||||
ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
|
||||
Иначе
|
||||
ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.Системная, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
ЗапуститьПриложение(?(ЭтоWindowsСервер, "", "bash ")
|
||||
+ ФайлКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина);
|
||||
|
||||
|
||||
СоздатьКаталогиВИерерахии(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit) + КаталогВыгрузкиВРепозитории);
|
||||
|
||||
ИмяФайлаИсключений = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit)
|
||||
+ ".gitignore";
|
||||
ЕстьИсключениеИндекса = Ложь;
|
||||
@ -2116,14 +2178,35 @@
|
||||
ФайлАтрибутов.ДобавитьСтроку("*.addin binary");
|
||||
ФайлАтрибутов.Записать(ИмяФайлаАтрибутов);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
// Добавляем изменения в индекс и проверяем статус
|
||||
СтрокаКоманды = "git add --all ./ >> ""%ФайлЛога%"" 2>&1 && git status >> ""%ФайлЛога%"" 2>&1";
|
||||
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%ФайлЛога%", ФайлЛога);
|
||||
|
||||
КодВозврата = Неопределено;
|
||||
ЗапуститьПриложение(?(ЭтоWindowsСервер, "cmd /C ", "")
|
||||
+ СтрокаКоманды, РеквизитыХранилища.ЛокальныйКаталогGit, Истина, КодВозврата);
|
||||
|
||||
Если КодВозврата <> Неопределено И КодВозврата <> 0 Тогда
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Инициализация Git репозитория выполнена с ошибкой.'"));
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Окончание инициализации Git репозитория'"));
|
||||
|
||||
Файл = Новый Файл(ФайлЛога);
|
||||
Если Файл.Существует() Тогда
|
||||
ЛогОперации.Прочитать(ФайлЛога, КодировкаТекста.UTF8);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Выполняет инициализацию хранилища в Git
|
||||
// Устанавливает адрес серверного хранилища в Git в локальный репозиторий
|
||||
//
|
||||
// Параметры:
|
||||
// Хранилище - СправочникСсылка.ХранилищаКонфигураций - Ссылка на хранилище, по которому выполняются коммиты
|
||||
Процедура УстановитьАдресРепозиторияGit(Хранилище) Экспорт
|
||||
// ЛогОперации - ТабличныйДокумент - документ в который будет прочитан лог выполенения операции
|
||||
// ВеткаСуществует - Булево - серверная ветка существует
|
||||
Процедура УстановитьАдресРепозиторияGit(Хранилище, ЛогОперации, ВеткаСуществует) Экспорт
|
||||
|
||||
ЭтоWindowsСервер = ОбщегоНазначенияПовтИсп.ЭтоWindowsСервер();
|
||||
|
||||
@ -2134,7 +2217,10 @@
|
||||
+ "git_log_add_remote" + ".txt";
|
||||
ФайлКомандыGit = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.КаталогВыгрузкиВерсий)
|
||||
+ "git_command_add_remote" + ?(ЭтоWindowsСервер, ".bat", ".sh");
|
||||
|
||||
|
||||
Параметры = Новый Структура("ИмяФайлаЛога", ФайлЛога);
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Начало добавления адреса Git репозитория'"));
|
||||
|
||||
ФайлКоманды = Новый ТекстовыйДокумент;
|
||||
|
||||
Если НЕ ЭтоWindowsСервер Тогда
|
||||
@ -2184,9 +2270,11 @@
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git fetch origin" + ВыводЛога;
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
ТекстКоманды = "git branch --set-upstream-to=origin/%ИмяВетки% %ИмяВетки%" + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
Если ВеткаСуществует Тогда
|
||||
ТекстКоманды = "git branch --set-upstream-to=origin/%ИмяВетки% %ИмяВетки%" + ВыводЛога;
|
||||
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
|
||||
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоWindowsСервер Тогда
|
||||
@ -2200,9 +2288,14 @@
|
||||
+ ФайлКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина, КодВозврата);
|
||||
|
||||
Если КодВозврата <> Неопределено И КодВозврата <> 0 Тогда
|
||||
ТекстШаблона = НСтр("ru = 'Установка адреса Git-сервера выполнена с ошибкой.
|
||||
|Файл лога: %ФайлЛога%'");
|
||||
ВызватьИсключение СтрЗаменить(ТекстШаблона, "%ФайлЛога%", ФайлЛога);
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Установка адреса Git-сервера выполнена с ошибкой.'"));
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru = 'Окончание добавления адреса Git репозитория'"));
|
||||
|
||||
Файл = Новый Файл(ФайлЛога);
|
||||
Если Файл.Существует() Тогда
|
||||
ЛогОперации.Прочитать(ФайлЛога, КодировкаТекста.UTF8);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -3996,7 +4089,7 @@
|
||||
|
||||
Если Параметры.Свойство("ИмяФайлаЛога") И ЗначениеЗаполнено(Параметры.ИмяФайлаЛога) Тогда
|
||||
Лог = Новый ЗаписьТекста();
|
||||
Лог.Открыть(Параметры.ИмяФайлаЛога, , , Истина);
|
||||
Лог.Открыть(Параметры.ИмяФайлаЛога, КодировкаТекста.UTF8, , Истина);
|
||||
Лог.ЗаписатьСтроку(Строка(ТекущаяДатаСеанса()) + " " + ТекстЛога);
|
||||
Если ЗначениеЗаполнено(Комментарий) Тогда
|
||||
Лог.ЗаписатьСтроку(Комментарий);
|
||||
@ -4172,4 +4265,27 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьКаталогиВИерерахии(Знач ПутьККаталогу)
|
||||
|
||||
ЭтоWindowsСервер = ОбщегоНазначенияПовтИсп.ЭтоWindowsСервер();
|
||||
|
||||
МассивКаталогов = СтрРазделить(ПутьККаталогу, ПолучитьРазделительПути(), Ложь);
|
||||
ПутьККаталогу = Лев(ПутьККаталогу, Найти(ПутьККаталогу, ПолучитьРазделительПути()));
|
||||
Если ЭтоWindowsСервер
|
||||
И МассивКаталогов.Количество() > 1
|
||||
И СтрНайти(МассивКаталогов[0], ":") > 0
|
||||
ИЛИ СтрДлина(ПутьККаталогу) > СтрДлина(ПолучитьРазделительПути()) Тогда
|
||||
МассивКаталогов.Удалить(0);
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ИмяКаталога Из МассивКаталогов Цикл
|
||||
ПутьККаталогу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьККаталогу + ИмяКаталога);
|
||||
Файл = Новый Файл(ПутьККаталогу);
|
||||
Если Не Файл.Существует() Тогда
|
||||
СоздатьКаталог(ПутьККаталогу);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user