SVN共享结帐文件夹

时间:2011-02-07 00:53:52

标签: svn

我们这里有一个项目,分为两个。一个用于内部,一个用于外部。

两个版本之间的区别是单个xml文件和几个css文件。

有许多共享代码可以运行应用程序。共享代码还包含与上述文件夹相同的css文件。

所以我可能会说两个名为common.css和site.css的css文件。 Common.css是一个共享的css文件,site.css在两个版本之间有所不同。

我不想为每个版本创建一个SVN repo,因为两者之间的差异只是几个文件。

理想情况下,我希望在SVN中有一个包含“常用”代码的文件夹,然后是一个包含每个版本的特定文件的文件夹。

有没有人知道如何在SVN中执行此操作,以便我可以查看公共文件夹,然后查看版本文件夹?

2 个答案:

答案 0 :(得分:3)

使用共享代码创建一个公共存储库,然后从中创建两个SVN分支,其中包含特定文件。

当然,永远不要将这些分支的特定文件合并到公共存储库。

在客户端,使用svn开关处理相关部分。您还可以仅切换包含特定文件的特定文件夹,以便您可以在公共存储库和特定分支上同时工作(无需将分支中的公共代码合并到主干)。

mkdir myproject/common/
vim myproject/common/common_file.html
mkdir myproject/common/css
svn import myproject svn://here/myproject

mkdir myproject/external myproject/internal
svn add myproject/external myproject/internal
svn copy myproject/common/css myproject/external/
svn copy myproject/common/css myproject/internal/
svn ci -m "Created external & internal css sub-branches"

mv external.css specific.css files.css myproject/external/css/
mv internal.css specific.css files.css myproject/internal/css/
svn add myproject/external/css
svn add myproject/internal/css
svn ci myproject/external/css myproject/internal/css -m "Added external & internal specific files"

在其他地方,为了处理内部项目,例如:

svn checkout svn://here/myproject/common/ .
svn switch ./css svn://here/myproject/internal/css
vim ./common_file.html
svn ci -m"I'm an internal user and I worked on a common file"
vim ./css/files.css
svn ci -m"I worked on the specific file files.css of the internal branch"

答案 1 :(得分:1)

如果我明白你要做什么,那么svn:externals属性在这里会有所帮助。

我经常使用它来管理共享一个共同代码子集的多个应用程序。

将公共代码放在自己的目录中,然后将xml和css文件的每个版本(内部amnd外部)放在单独的目录中。

在每个xml和css目录中,添加一个指向公共目录的svn:externals属性。然后,当您检出任一目录时,您将获得树中公共代码目录的副本。更改的代码也可以提交回存储库。