oscript-library icon indicating copy to clipboard operation
oscript-library copied to clipboard

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

Open EvilBeaver opened this issue 9 years ago • 28 comments

Функционал: Подключение существующей конфигурации (с хранилищем) к 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!

EvilBeaver avatar Apr 07 '16 09:04 EvilBeaver

неистово плюсую :+1:

dmpas avatar Apr 07 '16 09:04 dmpas

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

artbear avatar Apr 10 '16 18:04 artbear

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

EvilBeaver avatar Apr 11 '16 11:04 EvilBeaver

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

пн, 11 Апр 2016, 14:36 Andrei Ovsiankin [email protected]:

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

— You are receiving this because you were mentioned.

Reply to this email directly or view it on GitHub https://github.com/EvilBeaver/oscript-library/issues/82#issuecomment-208300196

artbear avatar Apr 11 '16 15:04 artbear

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

EvilBeaver avatar May 13 '16 08:05 EvilBeaver

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

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

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

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

artbear avatar May 13 '16 12:05 artbear

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

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

artbear avatar May 13 '16 12:05 artbear

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

EvilBeaver avatar May 13 '16 15:05 EvilBeaver

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

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

EvilBeaver avatar May 13 '16 15:05 EvilBeaver

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

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

artbear avatar May 13 '16 15:05 artbear

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

artbear avatar May 13 '16 15:05 artbear

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

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

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

artbear avatar May 13 '16 15:05 artbear

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

nixel2007 avatar May 13 '16 15:05 nixel2007

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

nixel2007 avatar May 13 '16 15:05 nixel2007

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

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

artbear avatar May 13 '16 16:05 artbear

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

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

artbear avatar May 13 '16 16:05 artbear

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

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

EvilBeaver avatar May 13 '16 16:05 EvilBeaver

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

nixel2007 avatar May 13 '16 16:05 nixel2007

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

# 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 avatar May 13 '16 16:05 artbear

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

artbear avatar May 13 '16 16:05 artbear

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

так есть же VB

nixel2007 avatar May 13 '16 19:05 nixel2007

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

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

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

ghost avatar May 14 '16 04:05 ghost

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

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

ghost avatar May 14 '16 04:05 ghost

Еще один сценарий шагов от @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

EvilBeaver avatar Jun 03 '16 09:06 EvilBeaver

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

artbear avatar Jun 15 '16 09:06 artbear

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

EvilBeaver avatar Jun 15 '16 11:06 EvilBeaver

https://github.com/oscript-library/gitsync/issues/82 Залинкую

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

ghost avatar Oct 07 '17 19:10 ghost

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

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

artbear avatar Oct 09 '17 08:10 artbear