提问的智慧SVN版 - 提问者必读
发新话题
打印

[已解决] 请问Subversion怎么样让几个库的某些相同目录同步

请问Subversion怎么样让几个库的某些相同目录同步

请问Subversion怎么样一个仓库的下面的某一个文件夹以及某几个文件与另外一个仓库的相同文件同步

TOP

设置svn:externals看看
http://www.iusesvn.com/subversio ... vn-ch-7-sect-3.html
引用:
外部定义

有时候创建一个由多个不同检出得到的工作拷贝是非常有用的,举个例子,你或许希望不同的子目录来自不同的版本库位置,或者是不同的版本库。你可以手工设置这样一个工作拷贝—使用svn checkout来创建这种你需要的嵌套的工作拷贝结构。但是如果这个结构对所有的用户是很重要的,每个用户需要执行同样的检出操作。

很幸运,Subversion提供了外部定义的支持,一个外部定义是一个本地路经到URL的影射—也有可能一个特定的修订版本—一些版本化的资源。在Subversion你可以使用svn:externals属性来定义外部定义,你可以用svn propset或svn propedit(见“为什么需要属性?”一节)创建和修改这个属性。它可以设置到任何版本化的路经,它的值是一个多行的子目录和完全有效的Subversion版本库URL的列表(相对于设置属性的版本化目录)。

$ svn propget svn:externals calc
third-party/sounds             http://sounds.red-bean.com/repos
third-party/skins              http://skins.red-bean.com/repositories/skinproj
third-party/skins/toolkit -r21 http://svn.red-bean.com/repos/skin-maker

svn:externals的方便之处是这个属性设置到版本化的路径后,任何人可以从那个目录取出一个工作拷贝,同样得到外部定义的好处。换句话说,一旦一个人努力来定义这些嵌套的工作拷贝检出,其他任何人不需要再麻烦了—Subversion会在原先的工作拷贝检出之后,也会检出外部工作拷贝。
注意前一个外部定义实例,当有人取出了一个calc目录的工作拷贝,Subversion会继续来取出外部定义的项目。

$ svn checkout http://svn.example.com/repos/calc
A  calc
A  calc/Makefile
A  calc/integer.c
A  calc/button.c
Checked out revision 148.

Fetching external item into calc/third-party/sounds
A  calc/third-party/sounds/ding.ogg
A  calc/third-party/sounds/dong.ogg
A  calc/third-party/sounds/clang.ogg

A  calc/third-party/sounds/bang.ogg
A  calc/third-party/sounds/twang.ogg
Checked out revision 14.

Fetching external item into calc/third-party/skins
[ 本帖最后由 PCplayer 于 2006-9-19 14:50 编辑 ]

TOP

谢谢,已经解决 SVN 果然好用阿

TOP

怎么样让打标的时候 同时 让 取外部的一个固定版本号

本如说 仓库 A http://loaclhost/svn/A


用到 仓库 B http://loaclhost/svn/B
中的 ccc 目录 http://loaclhost/svn/B/ccc,

A 打标版本为 5,此时 B 的 CCC 目录 版本 是 11,
然后 B 的 CCC 目录 版本到 12

但是要 每次取打标版本只取 B 的 CCC 目录 的 11 版本,不取最新的

就是说 给 A 打标的时候自动加上 svn:externals ccc -r 11 http://loaclhost/svn/B/ccc

[ 本帖最后由 teli 于 2006-9-21 11:08 编辑 ]

TOP

基本上明白你的意思了,
就是你想把A库中某一具体版本(通过tags来实现)跟外部B库的具体版本进行关联

你可以有两种方法
1:直接设置 svn:externtals  ccc http://localhost/svn/b/ccc/tags/11
(假设 http://localhost/svn/b/ccc/tags/11 是b库的11版本的一个标签地址)

2:使用-r选项
svn:externtals  ccc -r11  http://localhost/svn/b/ccc

TOP

能够让系统自己设置么,这个不能直接在版本浏览器里面设置啊

TOP

svn系统应该是不能自己设置

另外目前的版本浏览器中确实只能看不能设置,相信以后的版本会改进

TOP

svn:externtals 我可以只对一个版本设置么

就是说除了打标版本取外部的指定某个版本,主线程版本还是要 取最新的,可以么

TOP

回复 #8 teli 的帖子

可以对不同的tags设置不同的svn:externals,以实现特定版本的代码依赖特定版本的外部代码

比如你可以

http://localhost/svn/a/tags/5
设置 svn:externtals  ccc http://localhost/svn/b/ccc/tags/11

http://localhost/svn/a/trunk
设置 svn:externtals  ccc http://localhost/svn/b/ccc

其中 http://localhost/svn/a/tags/5 是对 http://localhost/svn/a/trunk 的版本5所做的一个tag

TOP

发新话题
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件