Skip to content
This repository has been archived by the owner on Mar 12, 2021. It is now read-only.

Неудобный кейс начального старта в gitsync. Сложно начать #82

Open
EvilBeaver opened this issue Apr 7, 2016 · 28 comments

Comments

@EvilBeaver
Copy link
Owner

Функционал: Подключение существующей конфигурации (с хранилищем) к git

Сценарий: Создан пустой репозиторий на сервере git

   Допустим, создан пустой репо на сервере git
   Когда я захожу в пустой каталог, который должен стать рабочей копией git 
    И запускаю gitsync в режиме **clone**
    И указываю адрес репо GIT
    И указываю файловый путь к хранилищу 1С
   Тогда gitsync выполняет клонирование в текущий каталог
     И формирует файл AUTHORS по данным хранилища
     И формирует файл VERSION с пустой версией

   Когда я захожу в пустой каталог, который должен стать рабочей копией git 
     И запускаю gitsync в режиме **init**
     И указываю адрес репо GIT
     И указываю файловый путь к хранилищу 1С
   Тогда gitsync выполняет инициализацию через git init в текущем каталоге
      И добавляет git remote на основании параметра ком. строки "адрес репо git"
      И формирует файл AUTHORS по данным хранилища
      И формирует файл VERSION с пустой версией

Сценарий: Создан пустой репозиторий и уже склонирован в папку рабочей копии средствами git

   Допустим, я уже выполнил клонирование удаленного репо в локальную папку

   Когда я запускаю gitsync в режиме **clone**
   Тогда gitsync обнаруживает, что текущий каталог не пуст и не делает клонирование
     И предлагает воспользоваться командой init
     И завершается с ошибкой

   Когда я запускаю gitsync в режиме **init**
     И указываю адрес репо GIT
     И указываю файловый путь к хранилищу 1С
  Тогда gitsync обнаруживает папку .git и не выполняет инициализацию репозитория
     И выдает предупреждение, что параметр ком. строки "адрес репо git" будет проигнорирован, т.к. репо уже существует
     И формирует файл AUTHORS по данным хранилища
     И формирует файл VERSION с пустой версией

Часть этого функционала не реализована или работает неочевидно. Нужно прогнать данный сценарий и свериться с ожидаемыми результатами.

Help Wanted!

@dmpas
Copy link
Contributor

dmpas commented Apr 7, 2016

неистово плюсую 👍

@artbear
Copy link
Collaborator

artbear commented Apr 10, 2016

@EvilBeaver
ИМХО в обоих сценариях у тебя на самом деле 2 разных суб-сценария описаны.
В итоге должно быть 4 сценария.

@EvilBeaver
Copy link
Owner Author

@artbear А можешь пояснить где именно разделение на 4 сценария? Может предложишь рефакторинг фичи?

@artbear
Copy link
Collaborator

artbear commented Apr 11, 2016

Пишу с телефона, поэтому коротко.
Попробуй выполнить любой из сценариев, и увидишь, что 2й блок Тогда не
выполнится, т.к. шаги выше делают его недействительным

пн, 11 Апр 2016, 14:36 Andrei Ovsiankin notifications@github.com:

@artbear https://github.com/artbear А можешь пояснить где именно
разделение на 4 сценария? Может предложишь рефакторинг фичи?


You are receiving this because you were mentioned.

Reply to this email directly or view it on GitHub
#82 (comment)

@EvilBeaver
Copy link
Owner Author

