memoryboxes blog

Been here so long got to calling it home.

Freeze Svn:externals for Tags/branch

| Comments

svn的external link在多个项目互相引用时很有用。

但我们想要做tag及branch的时候,需要将external link的文件或目录固定在某个版本。

搜了一下,基本上有几个办法:

使用tortoisesvn>1.7版本,打tag及branch的时候可以固定在某一版本:

¦   http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html


缺点是这样打出来的branch,checkout下来后,svn up还是回到最新的版本。

使用一个perl脚本,可以在打branch的时候把extern link一起拷贝到branch底下,这样相当于是建立了一个新的external link拷贝,修改branch不会影响到trunk

¦   https://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svncopy/


缺点是这样打出来的branch底下会多出来external link的拷贝,不完美。

有人开发了工具, C#的,但我在win7下面打branch的时候会报错

¦   http://svnxf.codeplex.com/

原先以为这样的事情总该有个simple的解决办法的,但还真是没找到,自己实际写个脚本想做这个事情才发现不简单。想要做这件事的前提是要把代码check到本地来,这样就不如直接调命令了,如果远程操作svn库,就需要三方开发。

最后简单的办法是:

如果是打tag,采用方法一,用tortoisesvn固定在一个版本

如果是打branch,先用tortoisesvn 固定在一个版本,再把branch分支checkout下来,用命令 svn propedit svn:externals .取消external link,再重新加入版本库,最后提交。

参考:

http://stackoverflow.com/questions/1982538/how-to-have-tortoisesvn-always-freeze-svnexternals-for-tags

Comments