All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Foster <davidfstr@gmail.com>
To: git@vger.kernel.org
Subject: Bug: git-p4: Sometimes p4 generates Windows-style output on OS X
Date: Mon, 06 May 2013 10:59:36 -0700	[thread overview]
Message-ID: <5187EF88.6040707@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 878 bytes --]

I've observed that the p4 command that git-p4 delegates to occasionally 
outputs Windows-style line endings even on the OS X platform. When this 
happens, git-p4 gets very confused and crashes out.

I've attached a patch which seems to fix the issue in my case. Now this 
patch is a pretty bad hack, and I don't recommend that it be accepted 
as-is. It is just a starting point.

A real fix would determine in advance whether Perforce was going to emit 
Windows-style output. Since I don't know the circumstances under which 
this happens on non-Windows platforms, I can't provide a better patch. 
Someone who has intimate knowledge of p4's operating modes would be best 
to examine what's really going on with p4.

P.S. In case it matters, I am not subscribed to this mailing list, so 
you will need to CC me for any replies to reach me.

---
David Foster
http://dafoster.net/

[-- Attachment #2: 0001-Compensate-for-Windows-style-output-from-the-p4-comm.patch --]
[-- Type: text/plain, Size: 1804 bytes --]

>From aef963f0c45dea81f3e6f30d3b4185a0983ca4de Mon Sep 17 00:00:00 2001
From: David Foster <davidfstr@gmail.com>
Date: Mon, 6 May 2013 10:50:01 -0700
Subject: [PATCH] Compensate for Windows-style output from the p4 command on
 non-Windows systems.

---
 git-p4.py |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/git-p4.py b/git-p4.py
index 647f110..949d66d 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -1454,6 +1454,24 @@ class P4Submit(Command, P4UserMap):
             tmpFile = open(fileName, "rb")
             message = tmpFile.read()
             tmpFile.close()
+            
+            # HACK: If Perforce spontaneously generates Windows-style output,
+            #       compensate by assuming the entire p4 command went into
+            #       Windows mode.
+            if separatorLine not in message:
+                print "WARNING: Perforce has spontaneously decided to generate Windows-style output. Compensating."
+                
+                # Assume that Perforce is now inexplicably operating in Windows mode
+                self.isWindows = True
+                
+                # Retroactively rewrite expected output
+                submitTemplate = submitTemplate.replace("\n", "\r\n")
+                separatorLine = separatorLine.replace("\n", "\r\n")
+                newdiff = newdiff.replace("\n", "\r\n")
+                
+                if separatorLine not in message:
+                    raise ValueError('Confused. Thought Perforce went into Windows mode but apparently something else is wrong.')
+            
             submitTemplate = message[:message.index(separatorLine)]
             if self.isWindows:
                 submitTemplate = submitTemplate.replace("\r\n", "\n")
-- 
1.7.7.5 (Apple Git-26)


             reply	other threads:[~2013-05-06 17:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-06 17:59 David Foster [this message]
2013-05-12 12:59 ` Bug: git-p4: Sometimes p4 generates Windows-style output on OS X Pete Wyckoff

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=5187EF88.6040707@gmail.com \
    --to=davidfstr@gmail.com \
    --cc=git@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.