一、svn如何实现两个目录之间的共享呢?
如下图:假设项目project1的构成需要用到project2的一个模块代码:project2/trunk/zhanghao/publicCode,如何简单地为project1提供这个组成模块,而不需要每个开发员都单独从project2中check out到自己的工作目录呢?
________________repos/_____________
| |
project1/ project2/
|---trunk |--trunk
|--zhanghao <┈┈┈┈┈┈┐ |--zhanghao
|--mycode └┈┈┈ |--accessdata
|---tags |---include
|---branches |--deletedata
二、利用svn的属性svn:externals可简单实现共享效果。
我们检出project1,并设置trunk的svn:externals属性:
svn co http://www.scmbbs.com/repos/project1;
cd project1/trunk;
svn propset svn:externals "accessdata http://www.scmbbs.com/repos/project2/trunk/accessdata"; zhanghao;
请注意:属性值"accessdata http://www.scmbbs.com/repos/project2/trunk/accessdata"由两个字段组成,第一个字段“accessdata”表示check out到本地时新文件夹名字,第二个字段URL指向要引用的源头地。如果漏设了一个字段,属性设置将会失败。
属性设置完毕后,我们再来检出project1,发现trunk/zhanghao下多出了一个文件夹:accessdata,打开检查里面的内容,发现正是project2/trunk/zhanghao/accessdata里的内容。
另外,你可以对同一个目录设置多个svn:externals属性,以便在此目录下获得多个共享组件。如:
svn propset svn:externals "accessdata http://www.scmbbs.com/repos/project2/trunk/accessdata"; zhanghao;
svn propset svn:externals "deletedata http://www.scmbbs.com/repos/project2/trunk/deletedata"; zhanghao;
这两条命令对project1/trunk/zhanghao目录设置了2个共享文件夹accessdata、deletedata。
更新project1/trunk/zhanghao时,文件夹结构如下:
project1/
|--trunk
|--zhanghao
|--accessdata
|--deletedata
如果你对project2/trunk/zhanghao/acessdata文件夹有修改权限,则对project1下的acessdata的修改也会提交到project2中,实现真正的共享。
svn实现文件/目录共享
最新推荐文章于 2023-01-22 17:01:38 发布