gpt4 book ai didi

svn - 为什么这个 PowerShell 脚本删除 svn :mergeinfo from the root directory?

转载 作者:行者123 更新时间:2023-12-04 14:35:27 25 4
gpt4 key购买 nike

我们有一个脚本可以从 Subversion 工作副本中的所有文件夹中删除 svn:mergeinfo 属性,但不删除工作副本根目录本身。它目前是通过单独的批处理文件调用的 NAnt 构建脚本,因此我试图用更简单的 PowerShell 脚本替换它。我已经进行了三次尝试,从简单的尝试到稍微复杂的尝试。这三个都不符合我的标准,输出行 property 'svn:mergeinfo' deleted from '.'.

检查工作副本根目录的 SVN 属性表明 svn:mergeinfo 属性确实已从此文件夹中删除,这不是我想要的。每个版本都设计为从工作副本根目录运行。

尝试 1:

# I understand why this one fails, it's a poor attempt.
Get-ChildItem -Recurse | svn propdel svn:mergeinfo -R $_

尝试 2:

# This one correctly lists everything except the working copy root, but
# still removes the svn:mergeinfo property from the working copy root.
Get-ChildItem -Recurse -Exclude $pwd | svn propdel svn:mergeinfo -R $_

尝试 3:

# Again, this one works fine until the svn propdel is added.
Get-ChildItem | ForEach-Object { ls -R $_ } | svn propdel svn:mergeinfo -R $_

有没有想过我逻辑上的缺陷在哪里?

最佳答案

svn 是一个外部应用程序,您不能直接对其使用 PowerShell 管道技术。我不熟悉 svn 语法,可能在细节上有误,但你的所有命令大概都应该使用 ForEach-Object (%)。即:

... | %{ svn propdel svn:mergeinfo -R $_ }

然后 svn 应该正确地“理解”$_。此外,您很可能应该使用 $_.FullName$_.Name 而不是 $_(同样,因为svn 是一个外部应用程序,它需要一个字符串(例如 $_.FullName/$_.Name),而不是对象 $_).注意:$_ 通常会按预期自动转换为字符串,但情况并非总是如此。

关于svn - 为什么这个 PowerShell 脚本删除 svn :mergeinfo from the root directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041960/

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