speed up metadata scanning a lot by avoiding unnecessary shell commands and make...
[openwrt/svn-archive/archive.git] / scripts / env
index 1aee4b323b82b7565ef867aba36cb57152aa4b71..65594f9a5d04b74f7372bf65ed699615426a817a 100755 (executable)
@@ -103,6 +103,7 @@ env_diff() {
        env_init
        env_sync_data
        git diff --cached
+    env_link_config
 }
 
 env_save() {
@@ -118,12 +119,12 @@ env_revert() {
 }
 
 env_ask_sync() {
+       env_sync_data
        LINES="$(env_diff | wc -l)" # implies env_init
        [ "$LINES" -gt 0 ] && {
                if ask_bool 1 "Do you want to save your changes"; then
                        env_sync
                else
-                       env_sync_data
                        env_do_reset
                fi
        }
@@ -150,7 +151,6 @@ env_delete() {
        local name="${1##*/}"
        env_init
        [ -z "$name" ] && usage
-       [ -f "$ENVDIR/.git/refs/heads/$name" ] || error "environment '$name' not found"
        branch="$(git branch | grep '^\* ' | awk '{print $2}')"
        [ "$name" = "$branch" ] && error "cannot delete the currently selected environment"
        git branch -D "$name"
@@ -159,11 +159,10 @@ env_delete() {
 env_switch() {
        local name="${1##*/}"
        [ -z "$name" ] && usage
-       [ -f "$ENVDIR/.git/refs/heads/$name" ] || error "environment '$name' not found"
 
        env_init
        env_ask_sync
-       git checkout "$name"
+       git checkout "$name" || error "environment '$name' not found"
        env_link_config
 }