@@ -104,46 +104,47 @@ git_delete_interactive() {
104
104
return 0
105
105
fi
106
106
fi
107
- echo " Selected branch: $selected_branch "
108
107
109
- remote_branch_info=" $( __gdi_get_info_remote_branch $selected_branch ) "
110
- if [ -n " $remote_branch_info " ] && [ $only_local_branch = false ]
108
+ if [ $only_remote_branch = false]
111
109
then
112
- remote_branch_name=" $( echo $remote_branch_info | cut -d' ' -f1) "
113
- up_to_date_with_remote=" $( echo $remote_branch_info | cut -d' ' -f2) "
114
-
115
- if [ $up_to_date_with_remote = true ]
110
+ remote_branch_info=" $( __gdi_get_info_remote_branch $selected_branch ) "
111
+ if [ -n " $remote_branch_info " ] && [ $only_local_branch = false ]
116
112
then
117
- echo " Deleting remote branch $remote_branch_name "
118
- git push --delete $( echo $remote_branch_name | sed ' s|/| |' )
119
- else
120
- echo " Remote branch $remote_branch_name is not up-to-date with the local tracking branch $selected_branch "
121
- echo -n " Delete it anyway? [y/n] "
122
- read delete_anyway
123
- if [[ " $delete_anyway " =~ [yY] ]]
113
+ remote_branch_name=" $( echo $remote_branch_info | cut -d' ' -f1) "
114
+ up_to_date_with_remote=" $( echo $remote_branch_info | cut -d' ' -f2) "
115
+
116
+ if [ $up_to_date_with_remote = true ]
124
117
then
125
- echo " Deleting remote branch $remote_branch_name "
126
- git push --delete $( echo $remote_branch_name | sed ' s|/| |' )
118
+ __gdi_delete_branch --remote $remote_branch_name
127
119
else
128
- echo " Not deleting remote branch $remote_branch_name "
120
+ echo " Remote branch $remote_branch_name is not up-to-date with the local tracking branch $selected_branch "
121
+ echo -n " Delete it anyway? [y/n] "
122
+ read delete_anyway
123
+ if [[ " $delete_anyway " =~ [yY] ]]
124
+ then
125
+ __gdi_delete_branch --remote $remote_branch_name
126
+ else
127
+ echo " Not deleting remote branch $remote_branch_name "
128
+ fi
129
129
fi
130
130
fi
131
- fi
132
131
133
- if [ " $selected_branch " = " $( git_current_branch) " ]
134
- then
135
- echo " Cannot delete current local branch. Please checkout another branch and retry."
136
- return 1
137
- else
138
- echo -n " Delete local branch $selected_branch (the last copy of the work)? [y/N] "
139
- read delete_local_branch
140
- if [[ " $delete_local_branch " =~ [yY] ]]
132
+ if [ " $selected_branch " = " $( git_current_branch) " ]
141
133
then
142
- echo " Deleting local branch $selected_branch "
143
- git branch -D $selected_branch
134
+ echo " Cannot delete current local branch. Please checkout another branch and retry. "
135
+ return 1
144
136
else
145
- echo " Not deleting local branch $selected_branch "
137
+ echo -n " Delete local branch $selected_branch (the last copy of the work)? [y/N] "
138
+ read delete_local_branch
139
+ if [[ " $delete_local_branch " =~ [yY] ]]
140
+ then
141
+ __gdi_delete_branch --local $selected_branch
142
+ else
143
+ echo " Not deleting local branch $selected_branch "
144
+ fi
146
145
fi
146
+ else
147
+ echo " TODO: delete only remote $selected_branch "
147
148
fi
148
149
fi
149
150
fi
@@ -170,3 +171,38 @@ __gdi_get_info_remote_branch() {
170
171
fi
171
172
fi
172
173
}
174
+
175
+ __gdi_delete_branch () {
176
+ local_branch=false
177
+ remote_branch=false
178
+ for arg in " $@ "
179
+ do
180
+ shift
181
+ if [ " $arg " = " --local" ]
182
+ then
183
+ local_branch=true
184
+ continue
185
+ elif [ " $arg " = " --remote" ]
186
+ then
187
+ remote_branch=true
188
+ continue
189
+ fi
190
+ set -- " $@ " " $arg "
191
+ done
192
+
193
+ if [ " $# " -ne 1 ]
194
+ then
195
+ echo " Internal error: $0 received an incorrect number of parameters."
196
+ return 1
197
+ fi
198
+
199
+ if [ $local_branch = true ]
200
+ then
201
+ echo " Deleting local branch $1 "
202
+ git branch -D " $1 "
203
+ elif [ $remote_branch = true ]
204
+ then
205
+ echo " Deleting remote branch $1 "
206
+ git push --delete $( echo $1 | sed ' s|/| |' )
207
+ fi
208
+ }
0 commit comments