代码之家  ›  专栏  ›  技术社区  ›  geocoin

我应该如何组织基于框架的项目的源代码管理?

  •  3
  • geocoin  · 技术社区  · 14 年前

    我正在努力找出当项目是根据框架编写的时,将项目置于源代码管理下的最佳实践是什么。在我的情况下,我将使用mercurial进行源代码控制。

    大多数PHP框架都有一个“应用程序”文件夹,我应该在其中放置与框架交互的代码。那么,最好将应用程序文件夹放入自己的存储库中,然后再为框架文件建立另一个存储库吗?还是将所有东西(包括框架)放在一个单独的存储库中更好?

    我希望能够有相当大的灵活性,也就是说,我希望能够在使用稳定版本发布更改的同时,替换正在用于实验的框架版本。

    我在Kohana和Zend框架框架方面都有经验,所以如果您可以将它们用作参考,那就太棒了。

    4 回复  |  直到 14 年前
        1
  •  3
  •   prodigitalson    14 年前

    好吧,我不使用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来说,使用externals对symfony和任何插件都是一样的。不同的是,像symfony和zend这样的库我将放在供应商目录中,而不是直接放在 lib :

    svn/path/
      trunk/
        apps
        lib/
          vendor/
            Zend/  
            symfony/
        plugins/
        web/
        config/
        data/
        cache/
        log/
    
        2
  •  2
  •   slacker    14 年前

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

    您可以在这里看到一家公司是如何建立的: http://github.com/synapsestudios/kohana-projecttemplate

    对于开发,您可以在项目中创建一个新的分支,并检查需要测试的系统或模块文件的哪个版本。

        3
  •  1
  •   user268396    14 年前

    假设SVN有一个称为SVN的漂亮特性:忽略可以将文件/文件夹或文件/文件夹集标记为“忽略”的位置。

    这允许您将应该进行版本控制的文件与不应该进行版本控制的文件混合在一起;因此,它对库(以及框架)非常有用:只对自己的源代码进行版本控制,并将其余(生成的文件、库)标记为忽略。

    可能添加一个自述文件,其中记录了应该安装什么libs以及当其他人使用您的代码时如何使用,或者当您希望在另一台计算机上设置复制工作环境时如何使用。

    请注意,几乎所有其他版本控制系统都有一个“忽略”特性,它不是特定于SVN的。

        4
  •  0
  •   Geoffrey Zheng    14 年前

    与SVN非常相似,Hg使用 <root>/.hgignore 忽略文件/目录(记住将.hgignore本身添加为条目)。

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