Куча говна / Говнокод #24503 Ссылка на оригинал

0

  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 roskomgovno, (Updated )

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

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

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

            для версий софта там таги были
            и бранчи
            Ответить
  • > pitushok.txt

    Еба, ну как же иначе...
    Ответить
  • есть еще более смешное ключевое слово $Log$ которое вываливает туда вообще весь лог, но даже в книжке по CVS на gnu.org сказано что юзать его не следует
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8