about summary refs log tree commit diff
path: root/Functions/VCS_Info/Backends/VCS_INFO_get_data_p4
blob: e4bbb06c469d817dab2342db4e80329438e7e1c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
## vim:ft=zsh
## perforce support by: Phil Pennock
## Distributed under the same BSD-ish license as zsh itself.

# XXX: This soooo needs to be cached
setopt localoptions extendedglob
local p4base a b
local -A p4info

${vcs_comm[cmd]} info | while IFS=: read a b; do p4info[${a// /_}]="${b## #}"; done
p4base=${vcs_comm[basedir]}

# We'll use the client name as the branch; close enough.
local p4branch change
# We'll use the latest change number to which the hierarchy from
# here down is synced as the revision.
# I suppose the following might be slow on a tortuous client view.
change="${${$(${vcs_comm[cmd]} changes -m 1 ...\#have)##Change }%% *}"
zstyle -s ":vcs_info:${vcs}:${usercontext}:${rrn}" branchformat p4branch ||
p4branch="%b:%r"
zformat -f p4branch "${p4branch}" "b:${p4info[Client_name]}" \
"r:$change"

VCS_INFO_formats '' "${p4branch}" "${p4base}" '' '' "$change" ''