Удаление комментариев подстановки ключевых слов из исходных файлов? - PullRequest
1 голос
/ 15 февраля 2011

Примечание: для лучшего слова я называю пух в начале исходных файлов -

/* @(#) $Id: file.c,v 1.9 2011/01/05 11:55:00 user Exp $
   **************************************************************************
   * COPYRIGHT, 2005-2011                                                   *
   ...
 */

- Подстановка ключевых слов комментариев, хотя я не знаю, является ли это просто подрывным термином.

В любом случае, теперь к вопросу : У нас есть сторонний поставщик, от которого мы получаем исходный код. Эти источники c all содержат комментарии к ключевым словам, и каждый раз, когда мы получаем новую версию от поставщика, все (1000+) файлы меняются, поскольку они обновляют эти комментарии для каждого выпуска. они посылают нам, даже если никаких изменений исходного кода в этих файлах не происходит, поэтому only - это комментарии. Теперь, прежде чем мы скомпилируем и используем эти источники, нам было бы интересно провести краткий обзор кода, чтобы увидеть области, которые были изменены. (Никогда не доверяйте истории релизов). Тем не менее, это довольно сложно, так как создание простого каталога diff явно перечислит все файлы.

Сейчас я ищу, существуют ли какие-либо простые инструменты для удаления этих специальных многострочных комментариев из исходных файлов. Может быть, у кого-нибудь есть ссылка на скрипт grep или sed, который вычеркнет эти файлы из файлов?

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Что-то вроде:

perl -ne 'if(m+/\*.*\$Id: +) $c = 1; print unless $c; if($c && m+\*/+) $c = 0;'

Обратите внимание, что это будет работать, только если

  • такие комментарии ограничены /*...*/
  • в первой строке есть $Id:
  • нет ничего после */
  • нет */ до /*

И что он удалит все строки между началом комментария и концом комментария.

Я не проверял это!

0 голосов
/ 15 февраля 2011

Во-первых, я бы попытался убедить их пересмотреть либо свою систему контроля версий (похоже, они все еще используют RCS?), Либо, если это невозможно, подключить их к серверу svn или git для отправки своих изменений.,Но, возможно, вы это уже сделали?

Если в этом смысле ничего не возможно, я бы попытался создать git-репозиторий для хранения версий, которые они вам предоставляют.Git позволяет вам иметь фильтры при импорте или экспорте, а также поддерживает игнорирование таких тегов для различий между версиями.

...