将SVN仓库的部分复制到另一个

时间:2010-11-29 12:30:07

标签: svn copy sync

是否有任何工具(或者可以svnsync执行此操作,我认为不可以)可以将特定文件或目录从一个仓库复制到另一个仓库(两者都是远程的)?

我想为代码库提供只读repo,但只提供该库的一个子集,而不是整个库。

感谢。

3 个答案:

答案 0 :(得分:1)

我建议您使用externals definitions作为解决方案。为代码库的只读子集创建新的存储库,并将其映射到项目的子文件夹。

答案 1 :(得分:1)

如果你不介意弄脏手,你可以编写一个小脚本来导出私有项目的文件,并将svn-clean-files提交给你的公共项目。

这种方式甚至公共项目上的svn差异可能虽然与原始的svn历史不同。但这很好,因为它不是有意的。

像cron这样的东西?

#!/bin/bash

EXPDIR=$(mktemp -d /tmp/projectXXXXXX)

svn export --force svn+ssh://USERNAME@yourserver/repository/project/sub/ $EXPDIR/
svn add $EXPDIR/ svn+ssh://USERNAME@publicserver/repository/subpart/
cd $EXPDIR/
svn ci -m "update `date`" $EXPDIR/

#cleanup
rm -rf "/tmp/$EXPDIR"

答案 2 :(得分:1)

虽然@ initall的解决方案是可行的,但你会丢失历史信息等。我建议你自己使用svnsync。

由于1.5 svnsync只能同步源repo的子树,因此我认为它是一个更清晰的解决方案,您可以在每个repo上拥有不同的访问权限。有关详细信息,请参阅svn手册中的repository replication部分。