Daniel
а!
Roman
Daniel
* уменьшение кодовой базе в репе
* страховка от ошибок "забыл запустить"
Daniel Podolsky admin, [25 Sep 2018 19:17:47]:
если проект компилируется без результатов генерации - так, может, и не нужна она?
а если нет - вы же компилируете свою программу, прежде чем пушнуть?
или вы хотите оставить программисту возможность компилировать локально другой код, нежели будет использовать CI?
в любом случае - это тупо.
Алексей
и уж точно я против запуска кодогенерации руками
Daniel
а чем? такой длины член далеко не у всех...
Pavel
Daniel
и так не надо, если руки из плеч
aadz
🏁Александр
я помню "забыл запустить" - easyjson в одном из пакетов, после обновления структуры. Было больно отлаживать
Daniel
Daniel
🏁Александр
Daniel
aadz
это как?
да хоть с помощью того же RCS :)
Daniel
Roman
каким это образом? технически?
чексуммы? проверить чексумму исходников образа, проверить название генерированного файла.go и сравнить, были ли изменения, если не было - компилить, если были - заново сгенерить и компилить
Алексей
скорее всего сама компиляция примерно также и работает
Алексей
только надо было бы ещё на кодогенерацию это всё распространить
🏁Александр
.gitattributes
вы имеете введу изменение стратегии слияния для vendors?
🏁Александр
c помощью .gitattributes
Алексей
aadz
А почему любимого Славы Бахмутова на воскресном митапе не бвло?
snip
Результат кодгена это такой же код как и написанный руками, аргументы типа забыть сгенерить и запушить в репозиторий - очень тупой
aadz
пашет, наверное....
snip
Нет
🏁Александр
Алексей
Или это тот случай из разряда "если этого нет в Go, значит это не нужно"?
🏁Александр
гоу религия подрузомевает что у вас все сделано максимально "чисто"
🏁Александр
поэтому и нет всяких дженерикой
🏁Александр
и куча "копипаста"
Алексей
Мы сейчас не про дженерики вообще говорим
🏁Александр
коммитить кодген это нормально
snip
Код независимо от того как он написан является кодом программы, если вы запушили код в репо не сгенерировав код значит вы запушили код который не компилится, значит вам не место в профессии
Алексей
так понятно
🏁Александр
у вас IDE например тоже создает файл main.go и функцию main в нем, не скажите же вы что это коммитить нельзя и надо юзать генерацию на CI?
Алексей
как я объяснял предыдущие два раза:
1) пушьте сгенерированный код сколько угодно
2) не надо кодогенерацию на CI выносить
3) не надо кодогенерацию доверять человеку, когда достаточно легко сделать так, чтобы доверять было не нужно
4) надо кодогенерацию выполнять при сборке
aadz
вот, суко, девопских докладов в воскресенье и не было в мыле... про кодогенерацию и все, что с этим связано
aadz
кто-нибудь возьмется подготовить такой доклад про кодогенерацию и ответить на вопросы благодарных слушателей?
aadz
сразу все замолчали... :)
Vasily
Раньше запускалось при сборке, но это в итоге медленно
Dmitri
🏁Александр
кстати вопрос про моки
🏁Александр
если мы берем неsql базу, то ее стоит оборачивать для кормежки в репозиторий?
Roman
Roman
snip
snip
Это примерно тоже самое самое что забыть запушить часть исходников написанных руками
Roman
Aleksandr
Что за бред
скомпилировал по схеме 1000 методов апи-клиента, в одном из которых поменялась сигнатура. либа скомпилится. если тестов нет, то ошибка обнаружится только на бою, когда апи начнет отдавать 400
snip
snip
Как можно править код и забыть его запушить?
Anonymous
его не забыли запушить
Anonymous
забыли сгенерировать новую версию
Roman
Что за бред
уточню: ты мог забыть перегенерировать код после изменения исходников. Если обратная совместимость интерфейса генерированного кода не нарушена, но изменения произошли внутри имплементации - тогда беда, которую в лучшем случае отловит тест а в худшем вообще никто не заметит пока не заметят баг в продакшне
Roman
рассинхрон исходного кода и генерированного кода это potential security issue а делать ответственным за это человека, который по своей природе часто ошибается, довольно опасная затея
snip
snip
snip
snip
Это же ошибка идиота, зачем идиоты в команде
🏁Александр
так народ, давайте закончим
snip
snip
Забыть перегенерить это почти как забыть сохранить файл
Aleksandr
snip
Кодген это написание кода за счёт другого кода, как можно забыть что делал в середине процесса?
🏁Александр
@onokonem у меня тут вопрос, а если мы делаем репозиторий он должен требовать в зависимость непосредственно реализацию бд? Или какой то абстракций слой еще один. (NoSQL решение, json запросы)
Aleksandr