Version control 现有开源项目实施的源代码控制/管理

Version control 现有开源项目实施的源代码控制/管理,version-control,open-source,Version Control,Open Source,我目前正在测试服务器上安装和配置一个开源项目。我在使用源代码管理方面受过良好的培训,我希望确保我所做的一切都得到正确的管理(对于我,唯一的开发人员/管理员,以及未来的维护人员来说)。开源项目可以通过源代码下载或svn checkout获得 我想拥有我自己的项目源代码控制版本。我不打算对(JavaServlet)代码进行太多的更改(如果有的话),但是有一些配置、XML文件、XSL、CSS等,所有这些都涉及到我想要进行源代码控制 我是否应该继续制作自己的本地源代码库?我是否应该尝试只控制需要更改的文

我目前正在测试服务器上安装和配置一个开源项目。我在使用源代码管理方面受过良好的培训,我希望确保我所做的一切都得到正确的管理(对于我,唯一的开发人员/管理员,以及未来的维护人员来说)。开源项目可以通过源代码下载或svn checkout获得

我想拥有我自己的项目源代码控制版本。我不打算对(JavaServlet)代码进行太多的更改(如果有的话),但是有一些配置、XML文件、XSL、CSS等,所有这些都涉及到我想要进行源代码控制


我是否应该继续制作自己的本地源代码库?我是否应该尝试只控制需要更改的文件?在这种情况下,我希望目录结构匹配,这样我就可以直接签出构建目录。

我会签入所有代码,因为即使您不想更改它们,或者现在看不到更改的原因,其他人以后也可能会看到原因。此外,可能存在bug,或者通过简单的重构来提高可维护性或性能等

SVN的基本布局为:

branches/
tags/
trunk/
当然,总目录布局(在这三个目录下)应该与您的应用程序相匹配,这样您就可以立即检查并运行它。但是,您可以通过构建文件等进行轻微修改。。但我想结账就走总是很好的。有关更多信息,或最佳实践的指针,我将查看使用您的技术的其他开源项目

至于配置文件,我不会签入它们。然而,大多数项目签入一个
foo dist
文件,该文件向用户显示所有配置选项。至少,他们需要将
foo dist
复制到
foo
以启用默认配置


另外,你有没有考虑过,或者考虑过项目托管,包括版本控制?这三项服务都免费为您提供一吨的服务,而且免费的条件是您不需要为项目托管服务服务器等等。

对同一目录树进行两次签出是行不通的。如果您签出您的源代码,并尝试签出OSS项目源代码,那么它们共同拥有的任何目录都将失败,表示它已经是另一个项目的工作目录

如果您可以将css、xml、xsl等收集到一个公共目录中,那么您可以将它们放在您自己项目的svn中的一个目录中,然后将它们签出到OSS项目工作目录中的一个目录中

~/Working=>svn://samhoice/project/trunk

~/Working/osscomponent=>svn://osshost/project/latesttag

~/working/osscomponent/config=>svn://samhoice/project/trunk/config

在这种结构中,OSComponent目录不存在于samhoice的svn存储库中。它由安装脚本添加为OSS项目的工作目录根。配置目录没有从OSS项目中签出,并且不存在。配置目录是由安装脚本创建的,配置目录是从项目存储库中签出的

在这个目录结构中,有三个签出。没有递归重叠,因此任何子目录上的svn映射之间都没有冲突

如果您需要在OSS项目的结构中安排配置文件,请使用makefile或配置脚本添加一些符号链接。您也可以在svn客户端中的签出后钩子中执行此操作


我在我的一个项目中使用这样的结构,在两个项目树之间共享一些代码。共享内容位于我为您的配置部分推荐的子树中。

根据第三方项目的大小和定制量,我使用了几种方法:

  • 对于小型或高度定制的项目我将检查整个项目,从库存代码开始。这使得整个项目的工作变得很容易,并提供了“一站式购物”来查看构建它所需的一切

  • 对于大型或轻微定制的项目我将保留一份库存档案(通常是
    .tar.bz2
    .zip
    文件),并确保已备份。然后,我将以某种形式将包含自定义内容的文件置于修订控制之下。这里的选项是

    • 签入(仅)自定义文件本身。如果要修改源代码,这通常是最佳选择

    • 签入执行自定义的脚本。如果脚本向配置实用程序提供输入,这是最有效的,因为您存储的自定义项(输入数据)与库存项(配置实用程序)是分开的。如果发布了第三方库的新版本,通常很容易将您的自定义应用于该库,从而允许进行关键升级

  • 用于“永远不会改变”的项目™,"或客户以合约方式将您绑定到特定版本的,将库存代码存储在某个位置,并在修订控制下创建修补程序文件。然后您可以发布“已批准”版本“带补丁的版本。注意:这是一个相当可怕的选择,因为修补程序文件很难维护——如果您制作了一个新的修补程序,您必须重新创建修补程序文件,或者创建一个应用于第一个修补程序之上的附加修补程序。选择此选项的原因通常不是出于技术原因

我要强调的是,\u您需要记录构建此类项目和添加自定义项的整个过程,或使其自动化,或(最好)两者兼而有之。很容易忘记哪些文件属于哪里、属于谁,重新开始很痛苦。特别是如果你是继承人的话