@artbear а можно еще раз для тупых? Что там не выполнится, я не улавливаю.. (

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

Следующие шаги сценария противоречат друг другу, т.е сценарий упадет точно.
Сначала мы клонируем репо в папку, а далее в этой папке запускаю инит, который не выполнится.

Сценарий: Создан пустой репозиторий на сервере git

   Допустим, создан пустой репо на сервере git
   Когда я захожу в пустой каталог, который должен стать рабочей копией git 
    И запускаю gitsync в режиме **clone**
   Тогда gitsync выполняет клонирование в текущий каталог

   Когда я захожу в пустой каталог, который должен стать рабочей копией git 
     И запускаю gitsync в режиме **init**

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

@EvilBeaver а что означают ** в шаге И запускаю gitsync в режиме **clone** ?

В геркине разве учитываются подобные знаки?

@EvilBeaver
Copy link
Owner Author

оказалось, что нет. Это я хотел так выделить жирным в markdown-style

@EvilBeaver
Copy link
Owner Author

Сначала мы клонируем репо в папку, а далее в этой папке запускаю инит, который не выполнится.

Да, это как бы два разных теста. Не знаю, как в Геркине оформить правильно

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

Да, это как бы два разных теста. Не знаю, как в Геркине оформить правильно

Я про и говорю с самого начала.
Как и в жизни, в геркине это отдельные сценарии.

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

На самом деле, конечно, можно извернуться и реализовать подобные шаги.
Например, шаг Когда я захожу в пустой каталог, который должен стать рабочей копией git
создает новый пустой каталог и делает его текущим, тогда последующие шаги при условии использовании именно текущего каталога должны работать.

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

Но как реализовать шаги

Когда я запускаю gitsync в режиме **init**
     И указываю адрес репо GIT
     И указываю файловый путь к хранилищу 1С

я лично не понимаю :) как внутри шага установки параметров узнать, что пора бы уже запустить гитсинк ?

@nixel2007
Copy link
Contributor

@artbear это должен быть один шаг

@nixel2007
Copy link
Contributor

Либо переделать эти шаги на сбор команды запуска в несколько шагов и отдельно выполнение этой команды запуска

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

@nixel2007 Тут виден один из примеров того, что сценарий Геркина не всегда возможно реализовать напрямую :(

Например, заказчик/БА пишет сценарий, не думая о реализации. Это хорошо.
Но программисту будет очень сложно сделать подобный сценарий :(

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

Либо переделать эти шаги на сбор команды запуска в несколько шагов и отдельно выполнение этой команды запуска

Конечно, это первое, что приходит в голову.
Но это замена текста сценария, который мог быть написан другим человеком, и возможна подмена сути сценария :)

@EvilBeaver
Copy link
Owner Author

таг, фелософы, вы не выпендривайтесь, вы пальцем покажите )

Я писал желаемое поведение, как оно звучало в голове. Этот фича-файл не предполагает автоматического прогона, он просто чтобы донести свое видение поведения.

@nixel2007
Copy link
Contributor

@artbear Андрей дело говорит. Фиче-файлы всегда подвергаются рефакторингу. Тут нечего бояться)

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

Вот тебе палец

# language: ru

Функционал: Подключение существующей конфигурации (с хранилищем) к git

   Контекст: создан пустой репо на сервере git

   Сценарий: Стартуем в режиме clone при создании пустого репозитория на сервере git

     Когда я захожу в пустой каталог, который должен стать рабочей копией git
      И запускаю gitsync в режиме "clone"
      И указываю адрес репо GIT
      И указываю файловый путь к хранилищу 1С
     Тогда gitsync выполняет клонирование в текущий каталог
       И формирует файл AUTHORS по данным хранилища
       И формирует файл VERSION с пустой версией

   Сценарий: Стартуем в режиме init при создании пустого репозитория на сервере git

     Когда я захожу в пустой каталог, который должен стать рабочей копией git
       И запускаю gitsync в режиме "init"
       И указываю адрес репо GIT
       И указываю файловый путь к хранилищу 1С
     Тогда gitsync выполняет инициализацию через git init в текущем каталоге
        И добавляет git remote на основании параметра ком. строки "адрес репо git"
        И формирует файл AUTHORS по данным хранилища
        И формирует файл VERSION с пустой версией

  Контекст: я уже выполнил клонирование удаленного репо в локальную папку

  Сценарий: Стартуем в режиме clone при создании пустого репозитория на сервере git и его клонировании в папку рабочей копии средствами git

     Когда я запускаю gitsync в режиме "clone"
     Тогда gitsync обнаруживает, что текущий каталог не пуст и не делает клонирование
       И предлагает воспользоваться командой "init"
       И завершается с ошибкой

  Сценарий: Стартуем в режиме init при создании пустого репозитория на сервере git и его клонировании в папку рабочей копии средствами git

     Когда я запускаю gitsync в режиме "init"
       И указываю адрес репо GIT
       И указываю файловый путь к хранилищу 1С
    Тогда gitsync обнаруживает папку .git и не выполняет инициализацию репозитория
       И выдает предупреждение, что параметр ком. строки "адрес репо git" будет проигнорирован, т.к. репо уже существует
       И формирует файл AUTHORS по данным хранилища
       И формирует файл VERSION с пустой версией

