2010-09-20 51 views
3

我在努力理清什么是在项目针对框架编写项目时将项目置于源代码管理下的最佳实践。在我的情况下,我将使用Mercurial进行源代码管理。我应该如何为基于框架的项目组织源代码管理?

大多数PHP框架都有在那里我应该把我的代码与框架进行交互的“应用程序”文件夹中。那么最好是将应用程序文件夹放到它自己的存储库中,然后为框架文件另存一个存储库?或者,把包括框架在内的所有东西放到一个存储库中会更好吗?

我希望能够有一个体面的灵活性,即我希望能够交换出我用于实验的框架的版本,同时仍然能够发布使用稳定的版本。

我有两个Kohana的和Zend框架框架方面的经验,所以如果你可以用这些作为参考,这将是梦幻般的。

回答

3

那么我不使用Mecrucial但也许我的典型设置了Subversion会申请后,你把它翻译:)我不使用本地集中安装。我发现,在给定框架的快速发布周期的情况下,我经常使用每个应用程序的特定版本。所以我总是将它们嵌入到一个项目中。

对于Zend公司:

svn/path/ 
    trunk/ 
    application/ 
    library/ 
     Zend/ 
     MyNamespace/ 
    public/ 
    data/ 

我使用svn:external我要的框架的版本....例如:http://framework.zend.com/svn/framework/standard/tags/release-1.10.5/library/Zend

为symfony1.2其大部分使用的外部两者相同Symfony和任何插件。所不同的是symfony这样和Zend库,我会把在供应商目录,而不是直接在lib

svn/path/ 
    trunk/ 
    apps 
    lib/ 
     vendor/ 
     Zend/ 
     symfony/ 
    plugins/ 
    web/ 
    config/ 
    data/ 
    cache/ 
    log/ 
+0

+1的外部是要走的路,虽然我不知道什么汞提供了这方面。如果没有模拟,OP可以忽略框架内容,并在README中记下关于安装框架的位置。 – timdev 2010-09-20 01:39:38

+0

你还应该使用[composer](https://getcomposer.org/),它不需要使用svn:externals或者hg analog。 – prodigitalson 2015-07-16 17:35:58

1

假设SVN有这个所谓的svn漂亮的功能:忽略在那里你可以标记文件/文件夹的文件/文件夹或设置为'忽略”。

这使您可以将应该版本化的文件与不应该的文件混合;所以它对于库(以及框架)非常有用:仅对您自己的源代码进行版本化,并将其余的(生成的文件,库)标记为忽略。

可能添加哪些文档库应该安装什么自述,以及如何使用时,其他人使用你的代码,或当你想安装另一台机器上拷贝的工作环境。

注意,几乎任何其他版本控制系统往往有一个'忽略”功能,它不是具体到SVN。

0

非常相似,SVN,汞使用<root>/.hgignore忽略文件/目录(记得.hgignore自身添加为条目)。

我对任何一个框架都没有经验,但我想不出你想跟踪框架和应用程序代码的场景,因为它们肯定会以不同的速度进步。无论如何,框架代码应该有自己的版本控制。

2

在我使用git的Kohana项目中,我将整个项目设置为一个存储库。这包括应用程序文件夹以及模块和系统。系统文件夹是一个指向Kohana最新马厩的子模块。这些模块可以是repo中的普通文件,也可以是子模块。我也有一个public_html文件的文件夹。

你可以看到有一家公司就设立在这里:http://github.com/synapsestudios/kohana-projecttemplate

的发展空间,可以让你的项目的一个新的分支,并检查出你需要测试的系统或模块文件为准版本。

相关问题