threads / discuss / 42175

[PATCHv1] git-p4: workaround p4 removal of client directory

Subject: [PATCHv1] git-p4: workaround p4 removal of client directory

## tl;dr

4 messages between Apr 29, 2016 and Apr 29, 2016.

replies: 3people: 1as markdown or json

Luke Diamand· Apr 29, 2016, 07:40 UTC · lore

This is a proposed fix for the problem reported by Jacob on OSX where "p4 sync -f" removes the client directory.

http://www.spinics.net/lists/git/msg274356.html

I tried just moving the "cd", but lots of the tests then fail as the "p4 sync" needs to be in the correct directory.

Luke Diamand (1):
  git-p4: workaround p4 removal of client directory
 git-p4.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
-- 
2.8.1.218.gd2cea43.dirty
Luke Diamand· Apr 29, 2016, 07:40 UTC · re: Luke Diamand · lore

On some platforms, "p4 sync -f" will remove the workspace directory after we have just created it; on some it won't. This causes problems later when git finds itself in an orphaned directory.

Workaround this by cd'ing back to the directory after the "p4 sync -f".

Signed-off-by: Luke Diamand <luke@diamand.org>
---
 git-p4.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/git-p4.py b/git-p4.py
index 527d44b..2b75a61 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 #
 # git-p4.py -- A tool for bidirectional operation between a Perforce depot and git.
 #
@@ -1956,6 +1956,9 @@ class P4Submit(Command, P4UserMap):
             if new_client_dir:
                 # old one was destroyed, and maybe nobody told p4
                 p4_sync("...", "-f")
+
+                # sometimes p4 will unlink the directory and recreate it
+                chdir(self.clientPath, is_client_path=True)
             else:
                 p4_sync("...")
         self.check()
-- 
2.8.1.218.gd2cea43.dirty
Luke Diamand· Apr 29, 2016, 07:39 UTC · re: Luke Diamand · lore

Re: [PATCHv1] git-p4: workaround p4 removal of client directory

Adding correct email for Jacob.
On 29 April 2016 at 08:40, Luke Diamand <luke@diamand.org> wrote:
Show 36 quoted lines
> On some platforms, "p4 sync -f" will remove the workspace
> directory after we have just created it; on some it won't.
> This causes problems later when git finds itself in an
> orphaned directory.
>
> Workaround this by cd'ing back to the directory after
> the "p4 sync -f".
>
> Signed-off-by: Luke Diamand <luke@diamand.org>
> ---
>  git-p4.py | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/git-p4.py b/git-p4.py
> index 527d44b..2b75a61 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python2
>  #
>  # git-p4.py -- A tool for bidirectional operation between a Perforce depot and git.
>  #
> @@ -1956,6 +1956,9 @@ class P4Submit(Command, P4UserMap):
>              if new_client_dir:
>                  # old one was destroyed, and maybe nobody told p4
>                  p4_sync("...", "-f")
> +
> +                # sometimes p4 will unlink the directory and recreate it
> +                chdir(self.clientPath, is_client_path=True)
>              else:
>                  p4_sync("...")
>          self.check()
> --
> 2.8.1.218.gd2cea43.dirty
>
Luke Diamand· Apr 29, 2016, 20:47 UTC · lore

Re: [PATCHv1] git-p4: workaround p4 removal of client directory

[+Git, Junio]
On 29 April 2016 at 15:10, Jacob Smith <jaroslov@gmail.com> wrote:
> That's the identical patch I'm maintaining internally; it appears to work.
Thanks, I think that counts as a "Tested-by" then.
Luke
Show 58 quoted lines
>
> Sent from my iPhone
>
>> On Apr 29, 2016, at 8:52 AM, Luke Diamand <luke@diamand.org> wrote:
>>
>>> On 29 April 2016 at 13:34, Jacob Smith <jaroslov@gmail.com> wrote:
>>> Thank you, Luke! I'll raise a radar so (hopefully) it gets integrated into Apple's distribution.
>>
>> Can you check if it works for you? I can't reproduce it here.
>>
>> Thanks!
>> Luke
>>
>>
>>
>>
>>>
>>>> On Apr 29, 2016, at 2:39 AM, Luke Diamand <luke@diamand.org> wrote:
>>>>
>>>> Adding correct email for Jacob.
>>>>
>>>>> On 29 April 2016 at 08:40, Luke Diamand <luke@diamand.org> wrote:
>>>>> On some platforms, "p4 sync -f" will remove the workspace
>>>>> directory after we have just created it; on some it won't.
>>>>> This causes problems later when git finds itself in an
>>>>> orphaned directory.
>>>>>
>>>>> Workaround this by cd'ing back to the directory after
>>>>> the "p4 sync -f".
>>>>>
>>>>> Signed-off-by: Luke Diamand <luke@diamand.org>
>>>>> ---
>>>>> git-p4.py | 5 ++++-
>>>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/git-p4.py b/git-p4.py
>>>>> index 527d44b..2b75a61 100755
>>>>> --- a/git-p4.py
>>>>> +++ b/git-p4.py
>>>>> @@ -1,4 +1,4 @@
>>>>> -#!/usr/bin/env python
>>>>> +#!/usr/bin/env python2
>>>>> #
>>>>> # git-p4.py -- A tool for bidirectional operation between a Perforce depot and git.
>>>>> #
>>>>> @@ -1956,6 +1956,9 @@ class P4Submit(Command, P4UserMap):
>>>>>            if new_client_dir:
>>>>>                # old one was destroyed, and maybe nobody told p4
>>>>>                p4_sync("...", "-f")
>>>>> +
>>>>> +                # sometimes p4 will unlink the directory and recreate it
>>>>> +                chdir(self.clientPath, is_client_path=True)
>>>>>            else:
>>>>>                p4_sync("...")
>>>>>        self.check()
>>>>> --
>>>>> 2.8.1.218.gd2cea43.dirty
>>>>>

← back to recent threads