有没有一种简单的方法可以确保项目中所有文件都存在许可证块?

时间:2011-01-27 06:16:33

标签: mercurial licensing

我需要一个许可证块:

//          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 个答案:

答案 0 :(得分:4)

基本上,您需要结合使用:

  • 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
  • with a pre-commit hook(请注意,在执行自动添加/删除回购文件后,会运行“预先提交挂钩,这不是您想要的:请参阅”{{3 }}“)。
    注意:如果您只需要在许可证消息不存在时阻止提交,但不介意将文件添加/删除即将提交的变更集,然后预先提交就可以了。