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

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Luke Diamand
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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

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

Luke Diamand
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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

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

Luke Diamand
Adding correct email for Jacob.

On 29 April 2016 at 08:40, Luke Diamand <[hidden email]> 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 <[hidden email]>
> ---
>  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
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

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

Luke Diamand
[+Git, Junio]

On 29 April 2016 at 15:10, Jacob Smith <[hidden email]> 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


>
> Sent from my iPhone
>
>> On Apr 29, 2016, at 8:52 AM, Luke Diamand <[hidden email]> wrote:
>>
>>> On 29 April 2016 at 13:34, Jacob Smith <[hidden email]> 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 <[hidden email]> wrote:
>>>>
>>>> Adding correct email for Jacob.
>>>>
>>>>> On 29 April 2016 at 08:40, Luke Diamand <[hidden email]> 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 <[hidden email]>
>>>>> ---
>>>>> 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
>>>>>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html