Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.HUSKY
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.HUSKY с датами от 16 Jul 13 10:00:06 до 04 May 24 09:45:34, всего сообщений: 5323
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 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> автогенерить его?

NA> cvsdate.h:
NA>         git log -n 1 --format=format:"char cvs_date[]=\"%cs\"%n" HEAD
NA> > $@

Иван Иваныч, а что мешает заглянуть в мейкфайл и увидеть, что там сделано по существу так:

date := $(git log --date=short --format=format:"%cd" *.h *.c)
echo "char cvs_date[]=\"$(date)\";" > cvsdate.h

Тут в первой строчке псевдокод, не хотелось эху засорять выкрутасами 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> git clone  https://github.com/huskyproject/huskylib.git huskylib.local
NA> cd huskylib.local
NA> echo 'char cvs_date[]="$Id$";' > cvsdate.h
NA> echo 'cvsdate.h ident' > .gitattributes
NA> git add -f cvsdate.h .gitattributes
NA> git commit -m "cvsdate.h fix"
NA> cd ..
NA> git clone huskylib.local huskylib

NA> % cat huskylib/cvsdate.h
NA> char cvs_date[]="$Id: b161fe756f8179491840ef122f1d0c1afff320b1 $";

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> наверное лицензия не позволяет.

ОК.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
* Origin: ==<<.f1042.ru.>>== (2:5020/1042)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.044467 секунды