= Сообщение: 4562 из 5323 ========================================= RU.HUSKY = От : Michael Dukelsky 2:5020/1042 03 Nov 21 22:58:10 Кому : Nil A 03 Nov 21 22:58:10 Тема : Новые мейкфайлы FGHI : area://RU.HUSKY?msgid=2:5020/1042+6182e9de На : area://RU.HUSKY?msgid=2:5015/46+6182e2bf = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Привет, Nil!
03 November 2021 22:06, Nil A послал(а) письмо к Michael Dukelsky:
NA>>> и руками создать cvsdate.h с датой, NA>>> хотя надо было его засандалить прямо в репу и
MD>> Нет, не надо. Он там был и создавал кучу неудобств, так как в MD>> него надо было не забывать записывать новую дату при каждом MD>> коммите.
NA> Семён Семёныч, а что мешает сделать cvsdate.h целью для мейкфейла и NA> автогенерить его?
Тут в первой строчке псевдокод, не хотелось эху засорять выкрутасами GNU make.
MD>> Особенно это было неудобно при одобрении пулл реквестов. Поэтому MD>> файлы cvsdate.h теперь создаются во время сборки и туда MD>> записывается максимальная дата коммита данного подпроекта и всех MD>> его зависимостей.
NA> Проблема миграции с CVS и им подобных на GIT существует лет нанадцать NA> уже наверное, например, я недавно на работе толпу проектов перевёл из NA> Perforce в GIT. Обычно там всё сводится к генерации $Id$ метки, NA> которая решается .gitattributes.
MD>> С правилами? Научи, как сделать, чтобы в cvsdate.h записать MD>> максимальную дату коммита с помощью .gitattributes с правилами.
NA> Что это, Бэрримор? (с) NA> Это хешь последнего коммита. Не, ну ведь дата (без времени) последнего NA> коммита - это не совсем уникальный тэг, так?
NA> Чтобы туда попало что-то более похожее на дату - это надо бубен NA> доставать. Это надо в .gitattributes добавить export-subst, а в NA> cvsdate.h иметь подстроку $Format:%cs$ но тут есть две проблемы а. Эта NA> подстановка работает, кажись, только для git archive б. Там остаются NA> баксы вокруг $дата$, хотя кого это колеблет. Короче, чтобы случилась NA> кашерная замена - это надо наворачивать фильтры, .gitattributes типа NA> cvsdata filter=indent, и делать всякие git config --global NA> filter.indent.clean .. И надо дать какой-то скрипт, который реально NA> пойдёт и совершит замену. Ну камон, под разные ос этот скрипт будет NA> выглядеть по-разному, если только ты не хочешь обязать всех иметь perl NA> в рантайме, или ещё какой-то "универсальный" скипт.
NA> Такой гемор,
Вот именно. Насоветовал. :)
NA> яб просто из мейкфайла одной коммандой git log генерил бы NA> этот файл.
Дык, прикинь, так и сделано.
NA> Опять же, ты обязываешь, чтобы в рантайме у клиента стоял NA> git.
В рантайме? Упаси боже. Только во время сборки. У меня, например, сборка и исполнение происходят на разных машинах, к тому же сборка идёт в чруте.
NA> Хотя ты и так уже это требуешь, ведь ты git clone там делаешь NA> подпроектов походу пьесы.
Это пьеса сборки, а не исполнения программы.
MD>> То есть текущая версия называется Darwin, а следующая как MD>> называется (меня интересует uname -s)?
NA> Darwin == MacOS. Просто Эпплы не могут по uname -s так сказать, NA> наверное лицензия не позволяет.