svn - 使用 powershell 和 svn 删除未版本控制的文件

标签 svn version-control scripting powershell windows-scripting

我正在尝试编写构建脚本以使用 Powershell check out 代码。我需要能够用 SVN 存储库中的适当更改替换对工作副本所做的任何修改。这还包括删除在 repo 中删除但在工作副本中未删除的任何文件。

不幸的是,我无法进行干净的 checkout ,因为每次运行构建脚本时都 checkout 所有 10GB 的代码效率很低。我该怎么做?

我一直在尝试以下方法:

&$SVN_EXE revert $workingPath
&$SVN_EXE update $workingPath
$x = &$SVN_EXE status $localPath --no-ignore |  where {$_ -match "^[\?I]"} | %{$_ -replace "^[\?I]",""} # get the status, get any items with a ? and strip them out
$x | %{$_ -replace "[`n]",", "} # Replace newlines with commas
Remove-Item $x # Remove all the unversioned items

我似乎无法将第 3 行的输出存储到 $x 中,而且我不太确定其余部分是否是这样做的方式。

我不确定这是否是正确的方法,但如果是,我似乎无法存储和解析 SVN 状态的输出。

有人有什么建议吗?谢谢!

最佳答案

如果你想从你的工作目录中删除未跟踪和忽略的文件,尝试这样的事情:

svn st --no-ignore | %{ if($_ -match '^[?I]\s+(.+)'){ $matches[1]} } | rm -whatif

一旦您确认-whatif 正在执行您希望它执行的操作,请删除它。

关于svn - 使用 powershell 和 svn 删除未版本控制的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082706/

相关文章:

svn - 点 (...) 是否表示在 svn commit 命令期间传输的字节?

version-control - 用于版本控制系统的历史可视化工具?

linux - Bash-在多个目录上执行相同的命令

git - 如何同时对 2 个不同的 Remote 执行 `git push`?

git - 如何重新启动git repo?

jquery - 可滚动的分区?

linux - scrot 区域不起作用的 Bash 脚本

svn - 更正 SVN 复制/移动

python - pysvn 使用 svn+ssh 提示输入密码

visual-studio - 没有服务器的 SVN 用于我们的 Visual Studio 开发