自动管理源文件中的许可证/作者/版本标头

时间:2012-04-03 08:59:06

标签: version-control licensing

通常认为将一些包含作者,版本和许可证信息的行添加到源文件的顶部是一种好习惯。例如,Gnu GPL v3建议添加

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms [SNIP]

我觉得将它手动添加到每个文件是很繁琐的,并且必须时不时更新所有这些信息(新作者,版权年份,版本颠簸)。

有没有办法自动管理它,所以我只需要在一个地方编辑这些内容并自动复制?

如果需要,您可以假设我使用的是任何现代版本控制系统。

3 个答案:

答案 0 :(得分:4)

  

通常认为将一些包含作者,版本和许可证信息的行添加到源文件的顶部是一种好习惯。

这取决于。首先,有两种(或更多)方法可以做到这一点:

  • 管理每个文件的许可信息
  • 在中央位置管理许可信息

如果从头开始创建项目,则在保持清晰的同时,通常可以轻松执行per-file方法。随着时间的推移,随着时间的推移,跟踪事物变得更加困难。因此越来越多的项目转向中心位置变种。

逐个文件的方法的好处是工作范围很明确。通常你会在文件注释中写下应用程序的名称。如果由于某种原因取出单个文件,则信息仍在那里,文档链不会中断。

使用中央定位方法,好处是版本控制软件通常支持此功能,例如GIT。提交者可以由提交者签署,并且可以给予作者。记录了谁自动编写了哪些代码,并且信息存储在一个中心位置:VCS。

将COPYING文件与您的包保存在一起,您可以集中提供主要信息。您可以通过VCS轻松生成作者列表。根据每个文件,您可以创建一个标题,只指定哪个软件以及在哪里查看,只是一个简单的大纲:

/**
 * Flux Deluxe v3.2.0 - Vector Drawing Redefined
 *
 * Copyright 2010, 2012 by its authors. 
 * Some rights reserved. See COPYING, AUTHORS.
 */

如果您在新的一年中发布新版本,则更新所有文件是明智的选择。

答案 1 :(得分:3)

答案 2 :(得分:0)

如果使用Visual Studio,您可以使用宏并附加快捷方式。 然后,在创建新文件时,使用快捷方式添加标题。 如果要确保每个文件中都包含标题,可以使用StyleCop。

以下链接可能会有所帮助:
http://abhijitjana.net/2010/12/05/add-document-header-for-files-automatically-in-visual-studio/
http://stylecop.codeplex.com/

在Eclipse中,还有宏支持,因此您应该能够像VS建议的那样做。但是,我对此没有任何经验。

对于Java,还有StyleCop的替代方案:
http://stylecop.codeplex.com/

我还没有听说过任何适应文件的SVN工具。 在编辑器中使用宏是最接近你想要的东西。