1. Куча / Говнокод #24503

    −1

    1. 1
    Keyword Substitution

    Котаны, что мы думаем про keyword Substitution?

    Для тех, кто в танке: была в прошлом веке такая VCS RCS.
    В ней можно было в файле указать

    $Id$

    И в момент чекаута эта строчка заменялась на
    pitushok.txt,v 1.41 02.06.1991 petya

    Где 1.41 -- ревизия, дальше дата и login того кто делал checkout.
    Когда ты потом собирал дистрибутив из сырцов то у каждого файла всегда была инфа о том, кто (И когда) последний его трогал.
    Чуваки умели делать
    static char* id ="$id$";

    В результате чего эта инфа сохранялась в бинарниках, ее можно было выдрать через комманду ident ну или вывести как-то иначе.

    Субж перекочевал в CVS, оттуда в SVN, а в gitе он был признан порочной практикой и там так никто не делает.

    Опенбздуны, например, сидящие на CVS, до сих пор имеют профит. Там везде написано
    $OpenBSD: cat.1,v 1.35 2015/11/04 21:28:01 tedu Exp $


    ...а в линуксах -- нет.

    Знаете про keywords subst? Использовали? что думаете?

    Запостил: roskomgovno, 17 Июля 2018

    Комментарии (16) RSS

    • seo #некро #bestpractice #vcs #прыщи
      Ответить
    • Говно, имхо. Зачем системе контроля версий патчить файлы?

      Если тебе надо при билде воткнуть инфу о версии -- ну запроси её у гита во время сборки да вкомпиль. И не надо тут никакой магии.
      Ответить
      • >>запроси её у гита да вкомпиль
        В каждый файл? Зачем, если это можно бесплатно получить от VCS?

        В смысле, никто не заставляет тебя включать keywords, и их можно было отключить кстати (во всяк случае в cvs)
        Ответить
        • Ну нахуя она нужна в каждом файле то? Чтобы инкрементальная сборка шла по пизде после каждого коммита?
          Ответить
          • Пустил тебя по пизде, проверь.
            Ответить
          • >>в каждом
            потому что ты распостраняешь сырцы потом, и человеку может быть интересно когда файл меняли. Кроме того многие файлы и распостраняются текстом (конфиги, скрипты итд)

            >>пизде
            если ты не менял файл то его текст и не изменится, как это помешает инкрементальной сборке?.
            Ну там был файл 1991 года, он им и останется посте cvs up, нет?
            Ответить
            • > когда файл меняли
              Пусть историю в репе смотрит.

              > не изменится
              Ну т.е. пример с static char* и его выводом -- надуманная хуйня, которая не будет работать т.к. about.c, в котором она находится, никто годами не меняет?
              Ответить
              • >>Пусть историю в репе смотрит.
                ну вот ты скачал .iso файл, установил себе ОС, отуда у тебя там реп?

                Я ща вот подумал и пришло мне подозрение что может быть в 1991 году это сделать было сложнее, и потому keywords имели больше смысла..

                >>никто годами не меняет?
                речь об одномодульниках конечно)
                Ответить
                • Интересно с самим собою общаться?
                  Ответить
                • Ну вот открыл ты исходник и видишь, что его поменял roskomgovno в 2018 году. Твои дальнейшие действия? Что поменял? Да хуй знает, может просто дату в копирайте обновил. Какие ещё файлы затронуты? Да хуй их знает. Зачем поменял? Да хуй его знает. Очень информативная и полезная строчка, да.
                  Ответить
                  • Полагаю что в древние времена не было доступа к анонимным VCS и единственный способ узнать кто и что поменял и задать вопрос автору (в ту пору у модуля обычно был один автор) был только через keywords.

                    Похоже что ты прав, и сейчас это не имеет смысла.

                    зы:
                    http://wordaligned.org/articles/keyword-substitution-just-say-no
                    во втором пункте чел напиздел, во что его и тыкнули
                    Ответить
          • З.Ы. Или эта инфа у каждого файла своя и её вообще нельзя юзать как версию софтины в целом?
            Ответить
            • версия файла своя конечно) это то, за что все ненавидели CVS (как наслденика RCS):
              1.41 в моем примере это версия файла
              у соседнего файла в папке может быть версия 1.91 если он чаще менялся

              для версий софта там таги были
              и бранчи
              Ответить
    • показать все, что скрытоvanished
      Ответить
      • foo bar buz везде кроме питона
        spam ham eggs в питоне
        pitushok и kurochka на gk
        Ответить
    • есть еще более смешное ключевое слово $Log$ которое вываливает туда вообще весь лог, но даже в книжке по CVS на gnu.org сказано что юзать его не следует
      Ответить

    Добавить комментарий