Merge pull request #2549 from ian-craig/status-branchonly

Show branch name when cmder.status=false without expensive status ops
This commit is contained in:
Dax T Games 2021-07-17 14:10:21 -04:00 committed by GitHub
commit 62a6311b6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 22 deletions

52
vendor/clink.lua vendored
View File

@ -41,6 +41,10 @@ local function get_conflict_color()
return conflict_color or "\x1b[31;1m" return conflict_color or "\x1b[31;1m"
end end
local function get_unknown_color()
return unknown_color or "\x1b[37;1m"
end
--- ---
-- Makes a string safe to use as the replacement in string.gsub -- Makes a string safe to use as the replacement in string.gsub
--- ---
@ -392,34 +396,36 @@ local function git_prompt_filter()
local colors = { local colors = {
clean = get_clean_color(), clean = get_clean_color(),
dirty = get_dirty_color(), dirty = get_dirty_color(),
conflict = get_conflict_color() conflict = get_conflict_color(),
nostatus = get_unknown_color()
} }
local git_dir = get_git_dir() local git_dir = get_git_dir()
local color
cmderGitStatusOptIn = get_git_status_setting() cmderGitStatusOptIn = get_git_status_setting()
if cmderGitStatusOptIn then if git_dir then
if git_dir then local branch = get_git_branch(git_dir)
-- if we're inside of git repo then try to detect current branch if branch then
local branch = get_git_branch(git_dir) if cmderGitStatusOptIn then
local color -- if we're inside of git repo then try to detect current branch
if branch then -- Has branch => therefore it is a git folder, now figure out status
-- Has branch => therefore it is a git folder, now figure out status local gitStatus = get_git_status()
local gitStatus = get_git_status() local gitConflict = get_git_conflict()
local gitConflict = get_git_conflict()
color = colors.dirty color = colors.dirty
if gitStatus then if gitStatus then
color = colors.clean color = colors.clean
end end
if gitConflict then if gitConflict then
color = colors.conflict color = colors.conflict
end end
else
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")") color = colors.nostatus
return false end
end clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")")
end return false
end
end end
-- No git present or not in git file -- No git present or not in git file
@ -437,6 +443,7 @@ local function hg_prompt_filter()
local colors = { local colors = {
clean = get_clean_color(), clean = get_clean_color(),
dirty = get_dirty_color(), dirty = get_dirty_color(),
nostatus = get_unknown_color()
} }
local pipe = io.popen("hg branch 2>&1") local pipe = io.popen("hg branch 2>&1")
@ -471,6 +478,7 @@ local function svn_prompt_filter()
local colors = { local colors = {
clean = get_clean_color(), clean = get_clean_color(),
dirty = get_dirty_color(), dirty = get_dirty_color(),
nostatus = get_unknown_color()
} }
if get_svn_dir() then if get_svn_dir() then

View File

@ -43,3 +43,4 @@ lamb_color = "\x1b[1;30;40m" -- Light Grey = Lambda Color
clean_color = "\x1b[1;37;40m" clean_color = "\x1b[1;37;40m"
dirty_color = "\x1b[33;3m" dirty_color = "\x1b[33;3m"
conflict_color = "\x1b[31;1m" conflict_color = "\x1b[31;1m"
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color

18
vendor/git-prompt.sh vendored
View File

@ -9,6 +9,21 @@ function getGitStatusSetting() {
fi fi
} }
function getSimpleGitBranch() {
gitDir=$(git rev-parse --git-dir 2>/dev/null)
if [ -z "$gitDir" ]; then
return 0
fi
headContent=$(< "$gitDir/HEAD")
if [[ "$headContent" == "ref: refs/heads/"* ]]
then
echo " (${headContent:16})"
else
echo " (HEAD detached at ${headContent:0:7})"
fi
}
if test -f /etc/profile.d/git-sdk.sh if test -f /etc/profile.d/git-sdk.sh
then then
TITLEPREFIX=SDK-${MSYSTEM#MINGW} TITLEPREFIX=SDK-${MSYSTEM#MINGW}
@ -45,6 +60,9 @@ else
. "$COMPLETION_PATH/git-prompt.sh" . "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[36m\]' # change color to cyan PS1="$PS1"'\[\033[36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function PS1="$PS1"'`__git_ps1`' # bash function
else
PS1="$PS1"'\[\033[37;1m\]' # change color to white
PS1="$PS1"'`getSimpleGitBranch`'
fi fi
fi fi
fi fi

View File

@ -36,6 +36,14 @@ function checkGit($Path) {
if (getGitStatusSetting -eq $true) { if (getGitStatusSetting -eq $true) {
Write-VcsStatus Write-VcsStatus
} else {
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
if ($headContent -like "ref: refs/heads/*") {
$branchName = $headContent.Substring(16)
} else {
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
}
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
} }
return return