X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/eeddc0fb462be32e9200610778d87a5d0b7a0b94..ebd96b67234eec425fa6707b687440ba2fc1d485:/scripts/env

diff --git a/scripts/env b/scripts/env
index 1aee4b323..882b42a49 100755
--- a/scripts/env
+++ b/scripts/env
@@ -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
 }
 
@@ -193,7 +192,8 @@ env_new() {
 	if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then
 		if ask_bool 1 "Do you want to keep your current config and files?"; then
 			[ -d "$BASEDIR/files" -a \! -L "$BASEDIR/files" ] && {
-				mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev/null
+				mkdir -p "$ENVDIR/files"
+				mv "$BASEDIR/files/*" "$ENVDIR/files/" 2>/dev/null
 				rmdir "$BASEDIR/files"
 			}
 			env_sync