Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: New Variable git-p4.p4program #465

Closed
wants to merge 0 commits into from

Conversation

seraphire
Copy link

@seraphire seraphire commented Nov 13, 2019

Issue: Using git-p4.py on Windows does not resolve properly to the p4.exe binary in all instances.

Changes since v1:
Commit: (dc6817e) 2019-11-14

Renamed the variable "git-p4.binary" to "git-p4.p4program" per the thread discussion.

v1:

Two new code features are added to resolve the p4 executable location:

  1. A new variable, git-p4.binary, has been added that takes precedence over the default
    p4 executable name. If this git option is set and the path.exists() passes for this file
    it will be used as executable for the system.popen calls.

  2. If the new variable git-p4.binary is not set, the program checks if the operating system
    is Windows. If it is, the executable is changed to 'p4.exe'. All other operating systems
    (those that do not report 'Windows' in the platform.system() call) continue to use the
    current executable of 'p4'.

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 13, 2019

Welcome to GitGitGadget

Hi @seraphire, and welcome to GitGitGadget, the GitHub App to send patch series to the Git mailing list from GitHub Pull Requests.

Please make sure that this Pull Request has a good description, as it will be used as cover letter.

Also, it is a good idea to review the commit messages one last time, as the Git project expects them in a quite specific form:

  • the lines should not exceed 76 columns,
  • the first line should be like a header and typically start with a prefix like "tests:" or "commit:", and
  • the commit messages' body should be describing the "why?" of the change.
  • Finally, the commit messages should end in a Signed-off-by: line matching the commits' author.

It is in general a good idea to await the automated test ("Checks") in this Pull Request before contributing the patches, e.g. to avoid trivial issues such as unportable code.

Contributing the patches

Before you can contribute the patches, your GitHub username needs to be added to the list of permitted users. Any already-permitted user can do that, by adding a comment to your PR of the form /allow. A good way to find other contributors is to locate recent pull requests where someone has been /allowed:

Both the person who commented /allow and the PR author are able to /allow you.

An alternative is the channel #git-devel on the FreeNode IRC network:

<newcontributor> I've just created my first PR, could someone please /allow me? https://github.com/gitgitgadget/git/pull/12345
<veteran> newcontributor: it is done
<newcontributor> thanks!

Once on the list of permitted usernames, you can contribute the patches to the Git mailing list by adding a PR comment /submit.

After you submit, GitGitGadget will respond with another comment that contains the link to the cover letter mail in the Git mailing list archive. Please make sure to monitor the discussion in that thread and to address comments and suggestions.

If you want to see what email(s) would be sent for a submit request, add a PR comment /preview to have the email(s) sent to you. You must have a public GitHub email address for this.

If you do not want to subscribe to the Git mailing list just to be able to respond to a mail, you can download the mbox ("raw") file corresponding to the mail you want to reply to from the Git mailing list. If you use GMail, you can upload that raw mbox file via:

curl -g --user "<EMailAddress>:<Password>" --url "imaps://imap.gmail.com/INBOX" -T /path/to/raw.txt

@seraphire
Copy link
Author

/preview

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 13, 2019

Preview email sent as pull.465.git.1573679500.gitgitgadget@gmail.com

@seraphire
Copy link
Author

/submit

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 13, 2019

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 14, 2019

On the Git mailing list, Junio C Hamano wrote (reply to this):

"Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:

> Issue: Using git-p4.py on Windows does not resolve properly to the p4.exe
> binary in all instances.
>
> Two new code features are added to resolve the p4 executable location:
>
>  1. A new variable, git-p4.binary, has been added that takes precedence over
>     the default p4 executable name. If this git option is set and the
>     path.exists() passes for this file it will be used as executable for the 
>     system.popen calls.
>     
>     
>  2. If the new variable git-p4.binary is not set, the program checks if the
>     operating system is Windows. If it is, the executable is changed to
>     'p4.exe'. All other operating systems
>     (those that do not report 'Windows' in the platform.system() call)
>     continue to use the current executable of 'p4'.

