我们这里有一个项目,分为两个。一个用于内部,一个用于外部。
两个版本之间的区别是单个xml文件和几个css文件。
有许多共享代码可以运行应用程序。共享代码还包含与上述文件夹相同的css文件。
所以我可能会说两个名为common.css和site.css的css文件。 Common.css是一个共享的css文件,site.css在两个版本之间有所不同。
我不想为每个版本创建一个SVN repo,因为两者之间的差异只是几个文件。
理想情况下,我希望在SVN中有一个包含“常用”代码的文件夹,然后是一个包含每个版本的特定文件的文件夹。
有没有人知道如何在SVN中执行此操作,以便我可以查看公共文件夹,然后查看版本文件夹?
答案 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属性。然后,当您检出任一目录时,您将获得树中公共代码目录的副本。更改的代码也可以提交回存储库。