Merge branch 'master' of git://github.com/ndbroadbent/scm_breeze
This commit is contained in:
@@ -154,13 +154,11 @@ EOF
|
||||
else
|
||||
ll_files="$(\ls "$@")"
|
||||
fi
|
||||
# Escape single and double quotes
|
||||
ll_files=$(echo "$ll_files" | \sed -e 's/"/\\\\\\"/g' -e "s/'"'/\\\\'"'/g")
|
||||
|
||||
OLDIFS="$IFS"; IFS=$'\n'
|
||||
for file in $ll_files; do
|
||||
if [ -n "$rel_path" ]; then file="$rel_path/$file"; fi
|
||||
export $git_env_char$e="$(eval $_abs_path_command \"$file\")"
|
||||
export $git_env_char$e="$(eval $_abs_path_command \"${file//\"/\\\"}\")"
|
||||
if [ "${scmbDebug:-}" = "true" ]; then echo "Set \$$git_env_char$e => $file"; fi
|
||||
let e++
|
||||
done
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
# # groups => 1: staged, 2: unmerged, 3: unstaged, 4: untracked
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
@project_root = File.exist?(".git") ? Dir.pwd : `git rev-parse --git-dir 2> /dev/null`.sub(/\/\.git$/, '').strip
|
||||
@project_root = File.exist?(".git") ? Dir.pwd : `\git rev-parse --git-dir 2> /dev/null`.sub(/\/\.git$/, '').strip
|
||||
|
||||
@git_status = `git status --porcelain 2> /dev/null`
|
||||
@git_status = `\git status --porcelain 2> /dev/null`
|
||||
|
||||
git_branch = `git branch -v 2> /dev/null`
|
||||
git_branch = `\git branch -v 2> /dev/null`
|
||||
@branch = git_branch[/^\* (\(no branch\)|[^ ]*)/, 1]
|
||||
@ahead = git_branch[/^\* [^ ]* *[^ ]* *\[ahead ?(\d+)\]/, 1]
|
||||
|
||||
@@ -102,7 +102,7 @@ end
|
||||
@git_status_long = `git status`.gsub(/\033\[[^m]*m/, "") # (strip colors)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
msg, col, group = case change[0..1]
|
||||
when "DD"; [" both deleted", :del, :unmerged]
|
||||
@@ -156,7 +156,7 @@ def output_file_group(group)
|
||||
|
||||
# Find relative path, i.e. ../../lib/path/to/file
|
||||
rel_file = relative_path(Dir.pwd, File.join(@project_root, h[:file]))
|
||||
|
||||
|
||||
# If some submodules have changed, parse their summaries from long git status
|
||||
sub_stat = nil
|
||||
if @git_status_long && (sub_stat = @git_status_long[/#{h[:file]} \((.*)\)/, 1])
|
||||
|
||||
@@ -138,7 +138,7 @@ scmb_expand_args() {
|
||||
|
||||
# Execute a command with expanded args, e.g. Delete files 6 to 12: $ ge rm 6-12
|
||||
# Fails if command is a number or range (probably not worth fixing)
|
||||
exec_scmb_expand_args() { eval "$(scmb_expand_args "$@" | sed -e 's/\([][()<>^ ]\)/\\\1/g')"; }
|
||||
exec_scmb_expand_args() { eval "$(scmb_expand_args "$@" | sed -e "s/\([][()<>^ \"']\)/"'\\\1/g')"; }
|
||||
|
||||
# Clear numbered env variables
|
||||
git_clear_vars() {
|
||||
|
||||
@@ -136,3 +136,7 @@ git_branch_delete_all() {
|
||||
$_git_cmd branch -D -r origin/$1
|
||||
$_git_cmd push origin :$1
|
||||
}
|
||||
|
||||
commit_docs() {
|
||||
git commit -m "Update README / Documentation [ci skip]"
|
||||
}
|
||||
@@ -12,7 +12,11 @@ disable_nullglob() { if [ $shell = "zsh" ]; then unsetopt NULL_GLOB; else shopt
|
||||
# Alias wrapper that ignores errors if alias is not defined.
|
||||
_alias(){ alias "$@" 2> /dev/null; }
|
||||
|
||||
export GIT_BINARY=$(which git)
|
||||
if [ $shell = "zsh" ]; then
|
||||
export GIT_BINARY=$(type -p git | sed 's/git is //' | head -1)
|
||||
else
|
||||
export GIT_BINARY=$(type -P git)
|
||||
fi
|
||||
|
||||
# Updates SCM Breeze from GitHub.
|
||||
update_scm_breeze() {
|
||||
|
||||
@@ -86,14 +86,20 @@ test_ls_with_file_shortcuts() {
|
||||
assertIncludes "$ls_output" '[5] test_file' F
|
||||
|
||||
# Test filenames with single or double quotes escaped
|
||||
assertEquals "$TEST_DIR/a \\\"b\\\"" "$e1"
|
||||
assertEquals "$TEST_DIR/a \\'b\\'" "$e2"
|
||||
assertEquals "$TEST_DIR/a [b]" "$e3"
|
||||
assertEquals "$TEST_DIR/test file" "$e4"
|
||||
assertEquals "$TEST_DIR/test_file" "$e5"
|
||||
assertEquals "$TEST_DIR/"'a "b"' "$e1"
|
||||
assertEquals "$TEST_DIR/a 'b'" "$e2"
|
||||
assertEquals "$TEST_DIR/a [b]" "$e3"
|
||||
assertEquals "$TEST_DIR/test file" "$e4"
|
||||
assertEquals "$TEST_DIR/test_file" "$e5"
|
||||
|
||||
# Test ls with subdirectory
|
||||
ls_output=$(ls_with_file_shortcuts "a \"b\"" | strip_colors)
|
||||
ls_with_file_shortcuts 'a "b"' > $temp_file
|
||||
ls_output=$(<$temp_file strip_colors)
|
||||
assertIncludes "$ls_output" '[1] c' F
|
||||
# Test that env variable is set correctly
|
||||
assertEquals "$TEST_DIR/a \"b\"/c" "$e1"
|
||||
# Test arg with no quotes
|
||||
ls_output=$(ls_with_file_shortcuts a\ \"b\" | strip_colors)
|
||||
assertIncludes "$ls_output" '[1] c' F
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user