[PATCH][GSOC2014] install_branch_config: change logical chain to lookup table
- From
TamerTas <tamertas@outlook.com>
- Date
- Mar 14, 2014, 21:30 UTC
- Message-ID
- <BLU0-SMTP430B54F52C27DDA0C405A5D5700@phx.gbl>
- In-Reply-To
- <CAPig+cRCKCcfYQVM=pyXUQtTsbaD8g=OKff+K5+Bd+kBgqAufg@mail.gmail.com>
Signed-off-by: TamerTas <tamertas@outlook.com> ---
Thanks again for the feedback it's been a great learning experience. Comments Below :)
I have refactored the commit [1] to * suggested changes [2]. format-patch was placing 2 hyphens instead of 3 but it's fixed now. I've turned the table into a multidimensional one and I didn't put the inner braces since this was used method in other multidimensional arrays throughout the project. I've also changed shortname to short_name since that seems to be how variables are named in this project. It appears that table-driven code might be more readable after all.
[1]http://git.661346.n2.nabble.com/PATCH-GSOC2014-install-branch-config-change-logical-chain-to-lookup-table-tp7605550.html [2]http://git.661346.n2.nabble.com/PATCH-GSOC2014-install-branch-config-change-logical-chain-to-lookup-table-tp7605550p7605605.html --- branch.c | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-)
diff --git a/branch.c b/branch.c index 723a36b..eab6fa4 100644 --- a/branch.c +++ b/branch.c @@ -49,13 +49,27 @@ static int should_setup_rebase(const char *origin) void install_branch_config(int flag, const char *local, const char *origin, const char *remote) { - const char *shortname = remote + 11; + const char *short_name = remote + 11; + const char *setup_message[][2][2] = { + N_("Branch %s set up to track local ref %s."), + N_("Branch %s set up to track local branch %s."), + N_("Branch %s set up to track remote ref %s."), + N_("Branch %s set up to track remote branch %s from %s."), + N_("Branch %s set up to track local ref %s by rebasing."), + N_("Branch %s set up to track local branch %s by rebasing."), + N_("Branch %s set up to track remote ref %s by rebasing."), + N_("Branch %s set up to track remote branch %s from %s by rebasing.") + }; + int remote_is_branch = starts_with(remote, "refs/heads/"); struct strbuf key = STRBUF_INIT; int rebasing = should_setup_rebase(origin); + const char *remote_name = remote_is_branch? short_name : remote; + const char *message = setup_message[!!rebasing][!!origin][!!remote_is_branch]; + if (remote_is_branch - && !strcmp(local, shortname) + && !strcmp(local, short_name) && !origin) { warning(_("Not setting branch %s as its own upstream."), local); @@ -77,29 +91,7 @@ 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); - else - die("BUG: impossible combination of %d and %p", - remote_is_branch, origin); + printf_ln(_(message), local, remote_name, origin); } } --- 1.7.9.5