threads / patch / 42722

patchgit-p4: place temporary refs used for branch import under ref/git-p4-tmp

Subject: [PATCH v1] git-p4: place temporary refs used for branch import under ref/git-p4-tmp

## tl;dr

7 messages between Jun 27, 2016 and Jul 1, 2016. Diffs are folded; open one to read it.

replies: 6people: 5as markdown or json

larsxschneider@gmail.com· Jun 27, 2016, 07:26 UTC · lore
From: Lars Schneider <larsxschneider@gmail.com>

Git-P4 used to place temporary refs under "git-p4-tmp". Since 3da1f37 Git checks that all refs are placed under "ref". Instruct Git-P4 to place temporary refs under "ref/git-p4-tmp". There are no backwards compatibility considerations as these refs are transient.

All refs under "ref" are shared across all worktrees. This is not desired for temporary Git-P4 refs and will be adressed in a later patch.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
---

Please note: As mentioned in $gmane/297703 I am no expert for the Git-P4 branch import. I post this patch to make the Git-P4 unit tests working, again. Critical review highly appreciated :-)

Thanks, Lars

 git-p4.py                | 2 +-
 t/t9801-git-p4-branch.sh | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
Show changes to 2 files +3 −4

git-p4.py, t/t9801-git-p4-branch.sh

diff --git a/git-p4.py b/git-p4.py
index b6593cf..6b252df 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -2274,7 +2274,7 @@ class P4Sync(Command, P4UserMap):
         self.useClientSpec_from_options = False
         self.clientSpecDirs = None
         self.tempBranches = []
-        self.tempBranchLocation = "git-p4-tmp"
+        self.tempBranchLocation = "refs/git-p4-tmp"
         self.largeFileSystem = None

         if gitConfig('git-p4.largeFileSystem'):
diff --git a/t/t9801-git-p4-branch.sh b/t/t9801-git-p4-branch.sh
index 0aafd03..8f28ed2 100755
--- a/t/t9801-git-p4-branch.sh
+++ b/t/t9801-git-p4-branch.sh
@@ -300,7 +300,7 @@ test_expect_success 'git p4 clone complex branches' '
 		test_path_is_file file2 &&
 		test_path_is_file file3 &&
 		! grep update file2 &&
-		test_path_is_missing .git/git-p4-tmp
+		test_path_is_missing .git/ref/git-p4-tmp
 	)
 '

@@ -352,7 +352,7 @@ test_expect_success 'git p4 sync changes to two branches in the same changelist'
 		test_path_is_file file2 &&
 		test_path_is_file file3 &&
 		! grep update file2 &&
-		test_path_is_missing .git/git-p4-tmp
+		test_path_is_missing .git/ref/git-p4-tmp
 	)
 '

--
2.5.1
Michael Haggerty· Jun 28, 2016, 10:26 UTC · re: larsxschneider@gmail.com · lore

Re: [PATCH v1] git-p4: place temporary refs used for branch import under ref/git-p4-tmp

On 06/27/2016 09:26 AM, larsxschneider@gmail.com wrote:
Show 7 quoted lines
> Git-P4 used to place temporary refs under "git-p4-tmp". Since 3da1f37
> Git checks that all refs are placed under "ref". Instruct Git-P4 to
> place temporary refs under "ref/git-p4-tmp". There are no backwards
> compatibility considerations as these refs are transient.
> 
> All refs under "ref" are shared across all worktrees. This is not
> desired for temporary Git-P4 refs and will be adressed in a later patch.

Thanks for working on this, Lars! Your change looks about what I would expect, and hits the three places in the source where the string `git-p4-tmp` appears, so it seems like a very plausible fix.

Michael
Johannes Sixt· Jun 28, 2016, 18:21 UTC · re: larsxschneider@gmail.com · lore

Re: [PATCH v1] git-p4: place temporary refs used for branch import under ref/git-p4-tmp

Am 27.06.2016 um 09:26 schrieb larsxschneider@gmail.com:
Show 21 quoted lines
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -2274,7 +2274,7 @@ class P4Sync(Command, P4UserMap):
>           self.useClientSpec_from_options = False
>           self.clientSpecDirs = None
>           self.tempBranches = []
> -        self.tempBranchLocation = "git-p4-tmp"
> +        self.tempBranchLocation = "refs/git-p4-tmp"
>           self.largeFileSystem = None
>
>           if gitConfig('git-p4.largeFileSystem'):
> diff --git a/t/t9801-git-p4-branch.sh b/t/t9801-git-p4-branch.sh
> index 0aafd03..8f28ed2 100755
> --- a/t/t9801-git-p4-branch.sh
> +++ b/t/t9801-git-p4-branch.sh
> @@ -300,7 +300,7 @@ test_expect_success 'git p4 clone complex branches' '
>   		test_path_is_file file2 &&
>   		test_path_is_file file3 &&
>   		! grep update file2 &&
> -		test_path_is_missing .git/git-p4-tmp
> +		test_path_is_missing .git/ref/git-p4-tmp

This should be .git/refs/git-p4-tmp, no? Otherwise, this does not test what it should test.

