From 8f6361e8e4ad0f6e07af43e0b18a9aaa3840f33c Mon Sep 17 00:00:00 2001 From: Martin Dias Date: Sun, 25 Dec 2022 17:31:21 -0300 Subject: [PATCH 1/4] Add bindings for git_remote_default_branch on >= v1.2.0 --- .../LGitRemote.class/instance/defaultBranchName.st | 14 ++++++++++++++ .../remote_connect.direction.callbacks..st | 13 ++++++++----- .../remote_connect_v120.direction.callbacks..st | 12 ++++++++++++ .../instance/remote_default_branch..st | 13 +++++++++++++ 4 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 LibGit-Core.package/LGitRemote.class/instance/defaultBranchName.st create mode 100644 LibGit-Core.package/LGitRemote.class/instance/remote_connect_v120.direction.callbacks..st create mode 100644 LibGit-Core.package/LGitRemote.class/instance/remote_default_branch..st diff --git a/LibGit-Core.package/LGitRemote.class/instance/defaultBranchName.st b/LibGit-Core.package/LGitRemote.class/instance/defaultBranchName.st new file mode 100644 index 00000000..523afe53 --- /dev/null +++ b/LibGit-Core.package/LGitRemote.class/instance/defaultBranchName.st @@ -0,0 +1,14 @@ +accessing +defaultBranchName + "Answer the name of the remote's default branch. + + Must only be called after connecting. + " + + | buf defaultBranchName | + buf := LGitBuf new. + [ self withReturnHandlerDo: [ + self remote_default_branch: buf ]. + defaultBranchName := buf prim_ptr utf8StringFromCString ] ensure: [ buf free ]. + + ^ defaultBranchName \ No newline at end of file diff --git a/LibGit-Core.package/LGitRemote.class/instance/remote_connect.direction.callbacks..st b/LibGit-Core.package/LGitRemote.class/instance/remote_connect.direction.callbacks..st index 97c73653..d6d8fea3 100644 --- a/LibGit-Core.package/LGitRemote.class/instance/remote_connect.direction.callbacks..st +++ b/LibGit-Core.package/LGitRemote.class/instance/remote_connect.direction.callbacks..st @@ -1,7 +1,10 @@ libgit - calls remote_connect: remote direction: direction callbacks: remoteCallbacks - - ^ self - ffiCallSafely: - #(LGitReturnCodeEnum git_remote_connect #(self , LGitDirectionEnum direction , LGitRemoteCallbacks * remoteCallbacks)) - options: #() \ No newline at end of file + + ^ (self ffiLibrary uniqueInstance isVersionLessThan: #(1 2)) + ifTrue: [ self shouldBeImplemented ] + ifFalse: [ + self + remote_connect_v120: remote + direction: direction + callbacks: remoteCallbacks ] diff --git a/LibGit-Core.package/LGitRemote.class/instance/remote_connect_v120.direction.callbacks..st b/LibGit-Core.package/LGitRemote.class/instance/remote_connect_v120.direction.callbacks..st new file mode 100644 index 00000000..aef3c7a5 --- /dev/null +++ b/LibGit-Core.package/LGitRemote.class/instance/remote_connect_v120.direction.callbacks..st @@ -0,0 +1,12 @@ +libgit - calls +remote_connect_v120: aLGitRemote direction: aLGitDirectionEnum callbacks: aLGitRemoteCallbacksV120 + + ^ self ffiCallSafely: #( + LGitReturnCodeEnum + git_remote_connect #( + self, + LGitDirectionEnum aLGitDirectionEnum, + LGitRemoteCallbacksV120 * aLGitRemoteCallbacksV120, + nil, + nil )) + options: #() \ No newline at end of file diff --git a/LibGit-Core.package/LGitRemote.class/instance/remote_default_branch..st b/LibGit-Core.package/LGitRemote.class/instance/remote_default_branch..st new file mode 100644 index 00000000..40942e97 --- /dev/null +++ b/LibGit-Core.package/LGitRemote.class/instance/remote_default_branch..st @@ -0,0 +1,13 @@ +libgit - calls +remote_default_branch: out + "Retrieve the name of the remote's default branch. + + The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins. + + This function must only be called after connecting. + + See: https://libgit2.org/libgit2/#v1.0.0/group/remote/git_remote_default_branch" + + ^ self + ffiCallSafely: #(LGitReturnCodeEnum git_remote_default_branch(LGitBuf *out, self)) + options: #(). \ No newline at end of file From c212c4965a6b5a4e01b75b5a198a0a0766979a3e Mon Sep 17 00:00:00 2001 From: Martin Dias Date: Sun, 25 Dec 2022 17:31:46 -0300 Subject: [PATCH 2/4] Add testDefaultBranchName as a Manuel fetch test --- .../instance/testDefaultBranchName.st | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 LibGit-Tests.package/LGitManualFetchTest.class/instance/testDefaultBranchName.st diff --git a/LibGit-Tests.package/LGitManualFetchTest.class/instance/testDefaultBranchName.st b/LibGit-Tests.package/LGitManualFetchTest.class/instance/testDefaultBranchName.st new file mode 100644 index 00000000..24308a82 --- /dev/null +++ b/LibGit-Tests.package/LGitManualFetchTest.class/instance/testDefaultBranchName.st @@ -0,0 +1,14 @@ +tests +testDefaultBranchName + + | repo remote | + repo := self newRepo state3Opened. + remote := LGitRemote of: repo named: 'origin' url: self newRepo repositoryUrlHttps. + remote + create; + lookup; + connectFetch. + + self + assert: remote defaultBranchName + equals: 'refs/heads/master' \ No newline at end of file From 5032277f68c35d575ff24a0ed8f3b40b8616c26b Mon Sep 17 00:00:00 2001 From: Martin Dias Date: Sun, 25 Dec 2022 17:32:19 -0300 Subject: [PATCH 3/4] Fix broken class reference in loadTestData: use Ston --- .../LGitTestRepository.class/class/loadTestData.st | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/LibGit-Tests.package/LGitTestRepository.class/class/loadTestData.st b/LibGit-Tests.package/LGitTestRepository.class/class/loadTestData.st index 5f82eaa2..466c5a0e 100644 --- a/LibGit-Tests.package/LGitTestRepository.class/class/loadTestData.st +++ b/LibGit-Tests.package/LGitTestRepository.class/class/loadTestData.st @@ -1,13 +1,16 @@ private loadTestData + " + self loadTestData + " | dictionary | - (testDataLoaded notNil and: [ testDataLoaded ]) ifTrue: [ ^ self ]. +" (testDataLoaded notNil and: [ testDataLoaded ]) ifTrue: [ ^ self ]. Reload everytime" testDataLoaded := true. (FileSystem workingDirectory / 'test_data.json') exists ifFalse: [ ^ self ]. (FileSystem workingDirectory / 'test_data.json') readStreamDo: [ :stream | - dictionary := MCFileTreeJsonParser parseStream: stream ]. - + dictionary := STONJSON fromStream: stream ]. + (dictionary at: 'urls') keysAndValuesDo: [ :selector :url | self perform: selector asSymbol asMutator From 5514fbcf4bd2db26fefbdd5bd99fb17f52cfa3d2 Mon Sep 17 00:00:00 2001 From: Martin Dias Date: Sun, 25 Dec 2022 17:32:28 -0300 Subject: [PATCH 4/4] Fix testPullHTTPS --- .../LGitManualPullTest.class/instance/testPullHTTPS.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LibGit-Tests.package/LGitManualPullTest.class/instance/testPullHTTPS.st b/LibGit-Tests.package/LGitManualPullTest.class/instance/testPullHTTPS.st index a4fc692b..ab9649a3 100644 --- a/LibGit-Tests.package/LGitManualPullTest.class/instance/testPullHTTPS.st +++ b/LibGit-Tests.package/LGitManualPullTest.class/instance/testPullHTTPS.st @@ -12,7 +12,7 @@ testPullHTTPS credentials createWith: cred. 0 ]. options := (repo ffiLibrary uniqueInstance fetchOptionsStructureClass defaults - callbacks: (self ffiLibrary uniqueInstance remoteCallbacksStructureClass defaults + callbacks: (repo ffiLibrary uniqueInstance remoteCallbacksStructureClass defaults credentials: credentialsCallback; yourself); yourself).