@artbear
Copy link
Collaborator

artbear commented May 13, 2016

А хотите запускалку этой фичи :) ?

@nixel2007
Copy link
Contributor

nixel2007 commented May 13, 2016

А хотите запускалку этой фичи :) ?

так есть же VB

@ghost
Copy link

ghost commented May 14, 2016

забыли ключевые слова - как кто и хочу и чтобы что, поэтому и не понятно.

@EvilBeaver в понедельник подключаем 3 команды "к веселью" я попробую описать в нескольких сценариях. Сейчас сделана контрольная карта первого запуска - чтобы хоть как-то выкрутиться.

@artbear поддержка фич на 1script обсуждалась вот тут https://github.com/silverbulleters/vanessa-services/issues/20, собственно уже сделана, осталось только в релиз выпустить

@ghost
Copy link

ghost commented May 14, 2016

@EvilBeaver что касается неудобного старта работы - то наши слушатели просто предложили реализовать "консольный мастер настройки", этакий рабочий стол по первой настройке.

то есть это новая функциональность - типа gitsync first-start-master

@EvilBeaver
Copy link
Owner Author

EvilBeaver commented Jun 3, 2016

Еще один сценарий шагов от @realMaxA

в общем, что делаю.

1. Создаю на git-сервере репозитарий test
2. Клонирую его на локальную машину разработчика.
3. Инициализирую в нём gitsync gitsync clone d:\Data\1C\8.3\Storage\MyProj git@devel:MaxA/test.git src/config
4. Прописываю в VERSION версию.
5. Запускаю синхронизацию gitsync d:\Data\1C\8.3\Storage\MyProj git@devel:MaxA/test.git src/config -v8version 8.3.6.2299
> > Да. Просто указываешь путь внутри локальной копии

6.тогда он создаёт свой отдельный репозитарий git внутри моего репозитария, что неверно

    test\
    |.git
    |src\
        |config\
            |.git

artbear added a commit that referenced this issue Jun 14, 2016
…реализации в gitsync #82

Также документировал режим экспорта конфигурации в сторонний репозитарий Git
@artbear
Copy link
Collaborator

artbear commented Jun 15, 2016

Сейчас #82 описывает не полный функционал продукта, а только начальную инициализацию.
Нужно добавить сценарии реальной работы с продуктом (начальная инициализация, ручные действия пользователя, синхронизация с локальными и удаленными репозитариями гит)

@EvilBeaver
Copy link
Owner Author

#82 это эпик. К нему можно цеплять другие сценарии на Gherkin

@ghost
Copy link

ghost commented Oct 7, 2017

oscript-library/gitsync#82 Залинкую

Люди ругаются и волнуются и еще 4 пул-реквеста протухли

@artbear
Copy link
Collaborator

artbear commented Oct 9, 2017

Люди ругаются и волнуются и еще 4 пул-реквеста протухли

@allustin Раскручусь с рабочими делами и постепенно отработаю по всем PR

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants