Re: [RFC/PATCH 2/2] branch: allow -f with -m and -d

2014-12-05 Thread Michael J Gruber
Junio C Hamano schrieb am 04.12.2014 um 20:13:
 Michael J Gruber g...@drmicha.warpmail.net writes:
 
 -f/--force is the standard way to force an action, and is used by branch
 for the recreation of existing branches, but not for deleting unmerged
 branches nor for renaming to an existing branch.

 Make -m -f equivalent to -M and -d -f equivalent to -D, i.e.
 allow -f/--force to be used with -m/-d also.
 
 I like that goal.  And I agree with your s/force_create/force/g
 remark on the cover, too.
 
 
 
 Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
 ---
  builtin/branch.c  | 9 +++--
  t/t3200-branch.sh | 5 +
  2 files changed, 12 insertions(+), 2 deletions(-)

 diff --git a/builtin/branch.c b/builtin/branch.c
 index 3b79c50..8ea04d7 100644
 --- a/builtin/branch.c
 +++ b/builtin/branch.c
 @@ -848,7 +848,7 @@ int cmd_branch(int argc, const char **argv, const char 
 *prefix)
  OPT_BOOL('l', create-reflog, reflog, N_(create the branch's 
 reflog)),
  OPT_BOOL(0, edit-description, edit_description,
   N_(edit the description for the branch)),
 -OPT__FORCE(force_create, N_(force creation (when already 
 exists))),
 +OPT__FORCE(force_create, N_(force creation, move/rename, 
 deletion)),
  {
  OPTION_CALLBACK, 0, no-merged, merge_filter_ref,
  N_(commit), N_(print only not merged branches),
 @@ -891,7 +891,7 @@ int cmd_branch(int argc, const char **argv, const char 
 *prefix)
  if (with_commit || merge_filter != NO_FILTER)
  list = 1;
  
 -if (!!delete + !!rename + !!force_create + !!new_upstream +
 +if (!!delete + !!rename + !!new_upstream +
 
 This puzzled me but earlier -f implied creation and no other mode
 (hence it was an error to give it together with delete and other
 modes), but now -f is merely a do forcibly whatever mode of
 operation other option determines that does not conflict.
 
 What should -f -u and -f -l do, then, though?
 
  list + unset_upstream  1)
  usage_with_options(builtin_branch_usage, options);
  

I would say there is nothing to force, so we ignore -f there.
Alternatively, we could warn about that. While I do consider forcing
something that doesn't need force a mistake in other contexts, I would
not apply that thinking to the -f option.

Michael

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 2/2] branch: allow -f with -m and -d

2014-12-05 Thread Junio C Hamano
Michael J Gruber g...@drmicha.warpmail.net writes:

 What should -f -u and -f -l do, then, though?
 
 list + unset_upstream  1)
 usage_with_options(builtin_branch_usage, options);
  

 I would say there is nothing to force, so we ignore -f there.

OK, and that is what the updated code does.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC/PATCH 2/2] branch: allow -f with -m and -d

2014-12-04 Thread Michael J Gruber
-f/--force is the standard way to force an action, and is used by branch
for the recreation of existing branches, but not for deleting unmerged
branches nor for renaming to an existing branch.

Make -m -f equivalent to -M and -d -f equivalent to -D, i.e.
allow -f/--force to be used with -m/-d also.

Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
---
 builtin/branch.c  | 9 +++--
 t/t3200-branch.sh | 5 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index 3b79c50..8ea04d7 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -848,7 +848,7 @@ int cmd_branch(int argc, const char **argv, const char 
*prefix)
OPT_BOOL('l', create-reflog, reflog, N_(create the branch's 
reflog)),
OPT_BOOL(0, edit-description, edit_description,
 N_(edit the description for the branch)),
-   OPT__FORCE(force_create, N_(force creation (when already 
exists))),
+   OPT__FORCE(force_create, N_(force creation, move/rename, 
deletion)),
{
OPTION_CALLBACK, 0, no-merged, merge_filter_ref,
N_(commit), N_(print only not merged branches),
@@ -891,7 +891,7 @@ int cmd_branch(int argc, const char **argv, const char 
*prefix)
if (with_commit || merge_filter != NO_FILTER)
list = 1;
 
-   if (!!delete + !!rename + !!force_create + !!new_upstream +
+   if (!!delete + !!rename + !!new_upstream +
list + unset_upstream  1)
usage_with_options(builtin_branch_usage, options);
 
@@ -904,6 +904,11 @@ int cmd_branch(int argc, const char **argv, const char 
*prefix)
colopts = 0;
}
 
+   if (force_create) {
+   delete *= 2;
+   rename *= 2;
+   }
+
if (delete) {
if (!argc)
die(_(branch name required));
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index 0b3b8f5..ddea498 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -106,6 +106,11 @@ test_expect_success 'git branch -M o/q o/p should work 
when o/p exists' '
git branch -M o/q o/p
 '
 
+test_expect_success 'git branch -m -f o/q o/p should work when o/p exists' '
+   git branch o/q 
+   git branch -m -f o/q o/p
+'
+
 test_expect_success 'git branch -m q r/q should fail when r exists' '
git branch q 
git branch r 
-- 
2.2.0.rc3.286.g888a711

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 2/2] branch: allow -f with -m and -d

2014-12-04 Thread Junio C Hamano
Michael J Gruber g...@drmicha.warpmail.net writes:

 -f/--force is the standard way to force an action, and is used by branch
 for the recreation of existing branches, but not for deleting unmerged
 branches nor for renaming to an existing branch.

 Make -m -f equivalent to -M and -d -f equivalent to -D, i.e.
 allow -f/--force to be used with -m/-d also.

I like that goal.  And I agree with your s/force_create/force/g
remark on the cover, too.



 Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
 ---
  builtin/branch.c  | 9 +++--
  t/t3200-branch.sh | 5 +
  2 files changed, 12 insertions(+), 2 deletions(-)

 diff --git a/builtin/branch.c b/builtin/branch.c
 index 3b79c50..8ea04d7 100644
 --- a/builtin/branch.c
 +++ b/builtin/branch.c
 @@ -848,7 +848,7 @@ int cmd_branch(int argc, const char **argv, const char 
 *prefix)
   OPT_BOOL('l', create-reflog, reflog, N_(create the branch's 
 reflog)),
   OPT_BOOL(0, edit-description, edit_description,
N_(edit the description for the branch)),
 - OPT__FORCE(force_create, N_(force creation (when already 
 exists))),
 + OPT__FORCE(force_create, N_(force creation, move/rename, 
 deletion)),
   {
   OPTION_CALLBACK, 0, no-merged, merge_filter_ref,
   N_(commit), N_(print only not merged branches),
 @@ -891,7 +891,7 @@ int cmd_branch(int argc, const char **argv, const char 
 *prefix)
   if (with_commit || merge_filter != NO_FILTER)
   list = 1;
  
 - if (!!delete + !!rename + !!force_create + !!new_upstream +
 + if (!!delete + !!rename + !!new_upstream +

This puzzled me but earlier -f implied creation and no other mode
(hence it was an error to give it together with delete and other
modes), but now -f is merely a do forcibly whatever mode of
operation other option determines that does not conflict.

What should -f -u and -f -l do, then, though?

   list + unset_upstream  1)
   usage_with_options(builtin_branch_usage, options);
  
 @@ -904,6 +904,11 @@ int cmd_branch(int argc, const char **argv, const char 
 *prefix)
   colopts = 0;
   }
  
 + if (force_create) {
 + delete *= 2;
 + rename *= 2;
 + }
 +
   if (delete) {
   if (!argc)
   die(_(branch name required));
 diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
 index 0b3b8f5..ddea498 100755
 --- a/t/t3200-branch.sh
 +++ b/t/t3200-branch.sh
 @@ -106,6 +106,11 @@ test_expect_success 'git branch -M o/q o/p should work 
 when o/p exists' '
   git branch -M o/q o/p
  '
  
 +test_expect_success 'git branch -m -f o/q o/p should work when o/p exists' '
 + git branch o/q 
 + git branch -m -f o/q o/p
 +'
 +
  test_expect_success 'git branch -m q r/q should fail when r exists' '
   git branch q 
   git branch r 
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html