git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Moritz Baumann via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Luke Diamand <luke@diamand.org>,
	Moritz Baumann <moritz.baumann@sap.com>
Subject: Re: [PATCH 2/2] git-p4: fix error handling in P4Unshelve.renameBranch()
Date: Wed, 20 Jul 2022 09:18:03 -0700	[thread overview]
Message-ID: <xmqqa6934v2c.fsf@gitster.g> (raw)
In-Reply-To: <69c9fd5fbec859c2cced95930ac4d427a09aee90.1658298900.git.gitgitgadget@gmail.com> (Moritz Baumann via GitGitGadget's message of "Wed, 20 Jul 2022 06:34:59 +0000")

"Moritz Baumann via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Moritz Baumann <moritz.baumann@sap.com>
>
> The error handling code referenced a variable that does not exist.
> Also, the condition could never evaluate to True.



>
> Signed-off-by: Moritz Baumann <moritz.baumann@sap.com>
> ---
>  git-p4.py | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/git-p4.py b/git-p4.py
> index 1de3d6f1cd4..8f20d15f272 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -4369,19 +4369,16 @@ class P4Unshelve(Command):
>      def renameBranch(self, branch_name):
>          """Rename the existing branch to branch_name.N ."""
>  
> -        found = True

This has to be initialized to False, because ...

>          for i in range(0, 1000):
>              backup_branch_name = "{0}.{1}".format(branch_name, i)
>              if not gitBranchExists(backup_branch_name):
>                  # Copy ref to backup
>                  gitUpdateRef(backup_branch_name, branch_name)
>                  gitDeleteRef(branch_name)
> -                found = True
>                  print("renamed old unshelve branch to {0}".format(backup_branch_name))

... we flip it to True when we find an available unused name and
break out ...

>                  break
> -
> -        if not found:
> -            sys.exit("gave up trying to rename existing branch {0}".format(sync.branch))

... so that we can complain when we didn't find anything usable.

So a minimum fix would be to initialize found correctly, and
rewriting the logic to use "for ... else" is an unrelated style
change.  The version using "for ... else" may be more idiomatic
Python, and I do not think people would mind it, but it should
be mentioned in the proposed log mesage, perhaps like:

    The code tries to see if there is an available name by setting
    the variable 'found' to true when it finds one and breaks out of
    the loop, but because the variable is incorrectly initialized to
    true (it should be initialized to false), the code after the
    loop cannot tell if it found an available name or not.

    It would be the minimal fix to initialize the variable to false,
    but in modern Python it is more idiomatic to add else: clause
    after a loop to write what happens when the loop did not break
    out, so let's do that instead.

    Also, fix the error message that refers to a wrong variable
    name.

or something.

Thanks.  Will queue.

> +        else:
> +            sys.exit("gave up trying to rename existing branch {0}".format(branch_name))
>  
>      def findLastP4Revision(self, starting_point):
>          """Look back from starting_point for the first commit created by git-p4

  reply	other threads:[~2022-07-20 16:18 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20  6:34 [PATCH 0/2] git-p4: fix two undefined variables Moritz Baumann via GitGitGadget
2022-07-20  6:34 ` [PATCH 1/2] git-p4: fix typo in P4Submit.applyCommit() Moritz Baumann via GitGitGadget
2022-07-20 16:09   ` Junio C Hamano
2022-07-20  6:34 ` [PATCH 2/2] git-p4: fix error handling in P4Unshelve.renameBranch() Moritz Baumann via GitGitGadget
2022-07-20 16:18   ` Junio C Hamano [this message]
2022-07-20 16:21     ` Junio C Hamano
2022-07-20 17:01       ` Baumann, Moritz
2022-07-20 18:55 ` [PATCH v2 0/2] git-p4: fix two undefined variables Moritz Baumann via GitGitGadget
2022-07-20 18:55   ` [PATCH v2 1/2] git-p4: fix typo in P4Submit.applyCommit() Moritz Baumann via GitGitGadget
2022-07-20 18:55   ` [PATCH v2 2/2] git-p4: fix error handling in P4Unshelve.renameBranch() Moritz Baumann via GitGitGadget
2022-07-20 20:54   ` [PATCH v2 0/2] git-p4: fix two undefined variables Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqa6934v2c.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=luke@diamand.org \
    --cc=moritz.baumann@sap.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).