将SVN回购的部分复制到另一个
问题描述:
有没有可以将特定文件或目录从一个回购站复制到另一个回收站(都是远程的)的任何工具(或者svnsync可以这样做,我认为不可以)?将SVN回购的部分复制到另一个
我想为代码库提供只读仓库,但只提供该库的一个子集,而不是整个项目。
谢谢。
答
如果你不介意弄脏你的手,你可以编写一个脚本来导出私人项目的文件,并将svn-clean-files提交给你的公共项目。
这种方式即使svn在公共项目上的差异可能尽管这不同于原始的svn历史。但那很好,因为它不是有意的。
像这样的cron工作?
#!/bin/bash
EXPDIR=$(mktemp -d /tmp/projectXXXXXX)
svn export --force svn+ssh://[email protected]/repository/project/sub/ $EXPDIR/
svn add $EXPDIR/ svn+ssh://[email protected]/repository/subpart/
cd $EXPDIR/
svn ci -m "update `date`" $EXPDIR/
#cleanup
rm -rf "/tmp/$EXPDIR"
答
虽然@ initall的解决方案是可行的,但您会丢失历史记录信息等。我建议您使用svnsync,正如您建议的那样。
由于1.5 svnsync只能同步源回购的子树,因此我认为这是一个更清洁的解决方案,您可以在每个回购中拥有不同的访问权限。有关详细信息,请参见svn手册中的repository replication部分。
麻烦的是,任何有权访问外部属性的人都可以使用它访问所有源代码回购。我想让源代码保持私有状态(实际上没有能力更改任何用户/权限),但是在第二个回购站中公开提供一个小子集。 – 2010-11-29 12:49:16
@Jack Sleight,如果你不能改变任何权限你想如何限制对只读存储库的访问?我的意思是,即使你找到了解决方案,每个人仍然可以在你的“私人”存储库中更改文件。 – bniwredyc 2010-11-29 13:10:50
我可以在目标/公共/只读仓库上设置权限,而不是在没有公共权限的私人仓库中设置权限。 – 2010-11-29 13:18:27