threads / patch / 25470

patchFix handling of git-p4 on deleted files

Subject: [PATCH] Fix handling of git-p4 on deleted files

## tl;dr

4 messages between Oct 18, 2010 and Oct 22, 2010. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Andrew Waters· Oct 18, 2010, 15:39 UTC · lore

When you submit changes containing deleted file the command 'p4 diff -du ...' includes diffs for deleted files. This causes the failure:

open for read: <deleted file>: No such file or directory Command failed: p4 diff -du ...

The problem is that perforce has been told to delete the file and then we try to apply diffs to a file which no longer exists.

---
 contrib/fast-import/git-p4 |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Show changes to contrib/fast-import/git-p4 +3 −1
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index c1ea643..04ce7e3 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -706,7 +706,9 @@ class P4Submit(Command):
             submitTemplate = self.prepareLogMessage(template, logMessage)
             if os.environ.has_key("P4DIFF"):
                 del(os.environ["P4DIFF"])
-            diff = p4_read_pipe("diff -du ...")
+            diff = ""
+            for editedFile in editedFiles:
+                diff += p4_read_pipe("diff -du %r" % editedFile)

             newdiff = ""
             for newFile in filesToAdd:
-- 
1.7.2.2
Thomas Berg· Oct 22, 2010, 10:20 UTC · re: Andrew Waters · lore

Re: [PATCH] Fix handling of git-p4 on deleted files

Hi,
On Mon, Oct 18, 2010 at 5:39 PM, Andrew Waters <apwaters@googlemail.com> wrote:
Show 5 quoted lines
> When you submit changes containing deleted file the command 'p4 diff
> -du ...' includes diffs for deleted files. This causes the failure:
>
> open for read: <deleted file>: No such file or directory
> Command failed: p4 diff -du ...

I'm a daily git-p4 user and noticed this problem too: 'git p4 submit' fails for commits with deleted files, with recent Perforce verions. The problem has been brought up earlier [1], but no patch has actually submitted yet.

Show 16 quoted lines
> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> index c1ea643..04ce7e3 100755
> --- a/contrib/fast-import/git-p4
> +++ b/contrib/fast-import/git-p4
> @@ -706,7 +706,9 @@ class P4Submit(Command):
>             submitTemplate = self.prepareLogMessage(template, logMessage)
>             if os.environ.has_key("P4DIFF"):
>                 del(os.environ["P4DIFF"])
> -            diff = p4_read_pipe("diff -du ...")
> +            diff = ""
> +            for editedFile in editedFiles:
> +                diff += p4_read_pipe("diff -du %r" % editedFile)
>
>             newdiff = ""
>             for newFile in filesToAdd:
> --

I just tested your patch, and it does indeed fix the problem. I think you need to "sign off" on the patch, other than that I support applying it.

Regards, Thomas

[1] http://kerneltrap.org/mailarchive/git/2010/5/28/31299
Andrew Waters· Oct 22, 2010, 12:26 UTC · re: Thomas Berg · lore
Signed-off-by: Andrew Waters <apwaters@googlemail.com>
---
 contrib/fast-import/git-p4 |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Show changes to contrib/fast-import/git-p4 +3 −1
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index c1ea643..04ce7e3 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -706,7 +706,9 @@ class P4Submit(Command):
             submitTemplate = self.prepareLogMessage(template, logMessage)
             if os.environ.has_key("P4DIFF"):
                 del(os.environ["P4DIFF"])
-            diff = p4_read_pipe("diff -du ...")
+            diff = ""
+            for editedFile in editedFiles:
+                diff += p4_read_pipe("diff -du %r" % editedFile)

             newdiff = ""
             for newFile in filesToAdd:
-- 
1.7.2.2


On 22 October 2010 11:20, Thomas Berg <merlin66b@gmail.com> wrote:
> Hi,
>
> On Mon, Oct 18, 2010 at 5:39 PM, Andrew Waters <apwaters@googlemail.com> wrote:
>> When you submit changes containing deleted file the command 'p4 diff
>> -du ...' includes diffs for deleted files. This causes the failure:
>>
>> open for read: <deleted file>: No such file or directory
>> Command failed: p4 diff -du ...
>
> I'm a daily git-p4 user and noticed this problem too: 'git p4 submit'
> fails for commits with deleted files, with recent Perforce verions.
> The problem has been brought up earlier [1], but no patch has actually
> submitted yet.
>
>> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
>> index c1ea643..04ce7e3 100755
>> --- a/contrib/fast-import/git-p4
>> +++ b/contrib/fast-import/git-p4
>> @@ -706,7 +706,9 @@ class P4Submit(Command):
>>             submitTemplate = self.prepareLogMessage(template, logMessage)
>>             if os.environ.has_key("P4DIFF"):
>>                 del(os.environ["P4DIFF"])
>> -            diff = p4_read_pipe("diff -du ...")
>> +            diff = ""
>> +            for editedFile in editedFiles:
>> +                diff += p4_read_pipe("diff -du %r" % editedFile)
>>
>>             newdiff = ""
>>             for newFile in filesToAdd:
>> --
>
> I just tested your patch, and it does indeed fix the problem. I think
> you need to "sign off" on the patch, other than that I support
> applying it.
>
> Regards,
> Thomas
>
> [1] http://kerneltrap.org/mailarchive/git/2010/5/28/31299
>
Junio C Hamano· Oct 22, 2010, 18:52 UTC · re: Andrew Waters · lore

Re: [PATCH] Fix handling of git-p4 on deleted files

Andrew Waters <apwaters@googlemail.com> writes:
Show 14 quoted lines
> On 22 October 2010 11:20, Thomas Berg <merlin66b@gmail.com> wrote:
>> Hi,
>>
>> On Mon, Oct 18, 2010 at 5:39 PM, Andrew Waters <apwaters@googlemail.com> wrote:
>>> When you submit changes containing deleted file the command 'p4 diff
>>> -du ...' includes diffs for deleted files. This causes the failure:
>>>
>>> open for read: <deleted file>: No such file or directory
>>> Command failed: p4 diff -du ...
>>
>> I'm a daily git-p4 user and noticed this problem too: 'git p4 submit'
>> fails for commits with deleted files, with recent Perforce verions.
>> The problem has been brought up earlier [1], but no patch has actually
>> submitted yet.
Thanks for a resend.  Will queue.
Show 22 quoted lines
> Signed-off-by: Andrew Waters <apwaters@googlemail.com>
> ---
>  contrib/fast-import/git-p4 |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> index c1ea643..04ce7e3 100755
> --- a/contrib/fast-import/git-p4
> +++ b/contrib/fast-import/git-p4
> @@ -706,7 +706,9 @@ class P4Submit(Command):
>              submitTemplate = self.prepareLogMessage(template, logMessage)
>              if os.environ.has_key("P4DIFF"):
>                  del(os.environ["P4DIFF"])
> -            diff = p4_read_pipe("diff -du ...")
> +            diff = ""
> +            for editedFile in editedFiles:
> +                diff += p4_read_pipe("diff -du %r" % editedFile)
>
>              newdiff = ""
>              for newFile in filesToAdd:
> -- 
> 1.7.2.2

← back to recent threads