Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LGitRemote>>defaultBranchName (again) #71

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions LibGit-Core.package/LGitRemote.class/instance/defaultBranchName.st
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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: #()

^ (self ffiLibrary uniqueInstance isVersionLessThan: #(1 2))
ifTrue: [ self shouldBeImplemented ]
ifFalse: [
self
remote_connect_v120: remote
direction: direction
callbacks: remoteCallbacks ]
Original file line number Diff line number Diff line change
@@ -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: #()
Original file line number Diff line number Diff line change
@@ -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: #().
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
@@ -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 ].
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This MCFileTreeJsonParser doesn't exist in P11

dictionary := STONJSON fromStream: stream ].

(dictionary at: 'urls') keysAndValuesDo: [ :selector :url |
self
perform: selector asSymbol asMutator
Expand Down