Show 9 quoted lines
>   	)
>   '
>
> @@ -352,7 +352,7 @@ test_expect_success 'git p4 sync changes to two branches in the same changelist'
>   		test_path_is_file file2 &&
>   		test_path_is_file file3 &&
>   		! grep update file2 &&
> -		test_path_is_missing .git/git-p4-tmp
> +		test_path_is_missing .git/ref/git-p4-tmp
Same here.
>   	)
>   '
-- Hannes
Junio C Hamano· Jun 28, 2016, 18:49 UTC · re: Johannes Sixt · lore

Re: [PATCH v1] git-p4: place temporary refs used for branch import under ref/git-p4-tmp

Johannes Sixt <j6t@kdbg.org> writes:
Show 25 quoted lines
> Am 27.06.2016 um 09:26 schrieb larsxschneider@gmail.com:
>> --- a/git-p4.py
>> +++ b/git-p4.py
>> @@ -2274,7 +2274,7 @@ class P4Sync(Command, P4UserMap):
>>           self.useClientSpec_from_options = False
>>           self.clientSpecDirs = None
>>           self.tempBranches = []
>> -        self.tempBranchLocation = "git-p4-tmp"
>> +        self.tempBranchLocation = "refs/git-p4-tmp"
>>           self.largeFileSystem = None
>>
>>           if gitConfig('git-p4.largeFileSystem'):
>> diff --git a/t/t9801-git-p4-branch.sh b/t/t9801-git-p4-branch.sh
>> index 0aafd03..8f28ed2 100755
>> --- a/t/t9801-git-p4-branch.sh
>> +++ b/t/t9801-git-p4-branch.sh
>> @@ -300,7 +300,7 @@ test_expect_success 'git p4 clone complex branches' '
>>   		test_path_is_file file2 &&
>>   		test_path_is_file file3 &&
>>   		! grep update file2 &&
>> -		test_path_is_missing .git/git-p4-tmp
>> +		test_path_is_missing .git/ref/git-p4-tmp
>
> This should be .git/refs/git-p4-tmp, no? Otherwise, this does not test
> what it should test.

Yes, and it probably should use "git show-ref --verify" to future-proof, instead of assuming the file-based ref backend.

Show 17 quoted lines
>
>>   	)
>>   '
>>
>> @@ -352,7 +352,7 @@ test_expect_success 'git p4 sync changes to two branches in the same changelist'
>>   		test_path_is_file file2 &&
>>   		test_path_is_file file3 &&
>>   		! grep update file2 &&
>> -		test_path_is_missing .git/git-p4-tmp
>> +		test_path_is_missing .git/ref/git-p4-tmp
>
> Same here.
>
>>   	)
>>   '
>
> -- Hannes
larsxschneider@gmail.com· Jun 29, 2016, 07:35 UTC · re: Junio C Hamano · lore

[PATCH v2] git-p4: place temporary refs used for branch import under refs/git-p4-tmp

From: Lars Schneider <larsxschneider@gmail.com>

Git-P4 used to place temporary refs under "git-p4-tmp". Since 3da1f37 Git checks that all refs are placed under "refs". Instruct Git-P4 to place temporary refs under "refs/git-p4-tmp". There are no backwards compatibility considerations as these refs are transient.

Use "git show-ref --verify" to check the (non-)existience of the refs instead of file checks assuming the file-based ref backend.

All refs under "refs" are shared across all worktrees. This is not desired for temporary Git-P4 refs and will be adressed in a later patch.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
---
Thank you Hannes for the sharp eye!
diff to v1:
* check non-existence of refs/git-p4-tmp instead of ref/git-p4-tmp
* use refs/git-p4-tmp instead of ref/git-p4-tmp in commit message
* check reference with "git show-ref --verify" to be future-proof (thanks Junio!)

Cheers, Lars

 git-p4.py                | 2 +-
 t/t9801-git-p4-branch.sh | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
Show changes to 2 files +3 −4

git-p4.py, t/t9801-git-p4-branch.sh

diff --git a/git-p4.py b/git-p4.py
index b6593cf..6b252df 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -2274,7 +2274,7 @@ class P4Sync(Command, P4UserMap):
         self.useClientSpec_from_options = False
         self.clientSpecDirs = None
         self.tempBranches = []
-        self.tempBranchLocation = "git-p4-tmp"
+        self.tempBranchLocation = "refs/git-p4-tmp"
         self.largeFileSystem = None

         if gitConfig('git-p4.largeFileSystem'):
diff --git a/t/t9801-git-p4-branch.sh b/t/t9801-git-p4-branch.sh
index 0aafd03..6a86d69 100755
--- a/t/t9801-git-p4-branch.sh
+++ b/t/t9801-git-p4-branch.sh
@@ -300,7 +300,7 @@ test_expect_success 'git p4 clone complex branches' '
 		test_path_is_file file2 &&
 		test_path_is_file file3 &&
 		! grep update file2 &&
-		test_path_is_missing .git/git-p4-tmp
+		test_must_fail git show-ref --verify refs/git-p4-tmp
 	)
 '

@@ -352,7 +352,7 @@ test_expect_success 'git p4 sync changes to two branches in the same changelist'
 		test_path_is_file file2 &&
 		test_path_is_file file3 &&
 		! grep update file2 &&
-		test_path_is_missing .git/git-p4-tmp
+		test_must_fail git show-ref --verify refs/git-p4-tmp
 	)
 '

--
2.5.1

← back to recent threads