如何在PowerShell函数中使用posh-git检查repo状态?

时间:2015-03-12 20:38:11

标签: powershell psake posh-git

我们有一个psake业务流程,在调用'git clean -xdf'之前会提示用户输入以下消息:

  

即将删除所有未跟踪的文件。按'Y'继续或任何   其他取消的关键。

如果存储库中存在未通过运行clean -xdf删除的未跟踪文件,我们希望显示此提示 ONLY

有关如何使用posh-git回答问题的任何建议“存储库中是否有任何未经跟踪的更改?”来自PowerShell?

这是现有的业务流程,供参考......

task CleanAll -description "Runs a git clean -xdf" {
    Write-Host "About to delete any uncommitted changes.  Press 'Y' to continue or any other key to cancel." -foregroundcolor "yellow"
    $continue = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp").Character
    IF ($continue -eq "Y" -or $continue -eq "y")
    {
        git clean -xdf
    }
    ELSE
    {
        Write-Error "CleanAll canceled."
    }
}

1 个答案:

答案 0 :(得分:0)

在@EtanReisner的帮助下,我能够得到以下解决方案。它检查未跟踪的更改并提示是否有。否则它只是git clean -xdf。

$gitStatus = (@(git status --porcelain) | Out-String)

IF ($gitStatus.Contains("??"))
{
    Write-Host "About to delete any untracked files.  Press 'Y' to continue or any other key to cancel." -foregroundcolor "yellow"
    $continue = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp").Character
    IF ($continue -eq "Y" -or $continue -eq "y")
    {
        git clean -xdf
    }
    ELSE
    {
        Write-Error "CleanAll canceled."
    }
}

git clean -xdf