gpt4 book ai didi

svn - 如何在没有完整根 checkout 的情况下在我的工作目录中镜像 SVN 存储库目录结构?

转载 作者:行者123 更新时间:2023-12-01 23:08:13 28 4
gpt4 key购买 nike

首先,几个操作参数:

  • 使用 Visual Studio 2005/2008 进行 .NET 开发
  • TortoiseSVN 客户端

我主要只使用过 Visual Source Safe 和 SourceGear Vault 源代码控制系统。在每个中,我将存储库的根映射到本地工作目录。例如:

$/  -->  C:\source

只要本地目录存在,我就已经设置了“工作副本”(svn) 或“工作文件夹”(VSS)。

要处理源代码存储库中已有的新项目,我需要“获取该项目目录的最新”(VSS) 版本。

当我进入存储库中的任何子目录并“获取最新”(即 svn checkout)时,客户端将自动为我创建完整的目录层次结构,并将该结构镜像到我的本地磁盘上。因此,当我得到最新的

$/foo/bar/project1

它是在驱动器上创建的

C:\source\foo\bar\project1

在 subversion 中,当我 checkout 目录时,我必须指定工作副本目录位置。如果我想正确镜像我的工作副本目录结构以匹配存储库,我必须手动构建路径中的每个子目录,或者将存储库根目录 check out 到工作副本根目录,获取存储库中的所有内容。

是否有一种方法可以在层次结构中获取存储库目录,以便在匹配的本地工作副本目录结构中创建它,而无需所有手动干预?

这对于小型存储库来说不是问题,但在大多数情况下,我不需要很大比例的源存储库。为了不破坏对项目和资源的文件引用,必须维护物理结构。另外,考虑到文件的所有工作基础副本,SVN 的磁盘成本是实际源大小的两倍。

我目前正在使用乌龟。是否有其他 SVN 客户端可以执行我正在寻找的操作?

最佳答案

Subversion“ checkout ”操作创建一个工作副本。您可能想要做的是检查整个项目(它会自动创建与存储库中相同的正确目录结构),然后使用 Subversion“更新”操作。更新将更新指定目录和子目录中的所有内容。

这可能是由于 VSS 和 Subversion 之间的术语差异造成的。 Subversion Book值得一读,特别是关于 Basic Usage 的章节.

更新:我想我不太明白您的预期用例是什么。听起来您可能需要的 Subversion 1.5 新功能之一是 sparse checkouts 。这使您可以有选择地获取存储库的一部分,而不必获取整个存储库。它为您提供了非常灵活的选项来管理您需要获得的金额。

由于稀疏结帐相对较新,我认为 SVN 书籍尚未更新以包含有关此功能的信息。 它已更新,请参阅评论。

更新 2:听起来您可以通过使用 --depth=empty 选项将存储库的顶层 checkin c:\source 来构造您想要的内容。然后,对于您想要的每个子目录,根据需要使用 --depth=empty 或 --depth=infinity 更新该子目录。

我相信这一切都 Root 于 Subversion 的设计目标,即能够在您的系统上同时拥有多个独立的源代码树。使用 VSS,$/被全局配置为引用特定目录 (c:\source),因此您只能 checkout 一次(无需每次想要切换时都对全局配置进行一堆困惑)。

关于svn - 如何在没有完整根 checkout 的情况下在我的工作目录中镜像 SVN 存储库目录结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/249158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com