Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同步SVN存储库,然后使其独立(复制存储库)_Svn_Repository_Svnsync - Fatal编程技术网

同步SVN存储库,然后使其独立(复制存储库)

同步SVN存储库,然后使其独立(复制存储库),svn,repository,svnsync,Svn,Repository,Svnsync,我正在使用svnsync在两个系统之间同步一个SVN存储库,我不能100%确定在同步完成后是否可以使它独立于我的“新用户” 我需要做什么才能使它成为一个完全独立的实体?仅仅更改passwd文件就足够了吗?基本上,您需要apache配置来: 使用不同的URL和不同的AuthName 在所述新回购协议的conf/authz文件中声明您的新用户 声明其密码(如果您使用的是:q!AuthType Basicauthentication模式) 使用不同的密码不是强制性的:一旦两个存储库使用两个不同的地

我正在使用svnsync在两个系统之间同步一个SVN存储库,我不能100%确定在同步完成后是否可以使它独立于我的“新用户”


我需要做什么才能使它成为一个完全独立的实体?仅仅更改passwd文件就足够了吗?

基本上,您需要apache配置来:

  • 使用不同的URL和不同的
    AuthName
  • 在所述新回购协议的
    conf/authz
    文件中声明您的新用户
  • 声明其密码(如果您使用的是:q!
    AuthType Basic
    authentication模式)
使用不同的密码不是强制性的:一旦两个存储库使用两个不同的地址(在同一个apache或两个不同的“apache”下)进行管理,它们将彼此独立

我需要做什么才能使它成为一个完全独立的实体

新存储库和原始存储库之间的唯一链接是由
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
之外,这没有什么作用

编辑:想想别的。您可能在项目中使用了
svn:externals
属性来指向另一个存储库或同一存储库中的另一个位置

应该在同一存储库中使用for链接,在这种情况下没有问题。但如果使用了绝对URL,则此类链接将在
svnsync
之后继续指向原始存储库。您可以像这样检查所有
svn:externals
属性(可能需要一段时间,递归扫描所有文件夹):


我认为源代码使用的是Apache类型设置,而目标代码使用的是SSH上的svnserve(根据@matt74m):因此身份验证机制和地址也会有所不同。这两个回购协议将是相当独立的(除非您需要定期重新同步它们),但您知道如何更正现有修订版上的
svn:externals
属性吗?@STATUS\u ACCESS\u DENIED:svn中缺少一种简单地为现有修订版重新映射externals()的方法。通过重写历史记录(
svnadmin dump
整个存储库,搜索并替换URL,然后在新的repo中
svnadmin load
),这仍然是可能的,但这完全是另一回事。使svn:externals独立于对存储库位置的更改的一个好方法是使用“^/./REPO-NAME”引用。这意味着“无论此存储库位于哪个父路径上,请使用REPO-NAME”。因此,如果将来您更改存储库中相互链接的主机、路径或协议,它们将在更改前后继续工作,直到您开始使用此技术。
svn propget -R svn:externals http://svn.example.com/