Есть ли простой способ обеспечить блокировку лицензии для всех файлов в моем проекте? - PullRequest
2 голосов
/ 27 января 2011

Мне нужен блок лицензии:

//          Copyright Billy O'Neal 2010
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          http://www.boost.org/LICENSE_1_0.txt)

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

Бонусные баллы за способ подключить это к Mercurial, чтобы коммит не мог завершиться успешно, если есть файлы с отсутствующими лицензиями.

(У меня есть много инструментов, которые найдут блоки, но нет инструментов, которые найдут недостающие)

1 Ответ

4 голосов
/ 27 января 2011

В основном вам нужно объединить:

  • hg log --keyword, которые "выполняют поиск заданного текста без учета регистра" (см. " hg log ") : фактически это будет искать сообщение коммита, не все файлы содержимого.
    Поиск файлов лучше выполнять с помощью любого скрипта (например, this ant one )
    Например, Ry4an предлагает в комментариях (для среды Unix):
find $(hg root) -type f -name '*.cpp' | xargs grep --files-without-match LICENSE_1_0.txt
  • с pre-commit hook (обратите внимание, что " precommit hook" запускается после автоматического добавления / удаления файлов из репозитория, что здесь не то, что вам нужно: см. " Предварительная фиксация Mercurial не полностью" Предварительная "").
    Примечание: если вам нужно только заблокировать фиксацию, если лицензионное сообщение отсутствует, но не возражаете добавить / удалить файл в набор изменений, который должен быть зафиксирован, , тогда , предварительная фиксация подойдет.
...