2

我们使用 TortoiseSVN GUI 进行日常的修订控制活动。

我正在尝试设置 CruiseControl.Net,连接到 Linux 机器上的 SVN 存储库。什么样的恶梦!容我们说,在 Windows 上获取 svn 命令行以连接到 SVN Linux 服务器是“具有挑战性的”。现在一切正常,耶。从我的 Windows 命令提示符中,我可以键入

svn co svn+ssh://user@server/repos/QTSS 

它会将 QTSS 存储库复制到我的 Windows 机器上。因此,使用上面的“svn co”命令,我对将用作 CCNet 工作文件夹的位置进行了完整的检查: C:\users\build\repos\QTSS

在 repos/QTSS/trunk 文件夹下,我们有许多子文件夹,每个子文件夹都有自己的 VS2010 解决方案源文件。为了开始使用 CCNet,我为其中一个名为 SparsePointSurface 的子文件夹配置了一个 CCNet 项目;最终,我将为每个子文件夹创建一个 CCNet 项目。当 CCNet 运行时,它给出了错误:

Source control operation failed: svn: E155000: 'C:\Users\build\repos\QTSS\trunk\SparsePointSurface' is already a working copy for a different URL

在 Windows 命令提示符窗口中,我 cd 到该文件夹​​并输入

svn checkout svn+ssh://user@server/repos/QTSS/trunk/ C:\Users\build\repos\QTSS\trunk\SparsePointSurface --no-auth-cache --non-interactive

这与 CCNet 发出的命令相同。果然,我在命令提示符下得到了与 CCNet 中发生的相同的错误。所以这是 SVN 的问题,而不是 CCNet 的问题。

这个 SVN 错误到底是什么意思,我该如何解决?尽管进行了很多谷歌搜索,但我还没有找到一个很好的解释这个错误的原因和解决方案。大多数情况下出现的是 svn switch/merge 操作的问题,但这不是我想要做的。

请注意,在 TortoiseSVN GUI 中,我可以在文件资源管理器中右键单击 SparsePointSurface,选择“SVN Checkout”,它工作正常。

4

2 回答 2

1

好的,我终于找到了解决方案。在我的 ccnet.config 中,我的项目、svn 控制块和 msbuild 任务都指向“C:\Users\build\repos\QTSS\trunk\SparsePointSurface”。我将项目的 WD 和 svn 控制块更改为 'C:\Users\build\repos\QTSS\trunk\',这是 .svn 文件夹所在的位置。我把 msbuild 任务的 WD 留到了 .sln 文件的具体位置。终于在CCNet下搭建成功。哇!谢谢克里斯亨利;你的评论让我走上了修复之路。

于 2013-03-27T16:35:04.220 回答
0

有什么理由每次都检查吗?

该错误通常意味着您正在尝试将 SVN 存储库检出到似乎已在 SVN 控制下的文件夹中。您可以通过查找 .svn 文件夹来判断文件夹是否受 SVN 控制,至少在早期版本的 SVN 中是这样。

在我看来,您应该在 Cruise Control 中进行更新,而不是完整的结帐。或者,您可以每次都进行完整签出,但您需要删除当前存在的所有文件。

于 2013-03-24T22:37:28.257 回答