Posh-Git和Posh-Hg在一起吗?

时间:2010-12-21 14:11:21

标签: git powershell mercurial console

您好我是Git和Hg的忠实粉丝,并且必须在许多项目中使用它们。我目前使用的是Posh-Hg,它是一个powershell插件,可以将当前分支和未完成的提交放在您的PowerShell中。 Posh-Git以类似的方式运行,除了Git。有没有人成功地让两个PowerShell脚本一起玩得很好?

http://poshhg.codeplex.com/

http://github.com/dahlbyk/posh-git alt text

3 个答案:

答案 0 :(得分:19)

在个人资料脚本中尝试这个:

function isCurrentDirectoryARepository($type) {

    if ((Test-Path $type) -eq $TRUE) {
        return $TRUE
    }

    # Test within parent dirs
    $checkIn = (Get-Item .).parent
    while ($checkIn -ne $NULL) {
        $pathToTest = $checkIn.fullname + '/' + $type;
        if ((Test-Path $pathToTest) -eq $TRUE) {
            return $TRUE
        } else {
            $checkIn = $checkIn.parent
        }
    }
    return $FALSE
}

# Posh-Hg and Posh-git prompt

. $ProfileRoot\Modules\posh-hg\profile.example.ps1
. $ProfileRoot\Modules\posh-git\profile.example.ps1

function prompt(){
    # Reset color, which can be messed up by Enable-GitColors
    $Host.UI.RawUI.ForegroundColor = $GitPromptSettings.DefaultForegroundColor

    Write-Host($pwd) -nonewline

    if (isCurrentDirectoryARepository(".git")) {
        # Git Prompt
        $Global:GitStatus = Get-GitStatus
        Write-GitStatus $GitStatus
    } elseif (isCurrentDirectoryARepository(".hg")) {
        # Mercurial Prompt
        $Global:HgStatus = Get-HgStatus
        Write-HgStatus $HgStatus
    }

    return "> "
}

答案 1 :(得分:11)

请注意,该问题现已修复。假设您拥有Posh-Hg和Posh-Git的最新版本,则您的个人资料应仅包括在内。

# Posh-Hg and Posh-git prompt
. $ProfileRoot\Modules\posh-hg\profile.example.ps1
. $ProfileRoot\Modules\posh-git\profile.example.ps1

答案 2 :(得分:2)

仅供参考 - 有一个名为Posh-GIT-HG的甜蜜巧克力软件包完全符合上述answer的建议,但具有可能与最新版本的posh-git和posh-保持同步的额外好处。汞柱。