I do not use Windows nor git-p4, but the above two changes make
sense to me at the design level.  One thing that needs to be updated
is the configuration variable, though.  It is more in line with the
other parts of the system to name this "git-p4.program", because
binary-ness does not matter much to you, as long as the named thing
works correctly as "p4" program replacement.

Seeing "gpg.program" is used in a similar way, it also is tempting
to call it "p4.program", but no other parts of Git other than
"git-p4" uses P4, and the "git-p4." prefix is to collect variables
related to "git-p4" together, so calling it "p4.program" may not be
a good idea---it would hurt discoverability.  "git-p4.p4program"
may be OK, if we anticipate that git-p4 may need to use (and its
users need to specify paths to) external programs other than "p4",
but it probably is overkill.

Thanks.

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 14, 2019

On the Git mailing list, Luke Diamand wrote (reply to this):

On Thu, 14 Nov 2019 at 02:36, Junio C Hamano <gitster@pobox.com> wrote:
>
> "Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
> > Issue: Using git-p4.py on Windows does not resolve properly to the p4.exe
> > binary in all instances.
> >
> > Two new code features are added to resolve the p4 executable location:
> >
> >  1. A new variable, git-p4.binary, has been added that takes precedence over
> >     the default p4 executable name. If this git option is set and the
> >     path.exists() passes for this file it will be used as executable for the
> >     system.popen calls.
> >
> >
> >  2. If the new variable git-p4.binary is not set, the program checks if the
> >     operating system is Windows. If it is, the executable is changed to
> >     'p4.exe'. All other operating systems
> >     (those that do not report 'Windows' in the platform.system() call)
> >     continue to use the current executable of 'p4'.
>
> I do not use Windows nor git-p4, but the above two changes make
> sense to me at the design level.  One thing that needs to be updated
> is the configuration variable, though.  It is more in line with the
> other parts of the system to name this "git-p4.program", because
> binary-ness does not matter much to you, as long as the named thing
> works correctly as "p4" program replacement.
>
> Seeing "gpg.program" is used in a similar way, it also is tempting
> to call it "p4.program", but no other parts of Git other than
> "git-p4" uses P4, and the "git-p4." prefix is to collect variables
> related to "git-p4" together, so calling it "p4.program" may not be
> a good idea---it would hurt discoverability.  "git-p4.p4program"
> may be OK, if we anticipate that git-p4 may need to use (and its
> users need to specify paths to) external programs other than "p4",
> but it probably is overkill.
>
> Thanks.

There's some trailing whitespace in 98bae, can we get that tidied up?

Otherwise, modulo Junio's comments, it looks good.

