[PATCH v3] install_branch_config: simplify verbose diagnostic logic

2014-03-11 Thread Paweł Wawruch
Replace the chain of if statements with table of strings.

Signed-off-by: Paweł Wawruch pa...@aleg.pl
---
I changed the commit message. Logic of table has changed. To make it more
clear I added three dimensions of the table. 

[1]: http://thread.gmane.org/gmane.comp.version-control.git/243502
[2]: http://thread.gmane.org/gmane.comp.version-control.git/243849

 branch.c | 42 --
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/branch.c b/branch.c
index 723a36b..741551a 100644
--- a/branch.c
+++ b/branch.c
@@ -53,6 +53,21 @@ void install_branch_config(int flag, const char *local, 
const char *origin, cons
int remote_is_branch = starts_with(remote, refs/heads/);
struct strbuf key = STRBUF_INIT;
int rebasing = should_setup_rebase(origin);
+   const char *message[][2][2] = {{{
+   N_(Branch %s set up to track remote branch %s from %s 
by rebasing.),
+   N_(Branch %s set up to track remote branch %s from 
%s.),
+   },{
+   N_(Branch %s set up to track local branch %s by 
rebasing.),
+   N_(Branch %s set up to track local branch %s.),
+   }},{{
+   N_(Branch %s set up to track remote ref %s by 
rebasing.),
+   N_(Branch %s set up to track remote ref %s.),
+   },{
+   N_(Branch %s set up to track local ref %s by 
rebasing.),
+   N_(Branch %s set up to track local ref %s.)
+   }}};
+   const char *name = remote_is_branch ? remote : shortname;
+   int message_number;
 
if (remote_is_branch
 !strcmp(local, shortname)
@@ -77,29 +92,12 @@ void install_branch_config(int flag, const char *local, 
const char *origin, cons
strbuf_release(key);
 
if (flag  BRANCH_CONFIG_VERBOSE) {
-   if (remote_is_branch  origin)
-   printf_ln(rebasing ?
- _(Branch %s set up to track remote branch %s 
from %s by rebasing.) :
- _(Branch %s set up to track remote branch %s 
from %s.),
- local, shortname, origin);
-   else if (remote_is_branch  !origin)
-   printf_ln(rebasing ?
- _(Branch %s set up to track local branch %s 
by rebasing.) :
- _(Branch %s set up to track local branch 
%s.),
- local, shortname);
-   else if (!remote_is_branch  origin)
-   printf_ln(rebasing ?
- _(Branch %s set up to track remote ref %s by 
rebasing.) :
- _(Branch %s set up to track remote ref %s.),
- local, remote);
-   else if (!remote_is_branch  !origin)
-   printf_ln(rebasing ?
- _(Branch %s set up to track local ref %s by 
rebasing.) :
- _(Branch %s set up to track local ref %s.),
- local, remote);
+   if (origin  remote_is_branch)
+   
printf_ln(_(messages[!remote_is_branch][!origin][!rebasing]),
+   local, name, origin);
else
-   die(BUG: impossible combination of %d and %p,
-   remote_is_branch, origin);
+   
printf_ln(_(messages[!remote_is_branch][!origin][!rebasing]),
+   local, name);
}
 }
 
-- 
1.8.3.2

--
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: [PATCH v3] install_branch_config: simplify verbose diagnostic logic

2014-03-11 Thread Junio C Hamano
Paweł Wawruch pa...@aleg.pl writes:

 Replace the chain of if statements with table of strings.

 Signed-off-by: Paweł Wawruch pa...@aleg.pl
 ---
 I changed the commit message. Logic of table has changed. To make it more
 clear I added three dimensions of the table. 

I am not sure if the message is diagnostic; it looks more like
reminder text to me.


 diff --git a/branch.c b/branch.c
 index 723a36b..741551a 100644
 --- a/branch.c
 +++ b/branch.c
 @@ -53,6 +53,21 @@ void install_branch_config(int flag, const char *local, 
 const char *origin, cons
   int remote_is_branch = starts_with(remote, refs/heads/);
   struct strbuf key = STRBUF_INIT;
   int rebasing = should_setup_rebase(origin);
 + const char *message[][2][2] = {{{
 + N_(Branch %s set up to track remote branch %s from %s 
 by rebasing.),
 + N_(Branch %s set up to track remote branch %s from 
 %s.),
 + },{
 + N_(Branch %s set up to track local branch %s by 
 rebasing.),
 + N_(Branch %s set up to track local branch %s.),
 + }},{{
 + N_(Branch %s set up to track remote ref %s by 
 rebasing.),
 + N_(Branch %s set up to track remote ref %s.),
 + },{
 + N_(Branch %s set up to track local ref %s by 
 rebasing.),
 + N_(Branch %s set up to track local ref %s.)
 + }}};

I almost agree with the above use of a strange brace opening/closing
convention in order to reduce the indentation levels [*1*]
but then perhaps the above can be dedented even further?

 + const char *message[][2][2] = {{{
 + N_(Branch %s set up to track remote branch %s from %s by 
 rebasing.),
 + N_(Branch %s set up to track remote branch %s from %s.),
 + }, {
 + N_(Branch %s set up to track local branch %s by rebasing.),
 + N_(Branch %s set up to track local branch %s.),
 + }}, {{
 + N_(Branch %s set up to track remote ref %s by rebasing.),
 + N_(Branch %s set up to track remote ref %s.),
 + }, {
 + N_(Branch %s set up to track local ref %s by rebasing.),
 + N_(Branch %s set up to track local ref %s.)
 + }}};


 + const char *name = remote_is_branch ? remote : shortname;
 + int message_number;

Do you still need this variable after making it a multi-dimentional
array?


[Footnote]

*1* i.e. otherwise we would need something like

message[][][] = {
{
{
...,
...
},
{
...,
...
},
},
...
};
--
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