gpt4 book ai didi

svn - 颠覆结帐 : is there a way to skip a subtree?

转载 作者:行者123 更新时间:2023-12-04 05:33:56 25 4
gpt4 key购买 nike

我有一个包含大量目录和文件的存储库。对于临时构建,我只需要从根开始的树的一个子集。一些不需要的子树深处包含临时构建不需要的大文件。我玩过 --depth empty仅 check out 稀疏树的选项,但这既麻烦又倒退,因为我最终得到了一个我想要的目录的大白名单,而不是我不想要的目录的一个小黑名单。由于需要监视我可能需要临时构建的新目录,白名单方法变得更加复杂。

有没有办法表达递归结帐 dir但跳过 dir/foo/bar/bazdir/frob/tweak 不跳过箍?类似于 -prune find(1) 的谓词?

最佳答案

Subversion 假定您需要整个目录树。有一种方法可以进行稀疏结账,但它有点像跳过机制:

首先,结帐并设置 --depth立即:

 $ svn co --depth=immediates svn://localhost/myproject/trunk myproject-trunk

这将立即 check out 根目录下的所有文件和目录。

接下来,您可以使用各种 shell 脚本魔法来更新 --set-depth仅标记您想要的那些目录:
$ shopt -s extglob   #Needed on BASH, but not Kornshell
$ svn co --depth=immediates $REPO_URL
$ svn up --set-depth=infinity !(foo|frob)

除了 foo 之外,上面的代码将对所有目录树进行 check out 。和 frob .

你可以用 find 做类似的事情也是。

问题是 Subversion 非常简单,并且被设计成那样。在 Perforce 和 ClearCase 等其他版本控制系统中,您可以指定要 checkout 的内容,而在 Perforce 中,则指定要 checkout 的方式。

但是,这需要您设置一个 View ,这使得使用这些版本控制系统变得更加复杂。我喜欢 Perforce。它快速而强大,但由于需要 View ,开发人员讨厌它。对他们来说,它增加了一种复杂性,实际上并没有给他们带来太多好处。他们很少需要进行稀疏结账。

如果这是您的 Subversion 存储库的常见问题,您可能需要重新考虑您的布局以使其更方便。这在 Subversion 中并不太难,因为整个存储库只是一个包含分支和标签的文件树。有很多次我们决定放弃主干并用特定分支替换它,或者重命名和重组我们的存储库以使其更易于使用。

请务必与您的开发人员协调任何大规模的重组。如果你移动他们正在处理的目录树,他们会突然发现他们无法提交他们的更改(大多数情况下,他们可以执行 svn switch --relocate 来解决这个问题。但是,我的经验是开发人员而是检查他们的东西并从干净的结帐开始。

关于svn - 颠覆结帐 : is there a way to skip a subtree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12212375/

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