【发布时间】:2011-06-12 06:18:52
【问题描述】:
我正在使用 svnsync 在两个系统之间同步一个 SVN 存储库,我不能 100% 确定在同步完成后它是否可以独立于我的“新用户”。
我需要做什么才能使其成为一个完全独立的实体?只修改passwd文件就够了吗?
【问题讨论】:
标签: svn repository svnsync
我正在使用 svnsync 在两个系统之间同步一个 SVN 存储库,我不能 100% 确定在同步完成后它是否可以独立于我的“新用户”。
我需要做什么才能使其成为一个完全独立的实体?只修改passwd文件就够了吗?
【问题讨论】:
标签: svn repository svnsync
我需要做什么才能使其成为一个完全独立的实体?
新存储库和原始存储库之间的唯一链接是svnsync synchronize 使用的许多修订属性。您可以像这样安全地删除它们:
svn propdel --revprop -r 0 svn:sync-from-uuid http://svn.example.com
svn propdel --revprop -r 0 svn:sync-last-merged-rev http://svn.example.com
svn propdel --revprop -r 0 svn:sync-from-url http://svn.example.com
除了确保svnsync synchronize 不能再运行之外,这并没有多大作用。
edit:只是想到了别的东西。您可能在项目中使用了svn:externals 属性来指向另一个存储库,或同一存储库中的另一个位置。
一个应该使用relative URL syntax作为同一存储库中的链接,在这种情况下没有问题。但是,如果为此使用了绝对 URL,那么这些链接将在 svnsync 之后继续指向原始存储库。您可以像这样检查所有svn:externals 属性(可能需要一段时间,递归扫描所有文件夹):
svn propget -R svn:externals http://svn.example.com/
【讨论】:
svn:externals 属性吗?
svnadmin dump 整个存储库,搜索并替换 URL,然后在新的 repo 中 svnadmin load)可能仍然是可能的,但这是另一回事。我从未尝试过。
基本上,您需要 apache 配置:
AuthName 引用新的 repo
conf/authz 文件中声明您的新用户。AuthType Basic认证模式)不强制使用不同的密码:一旦两个存储库使用两个不同的地址(在同一个 apache 或两个不同的 'apache' 下)管理,它们将相互独立。
【讨论】: