2013-03-15 93 views
0

我有两个回购站,一个有设置和安装脚本,它们可以配置项目中的各种事物。第二个回购是项目本身。SVN包含并忽略另一个存储库

的安装脚本需要被安置的项目中,但我不希望他们致力于项目。

我通常通过svn-ignore忽略安装脚本,然后手动将脚本复制到项目中,以便它们可以执行。

这种麻烦的是,脚本可能会随时间而改变,我想保持他们都跟上时代的。

我正在寻找一种方法来检查安装脚本到项目工作目录中,同时忽略它们。

这样我就可以在每个项目中保持最新的安装脚本,但同时不会将它们包含在任何导出或部署中。

有什么办法可以达到这个目的吗?

+0

我试过结合svn外部和svn忽略属性,但这并没有奏效。我想出的解决方案是象征性地将脚本工作目录链接到项目工作目录中的文件夹中。然后,我使用svn-ignore属性将该文件夹保留在项目提交之外。我仍然可以修改脚本并将它们提交回自己的存储库。到目前为止,这个解决方案工作得很好 – pfwd 2013-03-15 17:35:53

+0

为什么你不想把它们放在同一个存储库中?听起来他们应该是 - 你不必担心让他们保持最新状态。 – thekbb 2013-03-15 21:59:23

+0

这两个存储库是分开的,因为我们不想在任何生产服务器上部署bash + php脚本。其中一个脚本通过删除和重新创建数据库来配置本地环境。它还通过设置svn ignore和external properties来重新配置当前项目工作目录。在此之后,它将构建一个作曲家模式并填充供应商目录(它刚刚添加)。本质上它是一套用于构建和更新本地开发环境的脚本。一旦项目准备就绪,我就可以使用Capistrano来部署该项目。 – pfwd 2013-03-15 22:47:08

回答

0

你能举一个脚本和项目的URL的例子吗?它会帮助我们想出一些东西。

关闭我的头顶,我要说的是,你的任何构建脚本,你正在使用应该照顾复制在设置脚本(通过svn export)到你的工作目录。你在什么语言编程?

而且,看看我的pre-commit hooksvn:ignore仅适用于当前目录,性质为咨询。它不会阻止某人提交这些文件,并且如果这些文件已提交,svn:ignore什么也不做。我的预提交钩子允许你阻止某人提交整个目录树。

假设你的Subversion版本库是这样布局的:http://svnserver/svn/trunk/myproject。您直接在项目根目录下的dist目录下构建项目。因此,您不希望用户添加http://svnserver/svn/trunk/myproject/dist目录或其下的任何子目录。

用我的pre-commit钩子,你可以设置你的控制文件,如下所示:

[file You can't add files into the in the build area of your project.] 
file=/*/*/dist/** 
access=read-only 
[email protected] 

现在,用户将不能够在dist目录添加myproject目录下,或者任何子目录或文件下。

如果我明白你想要什么,这应该有所帮助。

+0

回购被构造像'/ svnserver/projectN/trunk''/ svnserver /脚本/ trunk'项目共享其通过SVN-的外部管理的核心代码基(另一回购)。它位于'projectN/trunk/core'文件夹中。每个项目都有自己的repo,并且任何特定于该项目的代码都被添加到src,assets或config文件夹中。为了创建一个vanilla开发环境,我创建了一个空白的repo,将build脚本添加到'projectN/trunk/scripts/install'并运行它们。我需要保持Capistrano隐藏的安装文件夹,但同时保持安装文件夹是最新的。 – pfwd 2013-03-15 23:18:11

0

作为一个解决方案,我修改了安装脚本中的路径,并添加了一些提示,询问 问题,例如项目的位置。

数据库脚本仍然保留在项目回购中,但运行这些脚本的脚本没有。

伊夫基本脱钩项目的安装脚本,我现在可以运行该项目的安装外。

当安装运行时,它所做的第一件事是扫描项目文件夹并提示我进行项目选择。