项目是通过SVN进行版本控制的。
比如有项目A,项目B,在SVN中存储的路径不同,本地硬盘存储也是独立的。
因为有些功能是相同的,现想在A项目中部分文件使用B项目中的文件,也可能是文件夹。
SVN可以实现该功能吗?应如何操作?
换一种说法,将公共的部分,是页面,很多页面,当然也有文件夹,比如系统管理,单独拿出来作为共享,其他系统可以使用并修改系统管理这个模块。但要求做的修改,其他系统能方便同步,如果使用SVN执行一个更新命令就行,而不是文件夹之间的复制、替换操作,个系统之间不是独立的。
使用svn:externals
这样设置就ok了.
谢谢。高端,我先试试。这个属性好像不能用于单个文件上,只可以在文件夹上使用
是单独的文件吗?
有单独的文件,也有整个文件夹
@lucika.zh: 我不明白这个跟SVN有什么关系.
@晓菜鸟: 项目是通过SVN管理的,想把其中某些功能单独拿出来,作为一个单独的项目A。以后所有的项目都会使用项目A的代码,总不能每个项目都单独做一个copy吧,如果几十个项目同步起来非常困难。
@lucika.zh: 是.Net吗?如果是的话可以添加引用啊,或者直接异步请求项目A里面的类的方法.
@晓菜鸟: 是文件,很多文件,页面,比如系统管理等模块,可能全部公司系统的系统管理模块都是一样的,公司有50个客户,由于系统直接有差异,对应有50个系统。怎么做到系统管理模块统一呢?我在一个系统中更改了,别的系统不需更改,只需执行一个SVN命令,而不是本地复制命令。
你就放在不同的目录,然后用链接的方式,添加项目到解决方案就行了吧。和svn没多大关系吧。
这是一个方法,感觉应该可行。但是项目组成员文件的存放位置完全不同,项目必然有冲突,能不能用SVN的方式解决
@lucika.zh: 同一个项目,就一份代码,不会冲突的!
@幻天芒: 无法做到自动同步。
@晓菜鸟: 是文件,很多文件,页面,比如系统管理等模块,可能全部公司系统的系统管理模块都是一样的,公司有50个客户,由于系统直接有差异,对应有50个系统。怎么做到系统管理模块统一呢?我在一个系统中更改了,别的系统不需更改,只需执行一个SVN命令,而不是本地复制命令。
感谢提提供思路。
@lucika.zh: 明白了.容我好好的想一想.
@晓菜鸟: 按照你说的有点像SVN的分支了。共同的更新,合入主干,然后,每个系统,有各自的分支。
给举个例子解释下,“但是项目组成员文件的存放位置完全不同,项目必然有冲突”。
有什么其他的方案?
@lucika.zh: 二楼说的方式这样的,项目中添加文件的时候,使用引用,这样不会将文件复制到当前项目目录,而只是引用某个位置的文件。当修改此文件后,通过 SVN Commit 更新到服务器,其它开发机器通过 SVN Update 从服务器将新的文件更新到本地。这个步骤我没看出有什么问题,所以我请你举个例子说明你担心的“项目必然冲突”。
@Launcher: 怎么添加页面引用?如果直接添加页面,会直接复制到项目目录中。如果添加DLL引用,而DLL文件不在项目中,引用的时候会地址会显示为绝对地址,即DLL文件的所在文件,比如d:\DLL\。而别的同事不在这个位置。项目文件会由于引用位置不同一直被修改。
@Launcher: 学到一点。谢谢提供具体方法。
如A、B同属一个版本库应当问题不大,在本地工作目录实施应当问题不到。另外,有需要SVN支持NTFS扩展属性的,可参考:
http://blog.csdn.net/zzkjliu/article/details/17489547
A、B不属于同一版本库。但绝大部分是一样的,是从同一版本库中分离出来,然后进行了个性化定制。
@lucika.zh:试试分支合并