我正在努力解决在项目针对框架编写时将项目置于源代码控制之下的最佳实践。在我的情况下,我将使用Mercurial进行源代码控制。
大多数PHP框架都有一个'application'文件夹,我应该把我的代码放在与框架交互的地方。那么最好将应用程序文件夹放入它自己的存储库中,然后为框架文件建立另一个存储库吗?或者将包括框架在内的所有内容放到单个存储库中会更好吗?
我希望能够拥有相当大的灵活性,即我希望能够替换我用于实验的框架版本,同时仍然能够使用稳定版本发布更改版本
我对Kohana和Zend Framework框架都有经验,所以如果你可以使用那些作为很棒的参考文献。
答案 0 :(得分: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
对于Symfony来说,使用symfony和任何插件的外部都是一样的。不同的是像symfony和Zend这样的库我会放在供应商目录中,而不是直接放在lib
中:
svn/path/
trunk/
apps
lib/
vendor/
Zend/
symfony/
plugins/
web/
config/
data/
cache/
log/
答案 1 :(得分:2)
在我使用git的Kohana项目中,我将整个项目设置为存储库。这包括应用程序文件夹以及模块和系统。系统文件夹是一个子模块,指向Kohana的最新稳定版。模块可以是repo中的普通文件,也可以是子模块。我还有一个public_html文件的文件夹。
您可以在此处查看一家公司如何设置它:http://github.com/synapsestudios/kohana-projecttemplate
对于开发,您可以创建项目的新分支,并检查您需要测试的系统或模块文件的任何版本。
答案 2 :(得分:1)
假设SVN有一个叫做svn的漂亮功能:忽略你可以将文件/文件夹或文件/文件夹标记为“忽略”的地方。
这允许您将应该版本化的文件与不应该版本化的文件混合在一起;因此它对库(以及框架)非常有用:只显示您自己的源代码并将其余部分(生成的文件,库)标记为忽略。
可能添加一个自述文件,其中包含应安装的库以及其他人使用您的代码时的使用方式,或者您希望在另一台计算机上设置复制工作环境时。
请注意,几乎任何其他版本控制系统都倾向于具有“忽略”功能,它并非特定于SVN。
答案 3 :(得分:0)
与svn非常相似,hg使用<root>/.hgignore
忽略文件/目录(记得将.hgignore本身添加为条目)。
我对这两种框架都没有经验,但我想不出你想要一起跟踪框架和应用程序代码的情况,因为它们肯定会以不同的速度发展。无论如何,框架代码应该有自己的版本控制。