Skip to content

Commit 1074e2d

Browse files
authored
Merge pull request #165 from ZhdanovR/feature/gitsync_3.0
WIP: подготовка к выпуску стабильного релиза
2 parents 14f5df7 + 0fdb69d commit 1074e2d

File tree

7 files changed

+268
-3
lines changed

7 files changed

+268
-3
lines changed

.github/CONTRIBUTING.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# Коллективное участие в проекте
2+
3+
> постоянно наполняемый FAQ для "контрибьюторов"
4+
5+
## Прежде чем создавать задачи (issues) `GitHub`
6+
7+
* старайтесь ознакомиться с документацией по проекту с помощью поиска
8+
* старайтесь ознакомиться с уже имеющимися задачами с помощью поиска, включая закрытые задачи
9+
* ознакомьтесь с каталогом features для понимания уже существующего и стабильного функционала
10+
* будьте в курсе изменений по проекту
11+
* нажмите `watch` и `star`, чтобы получать оповещения об изменениях
12+
13+
### Старайтесь создавать задачи в формате `BDD`
14+
15+
* Формат описания, если вы нашли "недочёт" (bug)
16+
17+
```gherkin
18+
Дано <имею версию проекта>
19+
И <версию операционной системы>
20+
И <версию 1С предприятия>
21+
И <параметры совместимости конфигурации>
22+
```
23+
24+
* Формат описания, если хочется добавить новый функционал (enhancement)
25+
26+
```gherkin
27+
Функционал: <Краткое описание>
28+
Как <роль кому нужен функционал>
29+
Чтобы <цель того кому нужен данный функционал>
30+
```
31+
32+
## Как добавить функционал к проекту
33+
34+
мы используем [Example mapping](https://cucumber.io/blog/2015/12/08/example-mapping-introduction), поэтому:
35+
36+
* всё, что не имеет feature-файла - это просто вопрос или "вброс"
37+
* если существует feature-файл только с заголовком - это предварительное требование
38+
* если в feature-файле есть Сценарии - это требование с правилами реализации
39+
* есть в Сценарии есть шаги - это требование с правилами и примерами
40+
41+
Соответственно, помимо задач, можно использовать концепцию
42+
43+
* git-flow - коллективная разработка с помощью github
44+
* pull-request - для черновиков функционала используется каталог ```.\features\drafts```
45+
46+
### Процесс коллективной разработки
47+
48+
в соответствии с принципами Agile и Open-Source мы используем
49+
50+
* итеративный подход к разработке
51+
* первоначально мы решаем недочёты, а уже затем дорабатываем функционал
52+
* приоретизация и порядок доработки остаются на усмотрение команды oscript-library
53+
54+
однако это можно изменить 3-мя способами:
55+
56+
### Pull-request
57+
58+
#### Первичная настройка
59+
60+
если вы разработчик
61+
62+
* Установите `oscript`, `git` и проверьте, что данные находятся в переменной `PATH`,
63+
* т.е. `git, oscript, opm` вызываются без указания полного пути в коммандной строке.
64+
65+
* сделайте `fork` репозитория
66+
* склонируйте репозитарий себе на машину ```git clone https://github.com/*ТУТИМЯВАШЕГОПОЛЬЗОВАТЕЛЯ*/gitsync.git ```
67+
* переходим в склонированный каталог через `cd gitsync` и выполняем несколько магических комманд
68+
```
69+
git remote add upstream https://github.com/oscript-library/gitsync.git
70+
git fetch upstream
71+
git checkout -b develop upstream/develop
72+
git pull upstream develop
73+
```
74+
* Далее нужно установить необходимые зависимости:
75+
* в консоли от имени администратора перейти в папку `gitsync` и запустить `opm install`.
76+
* Результатом будет установленные пакеты, необходимые для работы скриптов.
77+
* Этот шаг необходимо сделать всего 1 раз.
78+
79+
> ВНИМАНИЕ: команды `opm` необходимо выполнять в обычном виндовом `cmd\far` , но не в bash-консоли, т.к. не сможет найти команду `opm`
80+
81+
#### Штатная разработка/доработка
82+
83+
##### Выбор задачи и предварительная подготовка
84+
85+
* реализуйте функционал или возьмите в работу какую-то задачу
86+
87+
* На основании ветки develop создаем новую ветку с номером задачи или кратким описанием
88+
* Например, `feature/issue-9999`
89+
```
90+
git checkout -b feature/issue-9999
91+
```
92+
93+
> Напоминаем, что все шаги git можно выполнять как из консоли git, так и из графического клиента для git (SourceTree, GitExtensions и т.п.)
94+
95+
##### Изменения в плагинах/фичах/шагах/тестах
96+
97+
* в каталоге `gitsync/features` добавьте новый `feature-файл`, если необходимо
98+
* в каталоге ./src реализуйте требуемый функционал
99+
* или прогоните тесты `opm run test`
100+
101+
* **При готовности зафиксировать изменения**
102+
103+
* В гите проверить необходимые изменения в исходниках и зафиксировать только их.
104+
105+
Команды для программного добавления необходимых файлов в git
106+
107+
* Смотрим, какие файлы изменились - `git status`
108+
109+
```
110+
Изменения, которые не в индексе для коммита:
111+
(используйте «git add <файл>…», чтобы добавить файл в индекс)
112+
(используйте «git checkout -- <файл>…», чтобы отменить изменения
113+
в рабочем каталоге)
114+
115+
изменено: src/cmd/ПараметрыПриложения.os
116+
117+
нет изменений добавленных для коммита
118+
(используйте «git add» и/или «git commit -a»)
119+
```
120+
121+
##### Отправка изменений
122+
123+
* Добавляем необходимые файлы в индекс
124+
* `git add src/cmd/ПараметрыПриложения.os `
125+
* Фиксируем изменения с комментарием `git commit -m "Наш комментарий!"`
126+
127+
* Отправляем все изменения своей ветки на github ```git push origin feature/issue-9999```
128+
* Далее формируем `pull-request` в [интерфейсе github](https://github.com/oscript-library/gitsync/pulls)
129+
130+
### Участие в архитектурных обсуждениях
131+
132+
если вы методолог или архитектор
133+
134+
* сделайте свой первый `pull-request`, в том числе в документацию
135+
* создайте обсуждение https://github.com/oscript-library/gitsync/issues с описанием противоречия
136+
* участвуйте, обосновывайте, приводите примеры
137+
* используйте ТРИЗ для построения непротиворечивых решений
138+
139+
### Enterprise-поддержка
140+
141+
если вы бизнесмен или менеджер
142+
143+
* обратитесь по адресу `[email protected]`
144+
* заключите контракт на Enterprise-поддержку с гарантией по SLA и c контролем NPS
145+
* публикуйте любые запросы на доработку и консультацию - они будут выполнены или по ним будет выдан ответ в первом приоритете
146+
* на данный момент за последние год мы поддерживаем следующие медианы:
147+
* время реакции - 24 минуты,
148+
* время решения - 23 часа
149+
150+
# Если ничего не понятно
151+
152+
* используйте [форум XDD](https://xdd.silverbulleters.org) для того, чтобы задать вопрос
153+
* запишитесь на практические занятия по правильной разработке 1С
154+
155+
```(c) oscript-library - последнее обновление: 14.01.2019```

.github/ISSUE_TEMPLATE.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
> Заполните шаблон обсуждения GIT (GitHub, GitLab, Vanessa Hub)
2+
3+
```Gherkin
4+
Функционал: <Необходимый эффект>
5+
Как <роль пользователя>
6+
Я хочу <Необходимый функционал>
7+
8+
Контекст:
9+
Дано <версия инструментария>
10+
И <полная версия 1С>
11+
и <конфигурация запуска>
12+
13+
Сценарий: <ожидамое поведение>
14+
Допустим <Пример данных>
15+
Когда <Что-то нажимается или вызывается>
16+
Тогда <Что-то происходит>
17+
```
18+
19+
> Прикладывайте файлы скриншотов

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: Сообщение об ошибке
3+
about: если вы выявили ошибку - сообщите нам об этом
4+
5+
---
6+
7+
**Описание ошибки**
8+
что конкретно происходит
9+
10+
**Сценарий воспроизведения**
11+
Шаги по воспроизведению:
12+
1. Открыть '...'
13+
2. Нажать '....'
14+
3. Запустить '....'
15+
4. Где ошибка
16+
17+
**Ожидаемое поведение если бы ошибки не было**
18+
'....'
19+
20+
**Скриншоты**
21+
если применимо приложите скриншот
22+
23+
**Окружение:**
24+
- Версия операционной системы: [например Ubuntu 18.04]
25+
- Редакция 1С платформы [например 8.3.12.1542]
26+
- Версия Gitsync [например 3.0.1]
27+
- Версия OScript [например 1.0.20]
28+
29+
**Дополнительный контекст**
30+
31+
Типовая или не типовая конфиугарация ? Включен ли режим защиты от опасных действий и т.д.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
name: Добавление новой функциональности
3+
about: предложение новой идеи или функциональности к разработке
4+
5+
---
6+
7+
**Существует проблема**
8+
Описание существующей проблемы [...]
9+
10+
**Хотелось бы иметь следующую функциональность**
11+
Вариант реализации [...]
12+
13+
**Дополнительный контекст**
14+
Любая дополнительная информация
15+
16+
<!---
17+
Заявление от команды активных контрибьюторов
18+
19+
Данный проект развивается силами нескольких людей последние 10 лет, разработка ведется на условиях краудсорсинга в связи с чем
20+
Если вы не собираетесь реализовывать данную функциональность сами, просьба идеи и предложения обсуждать на форуме в специализированном разделе https://xdd.silverbulleters.org/c/razrabotka или в рамках вашего контракта на поддержку OpenSource продуктов
21+
22+
-->

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
реализация #
2+
3+
сделанные изменения:
4+
5+
-
6+
-
7+
8+
@oscript-library/Collaborators - пожалуйста, проверьте изменения и прокомментируйте их

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
Описание.Имя(ИмяПродукта)
7777
.Версия(ВерсияПродукта)
7878
.ВерсияСреды("1.0.20")
79-
.ЗависитОт("logos", "1.1.1")
79+
.ЗависитОт("logos", "1.2.0")
8080
.ЗависитОт("tempfiles", "0.2.2")
8181
.ЗависитОт("v8runner", "1.1.3")
8282
.ЗависитОт("gitrunner", "1.5.1")

src/core/Классы/МенеджерСинхронизации.os

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -452,14 +452,44 @@
452452

453453
Если СтандартнаяОбработка Тогда
454454

455-
Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки);
456-
455+
Попытка
456+
Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки);
457+
Исключение
458+
ОписаниеОшибки = ОписаниеОшибки();
459+
Если Не ЭтоПропускаемаяОшибка(ОписаниеОшибки) Тогда
460+
УдалитьВременныеФайлыПриНеобходимости(Конфигуратор.КаталогСборки());
461+
Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:" + ОписаниеОшибки);
462+
ВызватьИсключение;
463+
КонецЕсли;
464+
КонецПопытки;
457465
КонецЕсли;
458466

459467
ОбработчикПодписок.ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки);
460468

461469
КонецПроцедуры
462470

471+
Функция МассивИсключаемыхОшибок()
472+
473+
Массив = Новый Массив;
474+
Массив.Добавить("Конфигурация содержит объекты метаданных, длина имен которых превышает 80 символов!");
475+
476+
Возврат Массив;
477+
КонецФункции
478+
479+
Функция ЭтоПропускаемаяОшибка(Знач ОписаниеОшибки)
480+
481+
МассивИсключаемыхОшибок = МассивИсключаемыхОшибок();
482+
483+
Для Каждого ИсключаемаяОшибка Из МассивИсключаемыхОшибок Цикл
484+
485+
Если СтрНайти(ОписаниеОшибки, ИсключаемаяОшибка) > 0 Тогда
486+
Возврат Истина;
487+
КонецЕсли;
488+
489+
КонецЦикла;
490+
Возврат Ложь;
491+
КонецФункции
492+
463493
#КонецОбласти
464494

465495
#Область Функциональность_очистки_каталога_рабочей_копии

0 commit comments

Comments
 (0)