我看了this post,准备使用--force-uuid
。
然而,我的程序员建议我也可以在我的服务器上进行新的结账,以防万一Assembla和现有的TortoiseSVN格式不一样(转到Assembla,让我们新鲜/干净)。
我并不完全相同,因为我最初并没有自己设置SVN,也不熟悉服务器/ SVN管理。
迫使UUID匹配是否存在任何可能的损害或风险?
非常感谢任何方向。
答案 0 :(得分:1)
让我们从 服务器 中分离 客户端 ...
我假设Assembla是存储库的位置。这是您的Subversion 服务器 。
TortoiseSVN是您用于从服务器检出软件的软件。这是您的 客户 。
首先,我们来谈谈 服务器 。
服务器上的每个Subversion存储库都有一个所谓的通用唯一标识符(UUID)。这是在创建Subversion存储库时创建的。 Subversion如何生成UUID,并且知道整个世界的Subversion存储库中没有其他人不共享这个UUID?它确实没有,但是不太可能有另一个带UUID的Subversion存储库。根据时间,IP地址和MAC地址以及一些伪随机值,UUID为generated。
由于UUID保证对于整个世界中的任何Subversion存储库都是唯一的,因此您的Subversion客户端可以使用它来确保它与您从原始结账时所使用的存储库进行通信。
当您将Subversion存储库从一个位置移动到另一个位置时,您必须创建一个新的Subversion存储库,您可以在其中加载数据。由于这与以前的存储库实际上是相同的,因此Subversion加载命令允许您将新的Subversion存储库的UUID重置为与旧版本相同。
请注意这已完成:
这不是由您的客户端软件完成的,因为这是问题的 服务器端 。
现在,我们将讨论您的Subversion 客户端 ,在本例中为TortoiseSVN
当Subversion客户端签出工作目录时,它会跟踪您执行签出的URL以及该存储库的UUID。
让我们看一下使用TortoiseSVN的工作目录。右键单击Subversion checkout文件夹,然后选择下拉上下文菜单底部的 Properties 。 不要进入TortoiseSVN子菜单!从上下文菜单底部选择属性菜单项。
单击 Subversion 选项卡。你会看到几条信息。其中两个是结帐发生的URL,以及存储库的UUID。
右键单击结帐文件夹并执行TortoiseSVN->重新定位时,您可以更改结帐发生的URL。但是,您无法更改该结帐的UUID。
那是因为您的Subversion客户端正在使用它来确保即使您已将Subversion存储库移动到新服务器,也要与同一存储库进行通信。
如果您移动了存储库,但是没有确保UUID是相同的,您可以做什么?以下是从最佳到最差的几种解决方案。
--force-uuid
标记。.svn\entries
文件中。如果您使用的是基于Subversion 1.7的客户端,则所有投注均已关闭。我相信UUID可能是加密的。这可能有效,但是如果您尝试提交更改,它可能会创建一个损坏的检出项,最终会损坏主存储库。