Intereting Posts
svn diff как показывать только измененную строку TortoiseSVN продолжает останавливаться / висит не может git clone на удаленном vm Можно ли отобразить журнал subversion на странице mediawiki? svn diff с DirDiff Как конвертировать путь к файлу Windows: URL-адрес в пакетном файле, подходящий для использования в командной строке SVN Извлечение графика из git log Почему я не могу открыть свою папку в GitHub? Представления в laravel не обновляются после добавления git Git Rebase – Отсутствие запросов на объединение при перезагрузке с помощью мастера Как я могу удалить «происхождение» из $ {GIT_BRANCH} в jenkins? Отображение статуса git на терминале Mac, не работающем с пользовательским профилем bash Как начать интеграцию Git с Android Studio? Git: определение направлений вверх / вниз между ветвями кажется противоречивым git-svn – Оформить удаленную ветку, которая уже существует в svn, когда мой мастер уже является ветвью. Объясните это .git / config

Как вы объясните риски ключевого слова $ Log $?

Кажется, я участвую в ежегодных дебатах об использовании ключевого слова $Log$ . Моя точка зрения такова:

$Log$ – белая горячая смерть.

Все, что он делает, – это кратковременный спам в ваших исходных файлах. Любая информация, которую кто-либо думает, что они могут получить от $ Log $, более легко доступна (и, скорее всего, будет более точной) в вашей системе контроля версий.

Итак, вот вопрос: как бы вы объяснили кодер «старой школы» (который считает, что $ Log $ является способом управления изменениями исходного кода), что у нас есть лучшие инструменты сейчас?

Замечания CVSNT о $ Log $ – хорошее начало, но они просто недостаточно заострены. На сегодняшний день наиболее близким к тому, что я пришел в один лайнер, который мне удалось придумать, является « $Log$ – это желание. Вы надеетесь, что то, что попадает в ваш файл, имеет какое-либо отношение к тому, что действительно случилось с этим файлом ».

PS для ясности: когда я говорю «старая школа», я имею в виду старое отношение, а не старое лет. Моя первая зарплата программирования (и замечательно скромная она была) тоже была в 1986 году, и я никогда не думал, что $ Log $ – хорошая идея.

Я думаю, что в FAQ Subversion также есть хорошее объяснение.

$ Log $ – полный ужас, когда вы начинаете слияние изменений между ветвями. Вы практически гарантированно получаете там конфликты, которые из-за природы этого ключевого слова просто не могут быть решены автоматически.

В дополнение к тому, что говорили другие, попробуйте поместить комментарий (/ * … * /) в сообщение фиксации: ->.

Количество полезных бит в исходном файле медленно уменьшается по мере внесения изменений в него с помощью этого оператора $ Log $. Мы использовали его в некоторых файлах, полученных из CVS, и количество строк операторов $ Log $ было порядка 10 раз дольше, чем исполняемый код в файле на самом деле был. И у него было несколько групп дубликатов, вызванных плохим слиянием из некоторых филиалов.

Вы можете рассмотреть (акцент на май ) встраивание неизменяемых метаданных в ваш файл.
(См. Дискуссию между мной и «старшим школьником»: номера встроенных версий – добро или зло? ).

Несмотря на то, что я всегда считал эту практику злой (смешивая информацию метаданных с данными), вводя «merge hell», можно было бы утверждать, что она могла бы работать с правильным менеджером слияния для неизменных метаданных с фиксированным форматом , как:

  • $ Revision $ $ Редакция: 9.13 $
  • $ Дата $ $ Дата: 2009/03/06 06:52:26 $
  • $ RCSfile $ $ RCSfile: stderr.c, v $

Но изменяемые метаданные, такие как журналы? С неизвестным форматом или контентом? Это обязательно провалится.