(2) Я просто спросил, потому что при работе с windows и с текстами 1С, hg оставил гораздо более приятное впечатление. Никаких проблем с кодировками (в комментариях к коммитам), никаких нагромождений типа MINGW32 в дистрибутиве по умолчанию. Bitbucket умеет и hg, и git, поэтому немного удивился, что git. Но если всё остальное в git, то, безусловно, проще с git работать.
(11) У хоронилища конфигураций достаточно много недостатков. Это самое хоронилище - одно из главных препятствий к CI на 1С.
(1) у hg неприятная особенность работы с не-латинскими наименованиями файлов, на своей машинке вы этого не заметите, но вот только начнете использовать различные машинки linux, win7, winxp, win8 и при обмене сразу станет проблема с наименованиями файлов. А использовать латинские наименования для внешних обработок, еще и для 1С - это моветон.
(15) каждых 5 минут, мониторим файл базы данных хранилища.
Отчеты по истории версий смотрю с помощью toolcd.
(22) Про имена проверю, мне кажется, я об эту граблю спотыкался, но она решилась просто. Может что-то путаю.
Где-то год назад я пытался прикрутить 1С к общему CI-серверу - тоже написал проверку раз в 5 минут (только всё-таки по отчетам хранилища, из-за чего было медленно). Но в процесс не решился встраивать - уж слишком всё наколеночно получалось: тесты отдельными хранилищами, конфа отдельным, программисты c# в своём hg-репозитории.
У меня для обработок тестов отдельное хранилище git поднято(тесты используются как внешние обработки), в роли CI выступает jenkins, который ночью запускает получение последней версии из хранилища, обновление эталонной базы, сохраняет вывод протокола обновления. После этого запускаются тесты, результат вывода идет в стандартном junit xml формате, что позволяет jenkins распарсить результат, а мне видеть в результате количество новых успешных тестов, количество регрессий в тестах и т.д., деградация времени выполнения тестов ну и в случаи неудачи ответственным за последние изменения отсылаются письма счастья.
p.s.: уже можно CI использовать в 1С и это очень удобно.
Собрал версию плагина FixUtf8 работающую с Mercurial 3.8 и перевел описание на русский язык. Результат редварительного тестирования - работает корректно, проверял на ERP 2.1 и своих расширениях/ внешних обработках.
(3) Evil Beaver, немного не правильно поняли. 95% наработок у нас хранится во внешних обработках и отчетах, согласно статьи http://infostart.ru/public/169131/. Автоматически распаковываются файлы *.epf и *.erf.
Добавить поддержку *.cf возможно, но пока для конфигурации мы пользуемся хранилищем конфигурации.
(6) версии у вас хранит git. А чем вы сравниваете 2 коммита epf между собой? Я как раз для этого V8Viewer и делал. Нужно видеть историю изменений и сравнивать коммиты. Что изменилось, почему и т.п.
Или я что-то не так понял...
(7) Evil Beaver, разницу сразу показывает git, да и сервис хостинга bitbucket. Пока только модуль объекта, модули форм и макеты СКД. Но в будущем, надеюсь совместными усилиями сообщества, появится возможность все остальное хранить в более понятном виде, а также добавить возможность "патчинга" и обратной сборки в обработку\отчет.
(8) в гите, конечно, должны лежать текстовики. Это более правильный подход, нежели с хранением epf и ковырянием в них сторонними утилитами. Наличие текстовиков позволяет выполнять полноценный merge и вообще, пользоваться "родными" средствами git в полной мере. Смущает меня именно "частичность" хранения. Это лежит в гите, а это - не лежит... как-то польза от такого "контроля версий" кажется мне очень небольшой.
Хранение версий - это все или ничего. Вот есть коммит, он отмечен как "финальная версия 1.01" В любое время дня и ночи он должен быть получен из гита и собран в боевой режим. Этот коммит обязан быть единым и неделимым. Как у вас это обеспечивается?
(9) Evil Beaver, лежат текстовые файлы и соответственно бинарный файл обработки рядом. То что Вы написали мы разрабатываем в свободное от работы время и когда оно будет сказать не могу, но когда будет реализовано в полной мере - тогда и можно начинать делать автоматические ночные тесты и сборки.
Та часть, которая сейчас есть, как раз нам нужна для ускоренного проведения "Code review" и получения последней актуальной версии. Соответственно отпадает нужда в поисках последней версии обработки по базам тестирования и дерганья программистов с вопросом: "А где последняя ли версия?".
(11) Ну и чтобы не быть голословным. Списочек того, что не устраивает в хоронилище:
Хранилище имеет закрытый формат. Если с ним что-то произошло, то очень часто починить нереально.
Хранилище не отслеживает релиз платформы, на которой разрабатывается конфигурация. При параллельной разработке в 2 релизах были случаи крэша хранилища. В git/hg даже просто выгруженной конфигурации, этого можно было бы избежать, так как все изменения прозрачно хранятся в файлах.
Хранилище очень жадное до трафика. Причем во всех вариантах (и папка и сервер). А сервер еще и тормозной. В git/hg локальная копия всегда под рукой.
Хранилище не имеет веток даже в том виде, в котором они были в допотопном SVN. Из-за этого любая разработка скатывается к нескольким независимым хранилищам (как аналогу веток). Но из-за независимости сразу возникает букет проблем (банально даже с заведением разработчиков).
Хранилище не позволяет автоматизировать ничего, кроме выплёвывания cf. Нет даже реагирования на события - как CI сервер должен догадаться, что нужно собирать релиз начать? Да, давайте каждые 5 минут формировать полный отчет по хранилищу и смотреть последнюю версию. Только...
Отчеты в интерактивном режиме и в пакетном разные. Причем в пакетном нет части настроек. Из-за этого достоверно доверять отчету нельзя.
В хранилище нельзя сделать пользователя, который может захватывать объекты, но не может коммитить. В git/hg вообще не нужны захваты и с локальной копией можно хоть камасутрой заниматься.
В хранилище нет аналога pull request.
Блин, надо остановиться, а то я могу этот список еще долго продолжать :)
(16) Вот еще не хватало на хранилище нервы тратить :) Какое уж есть. Для 1-3 человек даже более-менее удобное решение. А вспоминая групповую разработку на клюшках (в до-GComp эпоху) так вообще конфетка :)
(18) Ну во-первых суть как раз в "может захватывать объекты, но не может коммитить". Один из сценариев (не единственный) - костыльный "pull request".
Во-вторых, рабочая база не должна быть связана с хранилищем. Моё мнение - рабочая база только на полной поставке.
(25) BabySG, ага, только на вопрос "когда в продакшин, а не тест?", не можем с уверенностью ответь даже про 8.3.5 .
Думаю даже с новым конфигуратором вряд-ли, что-то измениться в плане тестирования. В 8.3 запись тестов появилась, а интерпретация результатов нет, не приняты в 1С автоматические тесты.
(36) pumbaE, ага, использовать бы ide eclipse под 1ц было бы очень круто. В данном случае проприетарность 1ц только во вред самой платформы. Уже столько лет прошло, ну возьмите вы достойную ide запросто адаптируете под нужные вещи - и вот уже достойная система разработки
Спасибо. Пригодилось.
Раньше в виде бинарников в Гите хранила, решила попробовать.
Достаточно читабельно.
Заработало "из коробки" без никаких модификаций. Только Питон пришлось доставить.
(37) iceflash, Ну так сделали вроде уже работу 1С с ide eclipse. Еще годик и рядовым программистам дадут поиграться.
(38) ekaruk, посоветовал бы вам использовать precommit1c. К сожалению, в V8Commit есть некоторые ошибки (не разбирается управляемая форма в отчете *.erf с СКД).
Ошибку не планируется исправлять, так как сейчас в процессе идет разработка программы, которой не нужна платформа 1С для работы.
(39) pbazeliuk, precommit1c пробовала раньше.
Не получилось настроить.
Вроде все по описанию, последний вариант с ГитХаба
Может подскажете, что ему не хватает.
(40) есть такая ошибка, нет проверки на первое помещение файла. Для быстрого fix добавьте в параметры "git commit -n " (коммит без вызова хуков) и потом последующие изменения (можно еще раз в модуле пробел добавить) будут проходить нормально.
p.s. для таких случаев есть регистрация ошибок, если несложно сделаете плиз.
46.
eugeniezheludkov
4127.02.15 07:13 Сейчас в теме
все круто работает распаковывает при коммите , но как делать слияние так и не понял ? т.е к примеру вася поменял в модуле обработки , а петя поменял код в модуле формы , ну или оба меняли код модуля формы ? как это смерджится ? или для такой командной разработки не предназначено ? и как я понял для .cf подобного не существуют и все тупо ждут 8.4.1 с его эклипсом и java ?
ПС кажись понял все примеры приводятся лишь для 8.3 ? там можно .cf обратно собрать в пакетном режиме