2

对于一些简单的 Windows 批处理脚本,我想在某个版本的 svn 存储库的本地工作副本中临时创建某个文件夹的副本。我不想直接从 svn 服务器结帐(因为我的脚本需要知道服务器地址是什么,并且可能需要进行身份验证等)而且我不能只复制子文件夹,因为隐藏的 .svn 文件夹更高。

我一直在尝试一些变体(使用repo包含.svn隐藏文件夹的文件夹):

svn co file:///E:/repo/paper@48 E:/temprepo

但这不起作用。我的 Windows 7 命令提示符回答为

svn: E180001: Unable to connect to a repository at URL 'file:///E:/repo/paper'
svn: E180001: Unable to open an ra_local session to URL
svn: E180001: Unable to open repository 'file:///E:/repo/paper'

我做错了什么,或者我正在尝试的事情是不可能的?

4

2 回答 2

2

你的问题似乎有点模棱两可。我可以想到两种看待这个问题的方法。

  1. 假设您只想要 svn 工作副本中的子文件夹副本,而没有 .svn 文件夹。您可以使用svn export像这样复制工作副本的给定子文件夹 - svn export E:\repo\paper E:\temprepo

  2. 引用:

    而且我不能只复制子文件夹,因为隐藏的 .svn 文件夹更高。

    编辑:此文件结构仅在 subversion v 1.7 中可用。在具有 1.6.x 版本的 subversion 客户端中,工作副本中的子文件夹应该是独立的。这意味着您可以将其复制到另一个地方,并svn update在其中进行诸如此类的颠覆操作。

于 2012-06-27T14:45:36.583 回答
1

正如您在问题中正确提到的那样,您拥有 subversion 存储库的工作副本,而不是它自己的存储库。

您只能签出恰好是您的颠覆服务器的存储库。

当您签出存储库时,存储库内容的原始版本位于“.svn”文件夹中。

当您的工作副本与原始内容不同时,这就是 svn 向您显示差异的方式,而无需将其请求路由到服务器。

它还保留您的服务器地址的元数据和您在执行时可以看到的其他信息svn info。这还包含您的服务器地址作为 svn url。

您的工作副本和“.svn”文件夹完全识别出它所在的存储库。

我希望你明白为什么你不能从你自己的工作副本中签出。

于 2012-06-27T16:24:32.183 回答