From 123c17fa3b84031899e0a7ab5cc23649fd5afb46 Mon Sep 17 00:00:00 2001 From: Marcin Bachry Date: Thu, 18 Apr 2013 19:44:00 +0200 Subject: [PATCH 01/13] Make bash completions work with Ubuntu 13.04 --- lib/git/aliases.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 8c715a1..4c349e3 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -143,6 +143,8 @@ fi if [ $shell = "bash" ]; then # Fix to preload Arch bash completion for git [[ -s "/usr/share/git/completion/git-completion.bash" ]] && source "/usr/share/git/completion/git-completion.bash" + # new path in Ubuntu 13.04 + [[ -s "/usr/share/bash-completion/completions/git" ]] && source "/usr/share/bash-completion/completions/git" complete -o default -o nospace -F _git $git_alias # Git repo management & aliases. From 3ee5517d825769531ba919418b176d024c2bc95e Mon Sep 17 00:00:00 2001 From: Artyom Olshevskiy Date: Fri, 31 May 2013 18:46:32 +0300 Subject: [PATCH 02/13] Fix gb -D expansion --- lib/git/branch_shortcuts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/branch_shortcuts.sh b/lib/git/branch_shortcuts.sh index e7b9064..1e933b9 100644 --- a/lib/git/branch_shortcuts.sh +++ b/lib/git/branch_shortcuts.sh @@ -15,7 +15,7 @@ function _scmb_git_branch_shortcuts { fail_if_not_git_repo || return 1 # Fall back to normal git branch, if any unknown args given if [[ -n "$@" ]] && [[ "$@" != "-a" ]]; then - $_git_cmd branch "$@" + exec_scmb_expand_args $_git_cmd branch "$@" return 1 fi From 07518479a8c7f7ccb53695a0380f826ae6f5d568 Mon Sep 17 00:00:00 2001 From: Abhishek Das Date: Mon, 1 Jul 2013 17:52:41 +0530 Subject: [PATCH 03/13] Adds git stash aliases --- git.scmbrc.example | 3 +++ lib/git/aliases.sh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/git.scmbrc.example b/git.scmbrc.example index 2191309..f279438 100644 --- a/git.scmbrc.example +++ b/git.scmbrc.example @@ -84,6 +84,9 @@ git_log_stat_alias="gls" git_log_graph_alias="glg" git_show_alias="gsh" git_show_summary="gsm" # (gss taken by git status short) +git_stash_alias="gash" +git_stash_apply_alias="gasha" +git_stash_list_alias="gashl" git_tag_alias="gt" diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 4c349e3..cfa4171 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -121,6 +121,9 @@ if [ "$git_setup_aliases" = "yes" ]; then __git_alias "$git_cherry_pick_alias" "git" 'cherry-pick' __git_alias "$git_show_alias" "git" 'show' __git_alias "$git_show_summary" "git" 'show' '--summary' + __git_alias "$git_stash_alias" "git" 'stash' + __git_alias "$git_stash_apply_alias" "git" 'stash' 'apply' + __git_alias "$git_stash_list_alias" "git" 'stash' 'list' __git_alias "$git_tag_alias" "git" 'tag' From 65e62a883bdb5ab2ec71adc4e78b068e38568726 Mon Sep 17 00:00:00 2001 From: Cliff Rowley Date: Tue, 2 Jul 2013 16:00:54 +0100 Subject: [PATCH 04/13] Add git difftool (default alias "gdt") --- git.scmbrc.example | 1 + lib/git/aliases.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/git.scmbrc.example b/git.scmbrc.example index f279438..a620b9f 100644 --- a/git.scmbrc.example +++ b/git.scmbrc.example @@ -49,6 +49,7 @@ git_blame_alias="gbl" git_diff_alias="gd" git_diff_word_alias="gdw" git_diff_cached_alias="gdc" +git_difftool_alias="gdt" # 3. Standard commands git_clone_alias="gcl" git_fetch_alias="gf" diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index cfa4171..3c025ff 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -97,6 +97,7 @@ if [ "$git_setup_aliases" = "yes" ]; then __git_alias "$git_diff_word_alias" "git" "diff" "--word-diff" __git_alias "$git_diff_cached_alias" "git" "diff" "--cached" __git_alias "$git_add_patch_alias" "git" "add" "-p" + __git_alias "$git_difftool_alias" "git" "difftool" # Custom default format for git log git_log_command="log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" __git_alias "$git_log_alias" "git" "$git_log_command" From 0ce8618d90e8c24de2518f00690e8de258ec2eb7 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Thu, 4 Jul 2013 13:10:12 +1200 Subject: [PATCH 05/13] Added 'git_reset_last_commit' (grsl) alias, useful for undoing a temporary commit --- git.scmbrc.example | 1 + lib/git/aliases.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/git.scmbrc.example b/git.scmbrc.example index f279438..da97fdf 100644 --- a/git.scmbrc.example +++ b/git.scmbrc.example @@ -77,6 +77,7 @@ git_rebase_alias="grb" git_rebase_interactive_alias="grbi" git_rebase_alias_continue="grbc" git_rebase_alias_abort="grba" +git_reset_last_commit="grsl" git_merge_alias="gm" git_cherry_pick_alias="gcp" git_log_alias="gl" diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index cfa4171..0faa5d6 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -117,6 +117,7 @@ if [ "$git_setup_aliases" = "yes" ]; then __git_alias "$git_rebase_interactive_alias" "git" 'rebase' "-i" __git_alias "$git_rebase_alias_continue" "git" 'rebase' "--continue" __git_alias "$git_rebase_alias_abort" "git" 'rebase' "--abort" + __git_alias "$git_reset_last_commit" "git" "reset HEAD~" __git_alias "$git_merge_alias" "git" 'merge' __git_alias "$git_cherry_pick_alias" "git" 'cherry-pick' __git_alias "$git_show_alias" "git" 'show' From 697a636e10af57231bcb624b17f715b31ddd3165 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Tue, 9 Jul 2013 19:49:35 +1200 Subject: [PATCH 06/13] repo_index should be case insensitive --- lib/git/repo_index.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/repo_index.sh b/lib/git/repo_index.sh index 57fa627..1a7bb62 100644 --- a/lib/git/repo_index.sh +++ b/lib/git/repo_index.sh @@ -149,7 +149,7 @@ function _rebuild_git_index() { IFS=$'\n' for repo in $(echo -e "$(_find_git_repos)\n$(echo $GIT_REPOS | sed "s/:/\\\\n/g")"); do echo $(basename $repo | sed "s/ /_/g") $repo - done | sort | cut -d " " -f2- > "$GIT_REPO_DIR/.git_index" + done | sort | cut -d " " -f2- | tr '[A-Z]' '[a-z]' > "$GIT_REPO_DIR/.git_index" IFS=$' \t\n' if [ "$1" != "--silent" ]; then From c575f171c2ba066c62f80ebd993ac9c5e4655215 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Tue, 9 Jul 2013 20:10:57 +1200 Subject: [PATCH 07/13] Fixed case-insensitive matching... my last commit was pretty dumb --- lib/git/repo_index.sh | 6 +++--- test/lib/git/repo_index_test.sh | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/git/repo_index.sh b/lib/git/repo_index.sh index 1a7bb62..ce5f37e 100644 --- a/lib/git/repo_index.sh +++ b/lib/git/repo_index.sh @@ -97,9 +97,9 @@ function git_index() { fi # Try partial matches # - string at beginning of project - if [ -z "$base_path" ]; then base_path=$(_git_index_dirs_without_home | \grep -m1 "/$project"); fi + if [ -z "$base_path" ]; then base_path=$(_git_index_dirs_without_home | \grep -m1 -i "/$project"); fi # - string anywhere in project - if [ -z "$base_path" ]; then base_path=$(_git_index_dirs_without_home | \grep -m1 "$project"); fi + if [ -z "$base_path" ]; then base_path=$(_git_index_dirs_without_home | \grep -m1 -i "$project"); fi # -------------------- # Go to our base path if [ -n "$base_path" ]; then @@ -149,7 +149,7 @@ function _rebuild_git_index() { IFS=$'\n' for repo in $(echo -e "$(_find_git_repos)\n$(echo $GIT_REPOS | sed "s/:/\\\\n/g")"); do echo $(basename $repo | sed "s/ /_/g") $repo - done | sort | cut -d " " -f2- | tr '[A-Z]' '[a-z]' > "$GIT_REPO_DIR/.git_index" + done | sort | cut -d " " -f2- > "$GIT_REPO_DIR/.git_index" IFS=$' \t\n' if [ "$1" != "--silent" ]; then diff --git a/test/lib/git/repo_index_test.sh b/test/lib/git/repo_index_test.sh index c44f77c..d2afa8e 100755 --- a/test/lib/git/repo_index_test.sh +++ b/test/lib/git/repo_index_test.sh @@ -33,7 +33,7 @@ oneTimeSetUp() { cd $GIT_REPO_DIR # Setup test repos in temp repo dir - for repo in github bitbucket source_forge; do + for repo in github bitbucket source_forge TestCaps; do mkdir $repo; cd $repo; git init; cd - > /dev/null done @@ -119,7 +119,7 @@ test_check_git_index() { } test_git_index_count() { - assertEquals "9" "$(_git_index_count)" + assertEquals "10" "$(_git_index_count)" } test_repo_list() { @@ -136,6 +136,7 @@ test_git_index_changing_directory() { git_index "github"; assertEquals "$GIT_REPO_DIR/github" "$PWD" git_index "github/"; assertEquals "$GIT_REPO_DIR/github" "$PWD" git_index "bucket"; assertEquals "$GIT_REPO_DIR/bitbucket" "$PWD" + git_index "testcaps"; assertEquals "$GIT_REPO_DIR/TestCaps" "$PWD" git_index "green_sub"; assertEquals "$GIT_REPO_DIR/submodules_everywhere/very/nested/directory/green_submodule" "$PWD" git_index "_submod"; assertEquals "$GIT_REPO_DIR/submodules_everywhere/very/nested/directory/blue_submodule" "$PWD" git_index "test_repo_1"; assertEquals "/tmp/test_repo_1" "$PWD" From e9f3fd7a7c1a2b648a250a55f99c0b398a62ec52 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Mon, 22 Jul 2013 20:33:23 -0700 Subject: [PATCH 08/13] Fix git_commit_all for OSX --- lib/git/status_shortcuts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/status_shortcuts.sh b/lib/git/status_shortcuts.sh index c03485d..e6d603a 100644 --- a/lib/git/status_shortcuts.sh +++ b/lib/git/status_shortcuts.sh @@ -210,7 +210,7 @@ git_commit_prompt() { # Prompt for commit message, then commit all modified and untracked files. git_commit_all() { fail_if_not_git_repo || return 1 - changes=$(git status --porcelain | wc -l) + changes=$(git status --porcelain | wc -l | tr -d ' ') if [ "$changes" -gt 0 ]; then if [ -n "$APPEND" ]; then local appending=" | \033[0;36mappending '\033[1;36m$APPEND\033[0;36m' to commit message.\033[0m" From a6a23b0a3d30a1c9eb9d38d942cebd119ce65318 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Thu, 15 Aug 2013 23:47:09 -0700 Subject: [PATCH 09/13] Re-add git reset to the expanded numeric commands --- lib/git/aliases.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 24df527..8fa99dc 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -26,7 +26,7 @@ if type hub > /dev/null 2>&1; then export _git_cmd="hub"; fi function git(){ # Only expand args for git commands that deal with paths or branches case $1 in - checkout|commit|rm|blame|diff|add|log|rebase) + checkout|commit|rm|blame|diff|add|log|rebase|reset) exec_scmb_expand_args "$_git_cmd" "$@";; branch) _scmb_git_branch_shortcuts "${@:2}";; From 726b864785b1139ab659839d50a955fdafd59e11 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Thu, 15 Aug 2013 23:53:40 -0700 Subject: [PATCH 10/13] $e{*} variables should be a maximum of 3 digits --- lib/git/status_shortcuts.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/git/status_shortcuts.sh b/lib/git/status_shortcuts.sh index e6d603a..e562063 100644 --- a/lib/git/status_shortcuts.sh +++ b/lib/git/status_shortcuts.sh @@ -119,9 +119,9 @@ scmb_expand_args() { first=1 OLDIFS="$IFS"; IFS=" " # We need to split on spaces to loop over expanded range for arg in "$@"; do - if [[ "$arg" =~ ^[0-9]+$ ]] ; then # Substitute $e{*} variables for any integers + if [[ "$arg" =~ ^[0-9]{0,3}$ ]] ; then # Substitute $e{*} variables for any integers if [ "$first" -eq 1 ]; then first=0; else printf '\t'; fi - if [ -e "$arg" ]; then + if [ -e "$arg" ]; then printf '%s' "$arg" else eval printf '%s' "\"\$$git_env_char$arg\"" From b765b007762ab2dcbd451ebe4c49c09bd605e338 Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Thu, 15 Aug 2013 23:55:12 -0700 Subject: [PATCH 11/13] Wait... they should be a maximum of 4 digits. --- lib/git/status_shortcuts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/status_shortcuts.sh b/lib/git/status_shortcuts.sh index e562063..3e1dcac 100644 --- a/lib/git/status_shortcuts.sh +++ b/lib/git/status_shortcuts.sh @@ -119,7 +119,7 @@ scmb_expand_args() { first=1 OLDIFS="$IFS"; IFS=" " # We need to split on spaces to loop over expanded range for arg in "$@"; do - if [[ "$arg" =~ ^[0-9]{0,3}$ ]] ; then # Substitute $e{*} variables for any integers + if [[ "$arg" =~ ^[0-9]{0,4}$ ]] ; then # Substitute $e{*} variables for any integers if [ "$first" -eq 1 ]; then first=0; else printf '\t'; fi if [ -e "$arg" ]; then printf '%s' "$arg" From 9d5efbb7c56e46300c9e351b8fa9490e2ffa8c9e Mon Sep 17 00:00:00 2001 From: Nathan Broadbent Date: Fri, 16 Aug 2013 00:34:13 -0700 Subject: [PATCH 12/13] Added gau alias for git add -u --- git.scmbrc.example | 1 + lib/git/aliases.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/git.scmbrc.example b/git.scmbrc.example index 1f3dbcf..58abc62 100644 --- a/git.scmbrc.example +++ b/git.scmbrc.example @@ -35,6 +35,7 @@ git_alias="g" git_status_shortcuts_alias="gs" git_add_shortcuts_alias="ga" git_add_patch_alias="gap" +git_add_updated_alias="gau" git_show_files_alias="gsf" exec_scmb_expand_args_alias="ge" # 2. Commands that handle paths (with shortcut args expanded) diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 8fa99dc..66a58a7 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -97,6 +97,7 @@ if [ "$git_setup_aliases" = "yes" ]; then __git_alias "$git_diff_word_alias" "git" "diff" "--word-diff" __git_alias "$git_diff_cached_alias" "git" "diff" "--cached" __git_alias "$git_add_patch_alias" "git" "add" "-p" + __git_alias "$git_add_updated_alias" "git" "add" "-u" __git_alias "$git_difftool_alias" "git" "difftool" # Custom default format for git log git_log_command="log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" From c37073cbc682504243a20e34ba35b46878500fec Mon Sep 17 00:00:00 2001 From: Alex Galonsky Date: Sun, 18 Aug 2013 05:00:42 +0000 Subject: [PATCH 13/13] Using git rev-parse --show-toplevel to find repo root --- lib/git/status_shortcuts.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git/status_shortcuts.rb b/lib/git/status_shortcuts.rb index 9f2e4e3..f0e3287 100644 --- a/lib/git/status_shortcuts.rb +++ b/lib/git/status_shortcuts.rb @@ -20,7 +20,7 @@ # # 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 --show-toplevel 2> /dev/null`.strip @git_status = `\git status --porcelain 2> /dev/null`