aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/transport
Commit message (Collapse)AuthorAgeFilesLines
* transport/internal: remove Wait function, use Close directlySantiago M. Mola2017-06-134-32/+19
|
* fix ReceivePackSuite.TestSendPackAddDeleteReferenceSantiago M. Mola2017-06-131-2/+4
|
* plumbing/transport: detect "access denied error"Santiago M. Mola2017-06-131-5/+10
| | | | | | | "ERR access denied or repository not exported:" is now detected as transport.ErrRepositoryNotFound, since that's what git-daemon returns when --informative-errors is not used.
* transport/git: add git-receive-pack testsSantiago M. Mola2017-06-131-0/+140
|
* plumbing/transport: detect git protocol "no such repository" errorSantiago M. Mola2017-06-131-0/+5
|
* transport/git: ensure port is added to host parameterSantiago M. Mola2017-06-131-1/+6
|
* ensure receive-pack session is closed on push.Santiago M. Mola2017-06-131-1/+5
| | | | | | * at low level, ReceivePack must close its stream to the server to signal it has finished. * remote.go: Close() must be called on session.
* Use xanzy/ssh-agent to create the ssh agent correctly based on os.Ethan Young2017-06-012-14/+15
|
* transport/server: use Endpoint string representation as a map key.Antonio Jesus Navarro Perez2017-05-163-4/+20
| | | | Two endpoints are not equals between them, even if they were generated using the same url or path.
* do not convert local paths to URLSantiago M. Mola2017-04-287-25/+91
| | | | | | | * Do not convert local paths to URLs, just keep them as they are. * This way we add support for Windows without taking care of Windows path-to-URL conversion.
* transport: make Endpoint an interface, fixes #362Santiago M. Mola2017-04-2710-60/+199
| | | | | * add internal *url.URL implementation for regular URLs. * add internal implementation for SCP-like URLs.
* plumbing: transport, ssh fix public key builderMáximo Cuadros2017-04-261-1/+1
|
* Merge pull request #356 from mcuadros/ssh-default-authMáximo Cuadros2017-04-262-5/+22
|\ | | | | transport: ssh, new DefaultAuthBuilder variable
| * transport: ssh, travis testsMáximo Cuadros2017-04-211-4/+15
| |
| * transport: ssh, new DefaultAuthBuilder variableMáximo Cuadros2017-04-211-1/+7
| |
* | transport: ssh, NewPublicKeys support for encrypted PEM filesMáximo Cuadros2017-04-212-9/+35
|/
* transport: ssh, NewPublicKeys helperMáximo Cuadros2017-04-212-23/+68
|
* transport: ssh, fork knownhosts package (temporal)Máximo Cuadros2017-04-171-1/+1
|
* transport: ssh, default HostKeyCallbackMáximo Cuadros2017-04-163-2/+93
|
* plumbing: transport, handle 403 in http transportChris Dostert2017-04-105-8/+14
|
* use go-billy.v2 versionAntonio Jesus Navarro Perez2017-03-101-2/+2
|
* project: move imports from srcd.works to gopkg.inAntonio Jesus Navarro Perez2017-03-0729-90/+90
| | | | To be able to fix #261 we will move again to gopkg.in before v4 stable release.
* Merge pull request #294 from ajnavarro/improvement/todos-documentationSantiago M. Mola2017-03-012-6/+6
|\ | | | | Remove TODOs from documentation
| * Remove TODOs from documentationAntonio Jesus Navarro Perez2017-02-282-6/+6
| |
* | plumbing/revlist: input as a slice of hashes instead of commitsAntonio Jesus Navarro Perez2017-02-272-22/+2
|/ | | | | | | - Now the input of the method Objects inside revlist package is a slice of hashes instead of commits. Hashes can be from Blobs, Trees and Commits objects. - ObjectStorer now is used to obtain the object content using hashes slice. - This PR fix #222. Now a test into upload_pack_test.go file is not skipped anymore. - Remove code from remote.go and server.go that is not necessary.
* Merge pull request #282 from mcuadros/ssh-agent-fixMáximo Cuadros2017-02-212-3/+26
|\ | | | | plumbing/transport: git, error on empty SSH_AUTH_SOCK
| * plumbing/transport: git, error on empty SSH_AUTH_SOCKMáximo Cuadros2017-02-212-3/+26
| |
* | plumbing/transport: client avoid panics on nil protocolMáximo Cuadros2017-02-212-16/+26
|/
* transport/file: fix race condition on test (#267)Alberto Cortés2017-02-151-45/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes, the `TestClone` and `TestPush` tests of `transport/file` fail in travis. This is due to a race condition caused by an incorrect usage of `Cmd.Wait()` while reading from the output and error pipes of the command. This patch fixes the problem by using `Cmd.CombinedOutput()` instead of calling `Cmd.Start()` and `Cmd.Wait()` while reading from the output and error pipes. Details: From the `exec` package documentation: ``` Wait will close the pipe after seeing the command exit, so most callers need not close the pipe themselves; however, an implication is that it is incorrect to call Wait before all reads from the pipe have completed. For the same reason, it is incorrect to call Run when using StdoutPipe. ``` In our tests, the old `execAndGetOutput` function was creating two gorutines to read from the stderr and stdout pipes of the command and then call `Wait` on the command. This caused a race condition: when the `Wait` call finished before the gorutines have read from the pipes, they returned caused an error on `outErr`. The problem only happens sometimes on travis. To reproduce the problem locally, just add a call to time.Sleep(time.Second) to the gorutine before its `ioutil.ReadAll` call to delay them, then `Wait` will always finish before them, closing the pipes, and the gorutines will fail. The returned error detected by the test will be: ``` FAIL: server_test.go:55: ServerSuite.TestClone server_test.go:65: c.Assert(err, IsNil, Commentf("STDOUT:\n%s\nSTDERR:\n%s\n", stdout, stderr)) ... value *os.PathError = &os.PathError{Op:"read", Path:"|0", Err:0x9} ("read |0: bad file descriptor") ... STDOUT: STDERR: ```
* transport/file: delete suite tmp dir at teardown (#266)Alberto Cortés2017-02-131-5/+12
| | | | | | | | | | | The transport/file common suite test generates a temporal directory; It is used to store the go-git client command and some links to it: git-upload-pack and git-receive-pack. This directory is not deleted at the test teardown, so every time we run a test, we pollute "/tmp". This patch adds a teardown function for the suite that deletes the temporal directory. It also calls the teardown of the embedded fixtures.Suite, which is probably what we want also. I have also simplify the call to ioutil.TempDir as it already uses the default tmp dir if no dir is provided.
* package plumbing documentation improvements (#248)Máximo Cuadros2017-02-075-1/+6
|
* documentation changesMáximo Cuadros2017-01-311-1/+1
|
* new srcd.works/go-git.v4 pathMáximo Cuadros2017-01-3029-89/+89
|
* new git fixture pathMáximo Cuadros2017-01-307-7/+7
|
* rename billy importsMáximo Cuadros2017-01-301-2/+2
|
* transport/http: fix partial request with haves. Fix #216. (#221)Antonio Navarro Perez2017-01-255-4/+27
|
* transport: remove SetAuth, fixes #206 (#210)Anthony Weems2017-01-1719-120/+101
| | | | | * remove SetAuth functions, implement at NewUploadPackSession/NewReceivePackSession level. * propagate transport.Auth from Fetch/Pull/Clone options to the transport API.
* server: add git server implementation (#190)Santiago M. Mola2017-01-0428-273/+1250
| | | | | | | | | | | | | | | * server: add generic server implementation (transport-independent), both for git-upload-pack and git-receive-pack. * server: move internal functions to internal/common. * cli: add git-receive-pack and git-upload-pack implementations. * format/packfile: add UpdateObjectStorage function, extracted from Remote. * transport: implement tranport RPC-like, only with git-upload-pack and git-receive-pack methods. Client renamed to Transport. * storer: add storer.Storer interface. * protocol/packp: add UploadPackResponse constructor with packfile. * protocol/packp: fix UploadPackResponse encoding, add tests. * protocol/packp/capability: implement All.
* remote: add Push (#178)Santiago M. Mola2016-12-192-10/+47
| | | | | | | | | | | | * remote: add Push. * add Push method to Remote. * add method Push to Repository. * examples: add push example. * requested changes * add tests, fixes
* packfile: delta selection logic (#182)Antonio Navarro Perez2016-12-161-1/+1
| | | | | | | | | | * packfile: delta selection logic - Implemented logic to assign deltas to objects * Requested changes * Improved tests and fix errors
* transport: ssh, keeping the original path (#189)Máximo Cuadros2016-12-151-4/+1
|
* transport/git: fix pktline encode and timeoutMáximo Cuadros2016-12-121-8/+3
|
* plumbing/transport/git: fix import (#179)Santiago M. Mola2016-12-121-1/+1
|
* transport: new git protocol (#175)Máximo Cuadros2016-12-125-32/+223
|
* transport: add git-send-pack support to local/ssh. (#163)Santiago M. Mola2016-12-099-15/+463
| | | | | | | | | * protocol/packp: add Packfile field to ReferenceUpdateRequest. * protocol/packp: add NewReferenceUpdateRequestFromCapabilities. * NewReferenceUpdateRequestFromCapabilities can be used to create a ReferenceUpdateRequest with initial capabilities compatible with the server. * protocol/packp: fix new line handling on report status. * transport/file: test error on unexisting command.
* plumbing/transport: allow AdvertisedReferences being called multiple times. ↵Santiago M. Mola2016-12-085-31/+23
| | | | | | | | (#165) * AdvertisedReferences is now part of transport.Session. * It is allowed to be called more than once. * It is allowed to be called before and after FetchPack/SendPack. * Implementations cache its result.
* remote: sideband support (#164)Máximo Cuadros2016-12-073-33/+20
| | | | | | * remote: sideband support * changes
* revision based on goreportcard.comMáximo Cuadros2016-12-062-3/+2
|
* protocol/packp: UploadPackResponse implementation (#161)Máximo Cuadros2016-12-063-49/+25
| | | | | | | | | | | | | | | | * plumbing/protocol: paktp avoid duplication of haves, wants and shallow * protocol/pakp: UploadPackResponse implementation * changes * changes * changes * debug * changes
* transport/internal: error handling fixes and clean up (#160)Santiago M. Mola2016-12-063-21/+128
| | | | | | | | | | | | | | | | | | | | * protocol/packp: remove redundant isFlush check on AdvRefs. * protocol/packp: improve AdvRefs documentation. * transport: improve error handling for non-existing repos. * protocol/packp: AdvRefs Decode now returns different errors for empty, but syntactically correct, AdvRefs message (ErrEmptyAdvRefs) and empty input (ErrEmptyInput). * transport/internal/common: read stderr only when needed (ErrEmptyInput). Close the client gracefully. * transport/internal/common: missing stderr on non existing repository does not block. * transport/internal/common: buffer error messages. * transport/file: fix changing binary name, add tests. * transport/file: support changing git-upload-pack and git-receive-pack binary names. * transport/file: add tests for misbehaving servers. * transport/internal/common: remove Stderr field. * transport/internal/common: do not close twice.