I agree that "git-p4.binary" might be harder to discover ("Oh, I
assumed that enabled binary mode!"). p4program should be fine.

@seraphire
Copy link
Author

seraphire commented Nov 14, 2019 via email

@seraphire
Copy link
Author

Renamed the variable "git-p4.binary" to "git-p4.p4program"

@dscho
Copy link
Member

dscho commented Nov 14, 2019

@seraphire sorry, GitGitGadget is not fully bidirectional (yet). You will need to follow the directions given via the (reply to this) link to reply to the mail(s) on the Git mailing list.

@dscho
Copy link
Member

dscho commented Nov 14, 2019

Renamed the variable "git-p4.binary" to "git-p4.p4program"

The convention in GitGitGadget is to edit the PR description by adding a "Changes since v" section, see e.g. #170.

@seraphire
Copy link
Author

seraphire commented Nov 14, 2019 via email

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 14, 2019

On the Git mailing list, Ben Keene wrote (reply to this):

On Thu, Nov 14, 2019 at 4:52 AM Luke Diamand <luke@diamand.org> wrote:
>
> On Thu, 14 Nov 2019 at 02:36, Junio C Hamano <gitster@pobox.com> wrote:
> >
> > "Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:
> >
> > > Issue: Using git-p4.py on Windows does not resolve properly to the p4.exe
> > > binary in all instances.
> > >
> > > Two new code features are added to resolve the p4 executable location:
> > >
> > >  1. A new variable, git-p4.binary, has been added that takes precedence over
> > >     the default p4 executable name. If this git option is set and the
> > >     path.exists() passes for this file it will be used as executable for the
> > >     system.popen calls.
> > >
> > >
> > >  2. If the new variable git-p4.binary is not set, the program checks if the
> > >     operating system is Windows. If it is, the executable is changed to
> > >     'p4.exe'. All other operating systems
> > >     (those that do not report 'Windows' in the platform.system() call)
> > >     continue to use the current executable of 'p4'.
> >
> > I do not use Windows nor git-p4, but the above two changes make
> > sense to me at the design level.  One thing that needs to be updated
> > is the configuration variable, though.  It is more in line with the
> > other parts of the system to name this "git-p4.program", because
> > binary-ness does not matter much to you, as long as the named thing
> > works correctly as "p4" program replacement.
> >
> > Seeing "gpg.program" is used in a similar way, it also is tempting
> > to call it "p4.program", but no other parts of Git other than
> > "git-p4" uses P4, and the "git-p4." prefix is to collect variables
> > related to "git-p4" together, so calling it "p4.program" may not be
> > a good idea---it would hurt discoverability.  "git-p4.p4program"
> > may be OK, if we anticipate that git-p4 may need to use (and its
> > users need to specify paths to) external programs other than "p4",
> > but it probably is overkill.
> >
> > Thanks.
>
> There's some trailing whitespace in 98bae, can we get that tidied up?
>
> Otherwise, modulo Junio's comments, it looks good.
>
> I agree that "git-p4.binary" might be harder to discover ("Oh, I
> assumed that enabled binary mode!"). p4program should be fine.

I have updated the Pull Request to change the variable name from
'binary' to 'p4program'.  I have also updated the PR description.

Here's the new commit message:

Issue: Using git-p4.py on Windows does not resolve properly to the
p4.exe binary in all instances.

Changes since v1:
Commit: (dc6817e) 2019-11-14

Renamed the variable "git-p4.binary" to "git-p4.p4program"

v1:

Two new code features are added to resolve the p4 executable location:

A new variable, git-p4.binary, has been added that takes precedence
over the default
p4 executable name. If this git option is set and the path.exists()
passes for this file
it will be used as executable for the system.popen calls.

If the new variable git-p4.binary is not set, the program checks if
the operating system
is Windows. If it is, the executable is changed to 'p4.exe'. All other
operating systems
(those that do not report 'Windows' in the platform.system() call)
continue to use the
current executable of 'p4'.

@seraphire seraphire changed the title Feature: New Variable git-p4.binary Feature: New Variable git-p4.p4program Nov 14, 2019
@gitgitgadget
Copy link

gitgitgadget bot commented Nov 15, 2019

On the Git mailing list, Luke Diamand wrote (reply to this):

On Thu, 14 Nov 2019 at 20:17, Ben Keene <seraphire@gmail.com> wrote:
>
> On Thu, Nov 14, 2019 at 4:52 AM Luke Diamand <luke@diamand.org> wrote:
> >
> > On Thu, 14 Nov 2019 at 02:36, Junio C Hamano <gitster@pobox.com> wrote:
> > >
> > > "Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:
> > >
> > > > Issue: Using git-p4.py on Windows does not resolve properly to the p4.exe
> > > > binary in all instances.
> > > >
> > > > Two new code features are added to resolve the p4 executable location:
> > > >
> > > >  1. A new variable, git-p4.binary, has been added that takes precedence over
> > > >     the default p4 executable name. If this git option is set and the
> > > >     path.exists() passes for this file it will be used as executable for the
> > > >     system.popen calls.
> > > >
> > > >
> > > >  2. If the new variable git-p4.binary is not set, the program checks if the
> > > >     operating system is Windows. If it is, the executable is changed to
> > > >     'p4.exe'. All other operating systems
> > > >     (those that do not report 'Windows' in the platform.system() call)
> > > >     continue to use the current executable of 'p4'.
> > >
> > > I do not use Windows nor git-p4, but the above two changes make
> > > sense to me at the design level.  One thing that needs to be updated
> > > is the configuration variable, though.  It is more in line with the
> > > other parts of the system to name this "git-p4.program", because
> > > binary-ness does not matter much to you, as long as the named thing
> > > works correctly as "p4" program replacement.
> > >
> > > Seeing "gpg.program" is used in a similar way, it also is tempting
> > > to call it "p4.program", but no other parts of Git other than
> > > "git-p4" uses P4, and the "git-p4." prefix is to collect variables
> > > related to "git-p4" together, so calling it "p4.program" may not be
> > > a good idea---it would hurt discoverability.  "git-p4.p4program"
> > > may be OK, if we anticipate that git-p4 may need to use (and its
> > > users need to specify paths to) external programs other than "p4",
> > > but it probably is overkill.
> > >
> > > Thanks.
> >
> > There's some trailing whitespace in 98bae, can we get that tidied up?
> >
> > Otherwise, modulo Junio's comments, it looks good.
> >
> > I agree that "git-p4.binary" might be harder to discover ("Oh, I
> > assumed that enabled binary mode!"). p4program should be fine.
>
> I have updated the Pull Request to change the variable name from
> 'binary' to 'p4program'.  I have also updated the PR description.

I couldn't figure out how to download this. I tried p4-binary-1, but
it gave me the old one. Maybe I was just using it wrong?

Could you update the commit message to say why we needed to do this;
if we have to dig through history in the future to figure out what's
going on, it will be a lot easier if the explanation is in the commit
message, rather than in an email thread. The branch description on
gitgitgadget won't be around either.

>
> Here's the new commit message:
>
> Issue: Using git-p4.py on Windows does not resolve properly to the
> p4.exe binary in all instances.
>
> Changes since v1:
> Commit: (dc6817e) 2019-11-14
>
> Renamed the variable "git-p4.binary" to "git-p4.p4program"
>
> v1:
>
> Two new code features are added to resolve the p4 executable location:
>
> A new variable, git-p4.binary, has been added that takes precedence
> over the default
> p4 executable name. If this git option is set and the path.exists()
> passes for this file
> it will be used as executable for the system.popen calls.
>
> If the new variable git-p4.binary is not set, the program checks if
> the operating system
> is Windows. If it is, the executable is changed to 'p4.exe'. All other
> operating systems
> (those that do not report 'Windows' in the platform.system() call)
> continue to use the
> current executable of 'p4'.

@seraphire
Copy link
Author

/submit

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 15, 2019

git-p4.py Outdated
@@ -36,12 +36,22 @@
unicode = str
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Junio C Hamano wrote (reply to this):

"Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Ben Keene <bkeene@partswatch.com>
> Subject: Re: [PATCH v2 1/3] Cast byte strings to unicode strings in python3

That is "how" this patch tries to achieve something that is not
explained in this proposed log message.  Worse, the rest of the
proposed log message is entirely empty and does not help readers
understand what the author wanted to do, or decide if applying these
patches is a good idea.

You wrote something about Python 3 having issues while comparing the
strings read out of process.popen() against string literals in the
code elsewhere in the cover letter.  That information is probably
very relevant to explain why this commit exists, i.e. it should be
explained here.

Here is what I _think_ is close to why you wrote this patch, but as
I already said, I am far from being familiar with Py2to3
differences, so there may be factual misunderstanding you would want
to fix, even if you decide to pick some pieces out of it when
sending an updated patch.

    Subject: [PATCH] git-p4: compare "p4" output with the right string type

    Communicating with a subprocess yields a byte string in both
    Python 2 and Python 3.  Comparing the output or the error string
    with string literals makes the code fail, as string literals in
    Python 3 are unicode strings and not byte strings.

    Introduce a ustring() helper, which returns the corresponding
    unicode string for a given byte string (or return the argument
    as-is, when a unicode string is given) in Python 3, but returns
    the given bytestring as-is in Python 2.  Use it to turn strings
    obtained from subprocess to the type suitable to compare with
    the string literals in both versions of Python.

What does the name "ustring()" stand for?

What purpose does the function serve at the higher conceptual level?
Name the function after the answer to that question and the code
would become easier to explain.

It certainly is not "make sure we have unicode string", as the name
is shared between Python 2 and Python 3, and in the older Python 2
world, you want the helper to mean "keep the string a bytestring",
not turning it into a unicode string.  So I doubt ustring() is a
great name for this helper.

>              if skip_info:
>                  if 'code' in entry and entry['code'] == 'info':
>                      continue
> +                if b'code' in entry and entry[b'code'] == b'info':
> +                    continue

This one explicitly calls for 'bytes', which I think would work
correctly with Python 2.  But why would we have to prepare for both
variants existing in the entry[] hash (especially when working with
Python3)?  Shouldn't the code that populates entry[] be responsible
for turning a byte string into a unicode string?

Also, is subprocess.communicate the only way bytestrings can come to
"git-p4" program, or are there other avenues?  What I am wondering
is if it is sensible to declare that when running under Python 3,
the program will internally use unicode strings for everything and
convert any bytestring to unicode string as soon as it enters [*1*]

That would mean ...

>              if cb is not None:
>                  cb(entry)
>              else:
> -                result.append(entry)
> +                if isunicode:
> +                    out = {}
> +                    for key, value in entry.items():
> +                        out[ustring(key)] = ustring(value)
> +                    result.append(out)
> +                else:
> +                    result.append(entry)

... a hunk like this would become entirely unnecessary, as keys and
values of entry[] that are read from outside world would have
already been made into unicode strings under Python 3.

By the way, would values in entry[] always some string (iow, can
they have a literal number like 47 and 3.14)?

>      except EOFError:
>          pass
>      exitCode = p4.wait()
> @@ -792,7 +813,7 @@ def gitConfig(key, typeSpecifier=None):
>          cmd += [ key ]
>          s = read_pipe(cmd, ignore_error=True)
>          _gitConfig[key] = s.strip()
> -    return _gitConfig[key]
> +    return ustring(_gitConfig[key])

Likewise.  I'd expect, if we were to declare that our internal
strings are all unicode in Python 3, we'd be using a thin wrapper of
read_pipe() that yields a unicode string, so 's' would not be a
bytestring, and s.strip() would not be either.

>  def gitConfigBool(key):
>      """Return a bool, using git config --bool.  It is True only if the
> @@ -860,6 +881,7 @@ def branch_exists(branch):
>      cmd = [ "git", "rev-parse", "--symbolic", "--verify", branch ]
>      p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>      out, _ = p.communicate()
> +    out = ustring(out)

But perhaps it is a bit too much and it is easier to call the
conversion helper on the results obtained by read_pipe() that gives
us bytestring, like this one (and one above that) does?  I dunno.

Thanks.


[Footnote]

*1* If it is not just string comparison but the general direction
    were to consistently use unicode strings under Python 3, which
    I think makes sense at the conceptual level, the sample log
    message I prepared in the earlier part of this response needs to
    be updated, so that it is not so message/comparison centric.

    I said "at the conceptual level", because there may be practical
    reasons not to use unicode everywhere (e.g. performance might
    degrade and some bytestrings used may not be text data in the
    first place).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Junio C Hamano wrote (reply to this):

Junio C Hamano <gitster@pobox.com> writes:

>>          cmd += [ key ]
>>          s = read_pipe(cmd, ignore_error=True)
>>          _gitConfig[key] = s.strip()
>> -    return _gitConfig[key]
>> +    return ustring(_gitConfig[key])
>
> Likewise.  I'd expect, if we were to declare that our internal
> strings are all unicode in Python 3, we'd be using a thin wrapper of
> read_pipe() that yields a unicode string, so 's' would not be a
> bytestring, and s.strip() would not be either.

Oops, I did not even realize read_pipe() is already our own.  So
there is no need to any wrapper around it, if we were to declare
that all strings we use are unicode under Python 3---we just need
to have the ustring() call (after giviing the helper a better name)
directly inside read_pipe() function.

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 16, 2019

On the Git mailing list, Junio C Hamano wrote (reply to this):

"Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:

> Ben Keene (3):
>   Cast byte strings to unicode strings in python3
>   Added general variable git-p4.binary and added a default for windows
>     of 'P4.EXE'
>   Changed the name of the parameter from git-p4.binary to
>     git-p4.p4program

That's rather poor organization.  In the larger picture, nobody
wants to even know jthat you used to call git-p4.p4program with a
different name or what that different name was.  They do not even
need to know why the new name is an improvement (but you do not even
discuss to justify the name change in the proposed log message of
3/3, which is even worse X-<).

When presenting your work to the public, Git lets you pretend to be
a perfect human who never made mistake while preparing it and built
the series as a logical progression with perfect foresight.  That is
how "git rebase -i" is useful.  Learn to take advantage of that ;-)

As to individual patches, our local (read: project specific)
convention around here is to state the are the patch touches (in the
case of these patches, "git-p4" is the appropriate area name), colon,
and then a one-line summary of what the step is about (the last one
is done without initial capitalization).  The summary is written with
the focus more on why and what than how.

Thanks.



@@ -547,6 +547,11 @@ git-p4.retries::
Set the value to 0 to disable retries or if your p4 version
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Junio C Hamano wrote (reply to this):

"Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Ben Keene <seraphire@gmail.com>
> Subject: Re: [PATCH v2 2/3] Added general variable git-p4.binary and added a default for windows of 'P4.EXE'

Again, this is "what" you did, without explaining "why".  You give
readers no hint to help them judge if/why it is a good idea to apply
this patch.

Perhaps

	Subject: [PATCH] git-p4: allow path to the "p4" program configurable

	Introduce "git-p4.p4program" configuration variable that can
	be used to explicitly tell the path to the perforce client
	program.  When unspecified, this defaults to "p4" except for
	Windows where "p4.exe" is used instead.

or something?  This is still weaker than ideal as an explanation of
"why", but better than not saying anything as your original did ;-)

The reason why I find it weaker than ideal is because I would expect
any P4 user to have their system set up so that they can say "p4"
and get "p4" without configuring anything specifically (iow, "%PATH%"
would have been set up to have something with the p4.exe you want),
and this change is to help those users, to whom that expectation
does not hold (and in that case, it is better to explain in the
proposed log message why their system would not let them run Perforce
without first configuring this variable).

Again, as I said, you do not want to introduce "git-p4.binary" in
2/3 and then turn around to "oops, that was a mistake and it was not
a good name, so let's rename it" in 3/3.  Pretend as if you are a
perfect developer with 100% foresight and have chosen the right name
from the get-go by using "git-p4.p4program" in this step and drop
patch 3/3.

Thanks.

> Signed-off-by: Ben Keene <seraphire@gmail.com>
> ---
>  Documentation/git-p4.txt |  5 +++++
>  git-p4.py                | 14 +++++++++++++-
>  2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
> index 3494a1db3e..e206e69250 100644
> --- a/Documentation/git-p4.txt
> +++ b/Documentation/git-p4.txt
> @@ -547,6 +547,11 @@ git-p4.retries::
>  	Set the value to 0 to disable retries or if your p4 version
>  	does not support retries (pre 2012.2).
>  
> +git-p4.binary::
> +	Specifies the p4 executable used by git-p4 to process commands.
> +	The default value for Windows is `p4.exe` and for all other
> +	systems the default is `p4`. 
> +
>  Clone and sync variables
>  ~~~~~~~~~~~~~~~~~~~~~~~~
>  git-p4.syncFromOrigin::
> diff --git a/git-p4.py b/git-p4.py
> index 6e8b3a26cd..160d966ee1 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -26,6 +26,8 @@
>  import zlib
>  import ctypes
>  import errno
> +import os.path
> +from os import path
>  
>  # support basestring in python3
>  try:
> @@ -85,7 +87,17 @@ def p4_build_cmd(cmd):
>      location. It means that hooking into the environment, or other configuration
>      can be done more easily.
>      """
> -    real_cmd = ["p4"]
> +    # Look for the P4 binary
> +    p4bin = gitConfig("git-p4.binary")
> +    real_cmd = []
> +    if p4bin != "":
> +        if path.exists(p4bin):
> +            real_cmd = [p4bin]
> +    if real_cmd == []:
> +        if (platform.system() == "Windows"):
> +            real_cmd = ["p4.exe"]    
> +        else:
> +            real_cmd = ["p4"]
>  
>      user = gitConfig("git-p4.user")
>      if len(user) > 0:

@gitgitgadget
Copy link

gitgitgadget bot commented Nov 18, 2019

On the Git mailing list, Junio C Hamano wrote (reply to this):

Junio C Hamano <gitster@pobox.com> writes:

> As to individual patches, our local (read: project specific)
> convention around here is to state the are the patch touches (in the
> case of these patches, "git-p4" is the appropriate area name), colon,
> and then a one-line summary of what the step is about (the last one
> is done without initial capitalization).  The summary is written with
> the focus more on why and what than how.


Sorry for a late typofix.  "to state the AREA the patch touches" was
what I meant.  So I would expect all patches to this file (which is
the only component of 'git-p4' subsystem) to begin with "git-p4: "
prefix.

Thanks.

@seraphire
Copy link
Author

seraphire commented Nov 19, 2019 via email

@dscho
Copy link
Member

dscho commented Nov 19, 2019

@seraphire Junio cannot see your comment at git-for-windows/build-extra@eeee74cfe238#r36027386; GitGitGadget still is not bidirectional.

@dscho
Copy link
Member

dscho commented Nov 19, 2019

Junio cannot see your comment at git-for-windows/build-extra@eeee74c#r36027386; GitGitGadget still is not bidirectional.

@seraphire read: please reply via mail instead.

@seraphire seraphire force-pushed the seraphire/p4-binary branch 2 times, most recently from 98bae92 to 0bca930 Compare December 2, 2019 14:49
@seraphire seraphire closed this Dec 2, 2019
@gitgitgadget
Copy link

gitgitgadget bot commented Dec 3, 2019

On the Git mailing list, Ben Keene wrote (reply to this):


On 11/17/2019 8:15 PM, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> As to individual patches, our local (read: project specific)
>> convention around here is to state the are the patch touches (in the
>> case of these patches, "git-p4" is the appropriate area name), colon,
>> and then a one-line summary of what the step is about (the last one
>> is done without initial capitalization).  The summary is written with
>> the focus more on why and what than how.
>
> Sorry for a late typofix.  "to state the AREA the patch touches" was
> what I meant.  So I would expect all patches to this file (which is
> the only component of 'git-p4' subsystem) to begin with "git-p4: "
> prefix.
>
> Thanks.
I was having email trouble trying to reply to your suggestions. 
(Downloaded yet another mail client, and this seems to work)  I'll make 
those changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants