Merge branch 'feature/no-connectivity-for-feature-branches' into develop
diff --git a/git-flow-feature b/git-flow-feature
index 2a3e39d..b9f18b7 100644
--- a/git-flow-feature
+++ b/git-flow-feature
@@ -13,6 +13,7 @@
 #
 
 PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
+FLAG_FETCH=0
 
 usage() {
 	echo "usage: git flow feature [list]"
@@ -55,6 +56,10 @@
 }
 
 parse_args() {
+	# TODO: When we have a nice structured way of parsing flags with getopt,
+	# implement the following flags:
+	# --fetch, to set FLAG_FETCH=1
+	# --no-fetch, to set FLAG_FETCH=0
 	NAME="$1"
 	BASE="${2:-$DEVELOP_BRANCH}"
 	if [ "$NAME" = "" ]; then
@@ -71,11 +76,14 @@
 	# sanity checks
 	gitflow_require_clean_working_tree
 	gitflow_require_branch_absent $BRANCH
-	if [ "$BASE" = "$DEVELOP_BRANCH" ]; then
+
+	# update the local repo with remote changes, if asked
+	if [ $FLAG_FETCH -eq 1 ]; then
 		git fetch -q $ORIGIN $DEVELOP_BRANCH
-		gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
 	fi
 
+	gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
+
 	# create branch
 	git checkout -b $BRANCH $BASE
 
@@ -96,7 +104,12 @@
 	# sanity checks
 	gitflow_require_clean_working_tree
 	gitflow_require_branch $BRANCH
-	git fetch -q $ORIGIN
+
+	# update local repo with remote changes first, if asked
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $BRANCH
+	fi
+
 	if has $ORIGIN/$BRANCH $REMOTE_BRANCHES; then
 		gitflow_require_branches_equal $BRANCH $ORIGIN/$BRANCH
 	fi
diff --git a/git-flow-hotfix b/git-flow-hotfix
index ef3fac3..51ca9e1 100644
--- a/git-flow-hotfix
+++ b/git-flow-hotfix
@@ -14,6 +14,7 @@
 
 VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
 PREFIX=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
+FLAG_FETCH=1
 
 usage() {
 	echo "usage: git flow hotfix [list]"
@@ -50,6 +51,10 @@
 }
 
 parse_args() {
+	# TODO: When we have a nice structured way of parsing flags with getopt,
+	# implement the following flags:
+	# --fetch, to set FLAG_FETCH=1
+	# --no-fetch, to set FLAG_FETCH=0
 	VERSION="$1"
 	BASE="${2:-$MASTER_BRANCH}"
 	if [ "$VERSION" = "" ]; then
@@ -65,7 +70,9 @@
 
 	# sanity checks
 	gitflow_require_clean_working_tree
-	git fetch -q $ORIGIN
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $MASTER_BRANCH
+	fi
 	gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
 	gitflow_require_branch_absent $BRANCH
 
@@ -91,8 +98,10 @@
 
 	# sanity checks
 	gitflow_require_clean_working_tree
-	git fetch -q $ORIGIN $MASTER_BRANCH
-	git fetch -q $ORIGIN $DEVELOP_BRANCH
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $MASTER_BRANCH
+		git fetch -q $ORIGIN $DEVELOP_BRANCH
+	fi
 	gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
 	gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
 
diff --git a/git-flow-release b/git-flow-release
index 7a102d1..c7c9a08 100644
--- a/git-flow-release
+++ b/git-flow-release
@@ -14,6 +14,7 @@
 
 VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
 PREFIX=$(git config --get gitflow.prefix.release || echo release/)
+FLAG_FETCH=1
 
 usage() {
 	echo "usage: git flow release [list]"
@@ -51,6 +52,10 @@
 }
 
 parse_args() {
+	# TODO: When we have a nice structured way of parsing flags with getopt,
+	# implement the following flags:
+	# --fetch, to set FLAG_FETCH=1
+	# --no-fetch, to set FLAG_FETCH=0
 	VERSION="$1"
 	if [ "$VERSION" = "" ]; then
 		echo "Missing argument <version>."
@@ -65,7 +70,9 @@
 
 	# sanity checks
 	gitflow_require_clean_working_tree
-	git fetch -q $ORIGIN
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $DEVELOP_BRANCH
+	fi
 	gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
 	gitflow_require_branch_absent $BRANCH
 
@@ -91,7 +98,10 @@
 
 	# sanity checks
 	gitflow_require_clean_working_tree
-	git fetch -q $ORIGIN
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $MASTER_BRANCH
+		git fetch -q $ORIGIN $DEVELOP_BRANCH
+	fi
 	gitflow_require_branches_equal $MASTER_BRANCH $ORIGIN/$MASTER_BRANCH
 	gitflow_require_branches_equal $DEVELOP_BRANCH $ORIGIN/$DEVELOP_BRANCH
 
diff --git a/git-flow-support b/git-flow-support
index a89b05f..4c33b2d 100644
--- a/git-flow-support
+++ b/git-flow-support
@@ -14,6 +14,7 @@
 
 VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
 PREFIX=$(git config --get gitflow.prefix.support || echo support/)
+FLAG_FETCH=1
 
 usage() {
 	echo "usage: git flow support [list]"
@@ -39,6 +40,10 @@
 }
 
 parse_args() {
+	# TODO: When we have a nice structured way of parsing flags with getopt,
+	# implement the following flags:
+	# --fetch, to set FLAG_FETCH=1
+	# --no-fetch, to set FLAG_FETCH=0
 	VERSION="$1"
 	BASE="${2:-${VERSION_PREFIX}${VERSION}}"
 	if [ "$VERSION" = "" ]; then
@@ -55,12 +60,18 @@
 	# sanity checks
 	gitflow_require_clean_working_tree
 
+	# fetch remote changes
+	if [ $FLAG_FETCH -eq 1 ]; then
+		git fetch -q $ORIGIN $BASE
+	fi
+	gitflow_require_branches_equal $BRANCH $ORIGIN/$BRANCH
+
 	# create branch
 	git checkout -b $BRANCH $BASE
 
 	# publish branch
 	git push $ORIGIN $BRANCH:refs/heads/$BRANCH
-	git fetch -q $ORIGIN
+
 	git config branch.$BRANCH.remote $ORIGIN
 	git config branch.$BRANCH.merge refs/heads/$BRANCH
 	git checkout $BRANCH