2011-12-21 32 views
5

由于一些教育方面的原因,我前段时间开始创建自己的图书馆。它起初是一个带有一些可用类的简单库,但由于它每天都在增长,而且我已经在一些项目中使用过它,所以无法跟踪这些变化,因为我没有使用它SVN。什么是从实际项目中保存图书馆的最佳做法

现在我已经开始使用SVN了我想将库和项目添加到不同的SVN存储库。每个项目一个(因为图书馆也是一个项目)。

将我的图书馆从项目中分离出来的最佳做法是什么?每个项目都有一个目录,其中包含所有类型的库。 所以什么我的最佳做法如下:

  • 我可以添加/库/框架/目录,并将其设置在项目SVN忽略,然后签出库在该目录中(这是甚至可能吗? )
    • 专业:每个项目都有自己的框架,如果框架可能改变它不会破坏项目中的任何代码。
    • con:如果我有100个项目,他们都需要重要的更新(安全明智),我必须手动更新所有这些项目。
  • 我也可以在某个服务器上签出库,并在项目SVN忽略它之后符号链接/库/框架/目录。
    • 专业版:一次更新将修复所有项目以防重大更新。
    • 精读:正如上面说:一个更新将修复/更改所有项目...
    • 精读:如果有什么项目需要设置到另一台服务器(不是我...)

任何有什么想法?

回答

3

我通常为此使用svn externals。所以我会在项目中创建库目录,然后为单独的库和组件添加外部定义。

这不一定解决您更新多个项目的问题,但IMO认为这是一个可以通过自动化处理的单独问题,并且在我们正在讨论组织/版本控制/开发时不会发挥作用。

+0

请这么说,如果我不明白,而是这是真的,在我的项目目录的svn更新命令将不会更新SVN外部? 刚才我问了一下,我以为我的-interfaces-不会在同一个主版本中更改,如果我真的需要更改一个-interface-我也可以为这些项目设置特定的标记/分支由于他们的要求,仍然需要相同的界面。 – Niels 2011-12-21 17:59:25

+2

默认情况下它会更新外部。因此,根据您的开发方法以及您如何组织外部项目,您可能希望将某些东西固定到特定标签或保证维护BC的分支。尽管你可以在更新命令中使用'--ignore-externals'标志,但它不会获得最新版本。 – prodigitalson 2011-12-21 18:02:21

1

其实我前一阵子也是一样的。

我通过.htaccess文件解决它(我使用Apache-2作为Web服务器[1]),可以 指定类似

php_value include_path /absolute/path/to/libraries:/absolute/path/to/my/project:/lib/3rd_party 

等,这是非常伟大的有你的图书馆在不同的git/svn签出。

[1] http://httpd.apache.org/docs/2.0/howto/htaccess.html

+0

我知道你的解决方案,我有时使用它,但在php的界限内使用'set_include_dir'函数,但我主要关心的是多个服务器。如果您有5台不同的服务器,您是否需要在所有服务器上进行结账?在这种情况下,您仍然需要更新任何库更新中的每台服务器,这比更新所有项目更新少得多... – Niels 2011-12-21 18:06:29

相关问题