Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitflow
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tools
gitflow
Commits
60d3d62f
Commit
60d3d62f
authored
Feb 01, 2010
by
Vincent Driessen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/getopt' into develop
parents
d3bc7602
1b819236
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
62 additions
and
35 deletions
+62
-35
.gitmodules
.gitmodules
+3
-0
git-flow
git-flow
+14
-1
git-flow-feature
git-flow-feature
+44
-34
shFlags
shFlags
+1
-0
No files found.
.gitmodules
0 → 100644
View file @
60d3d62f
[submodule "shFlags"]
path = shFlags
url = git://github.com/nvie/shFlags.git
git-flow
View file @
60d3d62f
...
...
@@ -53,6 +53,13 @@ main() {
exit
1
fi
# use the shFlags project to parse the command line arguments
.
"
$GITFLOW_DIR
/shFlags/src/shFlags"
#DEFINE_boolean quiet 0 'run without output' q
#DEFINE_boolean verbose 0 'run verbose (more output)' v
FLAGS
"
$@
"
||
exit
$?
eval set
--
"
${
FLAGS_ARGV
}
"
# sanity checks
SUBCOMMAND
=
"
$1
"
;
shift
...
...
@@ -73,7 +80,13 @@ main() {
# run command
.
"
$GITFLOW_DIR
/git-flow-
$SUBCOMMAND
"
SUBACTION
=
"
${
1
:-
default
}
"
;
shift
# test if the first argument is a flag (i.e. starts with '-')
# in that case, we interpret this arg as a flag for the default
# command
SUBACTION
=
"default"
if
[
"
$1
"
!=
""
]
&&
!
echo
"
$1
"
|
grep
-q
"^-"
;
then
SUBACTION
=
"
$1
"
;
shift
fi
if
!
typeset
-f
cmd_
$SUBACTION
2>&1
>
/dev/null
;
then
warn
"Unknown subcommand: '
$1
'"
usage
...
...
git-flow-feature
View file @
60d3d62f
...
...
@@ -13,7 +13,6 @@
#
PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
FLAG_FETCH=0
usage() {
echo "usage: git flow feature [list]"
...
...
@@ -42,6 +41,9 @@ cmd_default() {
}
cmd_list() {
DEFINE_boolean verbose 0 'verbose (more) output' v
parse_args "$@"
FEATURE_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
if [ -z "$FEATURE_BRANCHES" ]; then
warn "No feature branches exist."
...
...
@@ -64,13 +66,14 @@ resolve_name_by_prefix() {
MATCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX$1")"
NUM_MATCHES=$(echo "$MATCHES" | wc -l)
if [ -z "$MATCHES" ]; then
# no prefix match, so take it literally
echo "$1"
else
if [ $NUM_MATCHES -eq 1 ]; then
# sed arg looks a bit weird, but $PREFIX should not contain spaces,
# so this one is safe
echo "$MATCHES" | sed "s $PREFIX g"
elif [ $NUM_MATCHES -eq 0 ]; then
# no prefix match, so take it literally
echo "$1"
else
# multiple matches, cannot decide
warn "Multiple branches match for prefix '$1':"
...
...
@@ -79,48 +82,47 @@ resolve_name_by_prefix() {
done
die "Aborting. Use an unambiguous prefix."
fi
}
get_name_by_prefix() {
NAME=$(resolve_name_by_prefix "$1")
if [ -z "$NAME" ]; then
exit 1
fi
}
parse_args_common() {
# 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
BASE="${2:-$DEVELOP_BRANCH}"
require_name() {
if [ "$NAME" = "" ]; then
echo "Missing argument <name>
.
"
echo "Missing argument <name>"
usage
exit 1
fi
BRANCH=$PREFIX$NAME
}
parse_args_with_name_prefix() {
get_name_by_prefix "$1"
parse_args_common
expand_name_arg_prefix() {
require_name
NAME=$(resolve_name_by_prefix "$NAME")
if echo "$NAME" | grep -q "^[ \t\n\r]+$"; then
exit 1
fi
BRANCH=$PREFIX$NAME
}
parse_args() {
# parse options
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"
# read arguments into global variables
NAME="$1"
parse_args_common
BASE="${2:-$DEVELOP_BRANCH}"
}
cmd_start() {
DEFINE_boolean fetch 0 'fetch from origin before performing local operation' F
parse_args "$@"
require_name
# sanity checks
gitflow_require_clean_working_tree
gitflow_require_branch_absent $BRANCH
# update the local repo with remote changes, if asked
if [ $FLAG
_FETCH
-eq 1 ]; then
if [ $FLAG
S_fetch
-eq 1 ]; then
git fetch -q $ORIGIN $DEVELOP_BRANCH
fi
...
...
@@ -141,7 +143,11 @@ cmd_start() {
}
cmd_finish() {
parse_args_with_name_prefix "$@"
DEFINE_boolean fetch 0 'fetch from origin before performing local operation' F
DEFINE_boolean rebase 0 'rebase instead of merge' r
DEFINE_boolean squash 0 'squash all commits when rebasing (implies --rebase)' s
parse_args "$@"
expand_name_arg_prefix
# sanity checks
gitflow_require_branch $BRANCH
...
...
@@ -190,7 +196,7 @@ cmd_finish() {
gitflow_require_clean_working_tree
# update local repo with remote changes first, if asked
if [ $FLAG
_FETCH
-eq 1 ]; then
if [ $FLAG
S_fetch
-eq 1 ]; then
git fetch -q $ORIGIN $BRANCH
fi
...
...
@@ -249,6 +255,7 @@ helper_finish_cleanup() {
cmd_publish() {
parse_args "$@"
expand_name_arg_prefix
# sanity checks
gitflow_require_clean_working_tree
...
...
@@ -275,6 +282,7 @@ cmd_publish() {
cmd_track() {
parse_args "$@"
require_name
# sanity checks
gitflow_require_clean_working_tree
...
...
@@ -293,7 +301,9 @@ cmd_track() {
}
cmd_diff() {
parse_args_with_name_prefix "$@"
parse_args "$@"
expand_name_arg_prefix
# TODO: if this feature has been based on a non-develop branch, we really
# should not be comparing to $DEVELOP. How to deal with this?
git diff $DEVELOP_BRANCH..$BRANCH
...
...
shFlags
@
2fb06af1
Subproject commit 2fb06af13de884e9680f14a00c82e52a67c867f1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment