Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
ca8a5a0a
Commit
ca8a5a0a
authored
Dec 27, 2019
by
Marc Cornellà
Browse files
svn-fast-info: add README, reorg. plugin
parent
0c2f7514
Changes
2
Show whitespace changes
Inline
Side-by-side
plugins/svn-fast-info/README.md
0 → 100644
View file @
ca8a5a0a
# svn-fast-info plugin
Faster alternative to the main SVN plugin implementation. Works with svn 1.6 and newer.
Use as a drop-in replacement to the svn plugin, not as complementary.
To use it, add
`svn-fast-info`
to the plugins array in your zshrc file:
```
zsh
plugins
=(
... svn-fast-info
)
```
It's faster because his efficient use of svn (single svn call) which saves a lot on a huge codebase
It displays the current status of the local files (added, deleted, modified, replaced, or else...)
Use
`svn_prompt_info`
method to display the svn repository status in your theme.
## Functions
-
`svn_prompt_info`
: displays all the available information regarding the status of the svn repository.
-
`svn_repo_need_upgrade`
: shows whether the repository needs upgrading.
`svn_prompt_info`
queries the
rest of functions or not based on the result of this function.
-
`svn_current_branch_name`
: shows the current branch.
-
`svn_repo_root_name`
: displays the repository root.
-
`svn_current_revision`
: shows the currently checked-out revision.
-
`svn_status_info`
: shows a bunch of symbols depending on the status of the files in the repository.
## Options
-
`ZSH_THEME_SVN_PROMPT_PREFIX`
: sequence displayed at the beginning of the prompt info output.
-
`ZSH_THEME_SVN_PROMPT_SUFFIX`
: sequence displayed at the end of the prompt info output.
-
`ZSH_THEME_SVN_PROMPT_CLEAN`
: sequence displayed when the status of the repository is clean.
-
`ZSH_THEME_SVN_PROMPT_ADDITIONS`
: sequence displayed if there are added files in the repository.
**Default:**
`+`
.
-
`ZSH_THEME_SVN_PROMPT_DELETIONS`
: sequence displayed if there are deleted files in the repository.
**Default:**
`✖`
.
-
`ZSH_THEME_SVN_PROMPT_MODIFICATIONS`
: sequence displayed if there are modified files in the repository.
**Default:**
`✎`
.
-
`ZSH_THEME_SVN_PROMPT_REPLACEMENTS`
: sequence displayed if there are replaced files in the repository.
**Default:**
`∿`
.
-
`ZSH_THEME_SVN_PROMPT_UNTRACKED`
: sequence displayed if there are untracked files in the repository.
**Default:**
`?`
.
-
`ZSH_THEME_SVN_PROMPT_DIRTY`
: sequence displayed if the repository is dirty.
**Default:**
`!`
.
plugins/svn-fast-info/svn-fast-info.plugin.zsh
View file @
ca8a5a0a
# vim:ft=zsh ts=2 sw=2 sts=2 et
#
# Faster alternative to the current SVN plugin implementation.
#
# Works with svn 1.6, 1.7, 1.8.
# Use `svn_prompt_info` method to enquire the svn data.
# It's faster because his efficient use of svn (single svn call) which saves a lot on a huge codebase
# It displays the current status of the local files (added, deleted, modified, replaced, or else...)
#
# Use as a drop-in replacement of the svn plugin not as complementary plugin
function
svn_prompt_info
()
{
function
svn_prompt_info
()
{
local
info
local
info
info
=
$(
svn info 2>&1
)
||
return
1
;
# capture stdout and stderr
info
=
$(
svn info 2>&1
)
||
return
1
# capture stdout and stderr
local
repo_need_upgrade
=
$(
svn_repo_need_upgrade
$info
)
local
repo_need_upgrade
=
$(
svn_repo_need_upgrade
$info
)
if
[[
-n
$repo_need_upgrade
]]
;
then
if
[[
-n
$repo_need_upgrade
]]
;
then
...
@@ -27,7 +16,6 @@ function svn_prompt_info() {
...
@@ -27,7 +16,6 @@ function svn_prompt_info() {
printf
'%s%s%s%s %s%s%s:%s%s%s%s'
\
printf
'%s%s%s%s %s%s%s:%s%s%s%s'
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
"
$ZSH_THEME_SVN_PROMPT_PREFIX
"
\
"
$ZSH_THEME_SVN_PROMPT_PREFIX
"
\
\
"
$(
svn_status_info
$info
)
"
\
"
$(
svn_status_info
$info
)
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
\
\
...
@@ -37,14 +25,13 @@ function svn_prompt_info() {
...
@@ -37,14 +25,13 @@ function svn_prompt_info() {
\
\
"
$(
svn_current_revision
$info
)
"
\
"
$(
svn_current_revision
$info
)
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
\
\
"
$ZSH_THEME_SVN_PROMPT_SUFFIX
"
\
"
$ZSH_THEME_SVN_PROMPT_SUFFIX
"
\
"
$ZSH_PROMPT_BASE_COLOR
"
"
$ZSH_PROMPT_BASE_COLOR
"
fi
fi
}
}
function
svn_repo_need_upgrade
()
{
function
svn_repo_need_upgrade
()
{
grep
-q
"E155036"
<<<
${
1
:-
$(
svn info 2> /dev/null
)
}
&&
\
grep
-q
"E155036"
<<<
"
${
1
:-
$(
svn info 2> /dev/null
)
}
"
&&
\
echo
"E155036: upgrade repo with svn upgrade"
echo
"E155036: upgrade repo with svn upgrade"
}
}
...
@@ -63,12 +50,23 @@ function svn_current_revision() {
...
@@ -63,12 +50,23 @@ function svn_current_revision() {
function
svn_status_info
()
{
function
svn_status_info
()
{
local
svn_status_string
=
"
$ZSH_THEME_SVN_PROMPT_CLEAN
"
local
svn_status_string
=
"
$ZSH_THEME_SVN_PROMPT_CLEAN
"
local
svn_status
=
"
$(
svn status 2> /dev/null
)
"
;
local
svn_status
=
"
$(
svn status 2> /dev/null
)
"
;
if
command grep
-E
'^\s*A'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_ADDITIONS
:-
+
}
"
;
fi
if
command grep
-E
'^\s*A'
&> /dev/null
<<<
$svn_status
;
then
if
command grep
-E
'^\s*D'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_DELETIONS
:-
✖
}
"
;
fi
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_ADDITIONS
:-
+
}
"
if
command grep
-E
'^\s*M'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_MODIFICATIONS
:-
✎
}
"
;
fi
fi
if
command grep
-E
'^\s*[R~]'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_REPLACEMENTS
:-
∿
}
"
;
fi
if
command grep
-E
'^\s*D'
&> /dev/null
<<<
$svn_status
;
then
if
command grep
-E
'^\s*\?'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_UNTRACKED
:-
?
}
"
;
fi
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_DELETIONS
:-
✖
}
"
if
command grep
-E
'^\s*[CI!L]'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_DIRTY
:-
!
}
"
;
fi
fi
if
command grep
-E
'^\s*M'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_MODIFICATIONS
:-
✎
}
"
fi
if
command grep
-E
'^\s*[R~]'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_REPLACEMENTS
:-
∿
}
"
fi
if
command grep
-E
'^\s*\?'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_UNTRACKED
:-
?
}
"
fi
if
command grep
-E
'^\s*[CI!L]'
&> /dev/null
<<<
$svn_status
;
then
svn_status_string
=
"
$svn_status_string
${
ZSH_THEME_SVN_PROMPT_DIRTY
:-
!
}
"
fi
echo
$svn_status_string
echo
$svn_status_string
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment