Merge branch 'feature/verbose-feature-list' into develop
diff --git a/git-flow-feature b/git-flow-feature
index 5e42b15..819906d 100644
--- a/git-flow-feature
+++ b/git-flow-feature
@@ -40,6 +40,8 @@
cmd_list "$@"
}
+max() { if [ "$1" -gt "$2" ]; then echo "$1"; else echo "$2"; fi; }
+
cmd_list() {
DEFINE_boolean verbose 0 'verbose (more) output' v
parse_args "$@"
@@ -49,7 +51,37 @@
warn "No feature branches exist."
exit 0
fi
- echo "$FEATURE_BRANCHES" | sed "s?^$PREFIX??g"
+
+ SHORT_NAMES=$(echo "$FEATURE_BRANCHES" | sed "s?^$PREFIX??g")
+ if [ $FLAGS_verbose -eq 0 ]; then
+ echo "$SHORT_NAMES"
+ else
+ # determine column width first
+ width=0
+ for branch in $SHORT_NAMES; do
+ len=$(($(echo "$branch" | wc -c) - 1))
+ width=$(max $width $len)
+ done
+ width=$(($width + 3))
+
+ for branch in $SHORT_NAMES; do
+ fullname="$PREFIX$branch"
+ base=$(git merge-base "$fullname" "$DEVELOP_BRANCH")
+ develop_sha=$(git rev-parse "$DEVELOP_BRANCH")
+ branch_sha=$(git rev-parse "$fullname")
+ printf "%-${width}s" "$branch"
+ if [ "$branch_sha" = "$develop_sha" ]; then
+ printf "(no commits yet)"
+ elif [ "$base" = "$branch_sha" ]; then
+ printf "(is behind develop, may ff)"
+ elif [ "$base" = "$develop_sha" ]; then
+ printf "(based on latest develop)"
+ else
+ printf "(may be rebased)"
+ fi
+ echo
+ done
+ fi
}
cmd_help() {