-
Notifications
You must be signed in to change notification settings - Fork 93
Добавил возможность экспорта с указанием минимальной и максимальной версии #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
||
| Функция СоздатьКомандныйФайл(Знач Путь = "") | ||
|
|
||
| Файл = Новый КомандныйФайл(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А давай библиотеку 1commands использовать для этого вот всего?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно, свой тест сделал копипастом на основе lib\gitsync\tests\git-sync-test.os
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А давай библиотеку 1commands использовать для этого вот всего?
Ага, специально для таких реализаций я и делал данную библиотеку
artbear
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Зачем нужен еще один тестовый файл хранилища 1С?
у нас уже есть в проекте в папке tests/fixtures набор бинарных файлов, необходимых для тестирования.
Предлагаю использовать в тестах уже существующее хранилище.
|
Имеющееся хранилище не позволяет достоверно проверить работу, т.к. там всего 3 коммита. |
|
|
||
| КонецФункции | ||
|
|
||
| Функция ПроверитьСуществованиеФайлаКаталога(парамПуть, допСообщениеОшибки = "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ИМХО метод ПроверитьСуществованиеФайлаКаталога не должен ничего возвращать, а просто выдавать исключение, если файла/каталога нет, вместо показа сообщения.
У нас такая семантика - методы с "Проверить..." самостоятельно выбрасывают исключение, если не выполняются необходимые условия.
Тем более, что далее в тесте Тест_ДолженЭкспортироватьНачинаяСВерсии3 и других стоит вызов этой проверки, но в результате в случае ошибки выполнение не останавливается, что неверно для теста :(
ИМХО переделать.
| Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures"); | ||
| КонецФункции | ||
|
|
||
| Процедура Тест_ДолженЭкспортироватьНачинаяСВерсии3() Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В 3х тестах сильно дублируется код подготовки рабочего каталога.
ИМХО весь код до вызова Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит нужно выносить в отдельный метод инициализации.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Код проверки после вызова Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит также очень сильно похож.
Его бы также отрефакторить.
|
|
||
| ИмяФайлаЛогаГит = ВременныеФайлы.НовоеИмяФайла("txt"); | ||
|
|
||
| ФайлКоманды = ВременныеФайлы.НовоеИмяФайла("cmd"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ИМХО код ниже
+ ФайлКоманды = ВременныеФайлы.НовоеИмяФайла("cmd");
+ ЗаписьФайла = Новый ЗаписьТекста(ФайлКоманды, "cp866");
+ ЗаписьФайла.ЗаписатьСтроку("cd /d " + ОбернутьВКавычки(КаталогИсходников));
+ ЗаписьФайла.ЗаписатьСтроку("git log --pretty=oneline >"+ОбернутьВКавычки(ИмяФайлаЛогаГит));
+ ЗаписьФайла.Закрыть();
+
+ КодВозврата = 0;
+ ЗапуститьПриложение("cmd.exe /C " + ОбернутьВКавычки(ФайлКоманды), , Истина, КодВозврата);
+ юТест.ПроверитьРавенство(0, КодВозврата, "Получение краткого лога хранилища git");лучше заменить на создание объекта КомандныйФайл из 1commands, посмотри примеры в этом репо, там все просто.
Код будет выглядеть намного красивее и читабельнее, меньше технических деталей
|
|
||
| КонецПроцедуры | ||
|
|
||
| Функция ВыполнитьКлонированиеТестовогоРепо() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Метод ВыполнитьКлонированиеТестовогоРепо не вызывается из другого кода.
Зачем он нужен?
Переработал модули и тесты
|
Добавил ключ -limit. |
Сейчас здесь определяются параметры Здесь проверяются default значения |
Предлагаю добавить еще пару коммитов в существующий файл хранилища. |
|
Так и сделал, только залил больше коммитов. |
artbear
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Так и не исправлено поведение ПроверитьСуществованиеФайлаКаталога - нужно сразу выбрасывать исключение
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Согласно указанному коду
Если Лимит <> 0 Тогда
+ КонечнаяВерсия = ТекущаяВерсия + Лимит;
+ КонецЕсли;
+
+ Если НачальнаяВерсия <> 0 Тогда
+ Если Лимит <> 0 Тогда
+ СледующаяВерсия = Число(НачальнаяВерсия);
+ КонечнаяВерсия = СледующаяВерсия + Лимит;
+ Иначе
+ СледующаяВерсия = Макс(СледующаяВерсия, Число(НачальнаяВерсия));
+ КонецЕсли;
+ КонецЕсли;видно, что нужно указывать абсолютные значения версий.
Но у нас 2 основных сценария - 1 первоначальная выгрузка и 2 очередная выгрузка
Для первого сценария нужны абсолютные значения версий.
А вот для 2го сценария "очередная выгрузка" нужны номера версий, относительно последней выгруженнной.
Какие есть идеи по реализации 2го сценария?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ага, относительные делаются через limit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Для 2 сценария будет работать: gitsync export store -limit <СколькоТоВерсий>
иначе говоря: выгрузить не более <СколькоТоВерсий> начиная с последней выгруженной.
При:
НомерВыгруженнойВерсии = 10
gitsync export store -minversion 5 -limit 3
выгрузит поверх 10 версии: 5,6,7,8.
Т.о. опасное сочетание: minversion + limit.
При
НомерВыгруженнойВерсии = 10
МаксНомерВХранилище = 20
gitsync export store -minversion 5
выгрузит начиная с 11 все до 20.
|
Еще доку нужно поправить :) |
…твии объекта по указанному пути.
|
|
||
| ВсеТесты = Новый Массив; | ||
|
|
||
| // ВсеТесты.Добавить("Тест_ДолженЭкспортироватьНачинаяСВерсии3"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тесты зря закомментировал. возвращай.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
уже )
|
Думаю, тянет на новый релиз. |
|
Тогда может прогоним режим fast #25 потом уже о релизе можно будет поговорить |
|
Предлагаю выпустить релиз, а #25 рассмотреть уже позже |
gitsync export c:\store\ -minversion 4 -maxversion 7
gitsync export c:\store\ -minversion 3
gitsync export c:\store\ -maxversion 5