aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing
Commit message (Collapse)AuthorAgeFilesLines
* plumbing: fix pack commands for the file client on WindowsJeremy Stribling2017-08-032-2/+75
| | | | | | The default git install on Windows doesn't come with commands for receive-pack and upload-pack in the default $PATH. Instead, use --exec-path to find pack executables in that case.
* transport: fix ssh override config, fixes #519v4.0.0-rc13Máximo Cuadros2017-07-282-5/+40
|
* Merge pull request #516 from smola/revlist-perfMáximo Cuadros2017-07-281-1/+28
|\ | | | | revlist: ignore all objects reachable from ignored objects
| * revlist: ignore all objects reachable from ignored objectsSantiago M. Mola2017-07-271-1/+28
| | | | | | | | | | | | | | Usually we call revlist.Objects ignoring a set of commits. This is not enough to ignore everything reachable from such set, so we first get all objects reachable from the ignored set and then walk the tree again ignoring that new set.
* | plumbing: add IsDelta method to ObjectTypeSantiago M. Mola2017-07-272-6/+8
| | | | | | | | | | ObjectType.IsDelta is a convenience function to match both offset and reference delta types.
* | storage: reuse deltas from packfilesSantiago M. Mola2017-07-277-98/+312
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * plumbing: add DeltaObject interface for EncodedObjects that are deltas and hold additional information about them, such as the hash of the base object. * plumbing/storer: add DeltaObjectStorer interface for object storers that can return DeltaObject. Note that calls to EncodedObject will never return instances of DeltaObject. That requires explicit calls to DeltaObject. * storage/filesystem: implement DeltaObjectStorer interface. * plumbing/packfile: packfile encoder now supports reusing deltas that are already computed (e.g. from an existing packfile) if the storage implements DeltaObjectStorer. Reusing deltas boosts performance of packfile generation (e.g. on push).
* | test: improve packfile.Encoder testsSantiago M. Mola2017-07-271-54/+68
| | | | | | | | | | | | | | * Improve checks for encode/decode. * Make it easier to extend this test with more storage backends.
* | plumbing/cache: change FIFO to LRU cacheSantiago M. Mola2017-07-273-90/+93
| |
* | storage/filesystem: reuse delta cacheSantiago M. Mola2017-07-271-10/+22
| | | | | | | | | | Reuse delta base object cache for packfile decoders across multiple instances.
* | plumbing/cache: use more explicit interfaceSantiago M. Mola2017-07-274-26/+44
|/ | | | | | * renamed Add to Put * Get returns a second bool value to indicate if there was hit or miss.
* format: idxfile, support for >2Gb packfilesMáximo Cuadros2017-07-274-1/+106
|
* packfile: create packfile.Index and reuse itSantiago M. Mola2017-07-269-93/+292
| | | | | | | | | | | | | | | There was an internal type (i.e. storage/filesystem.idx) to use as in-memory index for packfiles. This was not convenient to reuse in the packfile. This commit creates a new representation (format/packfile.Index) that can be converted to and from idxfile.Idxfile. A packfile.Index now contains the functionality that was scattered on storage/filesystem.idx and packfile.Decoder's internals. storage/filesystem now reuses packfile.Index instances and this also results in higher cache hit ratios when resolving deltas.
* transport: context package supportMáximo Cuadros2017-07-2511-39/+187
|
* Merge pull request #491 from smola/error-checksMáximo Cuadros2017-07-192-21/+22
|\ | | | | *: add more IO error checks
| * packfile: check close error in UpdateObjectStorageSantiago M. Mola2017-07-191-8/+14
| |
| * packfile: check zlib reader closing errorSantiago M. Mola2017-07-191-13/+8
| |
* | Merge pull request #493 from src-d/windowsMáximo Cuadros2017-07-193-3/+11
|\ \ | | | | | | *: several windows support fixes
| * | plumbing: transport server, remove letfoverMáximo Cuadros2017-07-191-3/+0
| | |
| * | plumbing: format config, escape back slashMáximo Cuadros2017-07-192-4/+2
| | |
| * | worktree: commit, use path package instead of filepathMáximo Cuadros2017-07-192-2/+10
| | |
| * | plumbing: transport git fix test on windowsMáximo Cuadros2017-07-181-1/+3
| | |
| * | plumbing: server, fix loader in windowsMáximo Cuadros2017-07-181-1/+4
| |/
* | Merge pull request #492 from ajnavarro/fix/panic-in-invalid-deltaMáximo Cuadros2017-07-192-16/+85
|\ \ | | | | | | packfile: Avoid panics patching corrupted deltas.
| * | packfile: Avoid panics patching corrupted deltasAntonio Jesus Navarro Perez2017-07-192-16/+85
| |/
* | repository: allow push from shallow repositoriesMáximo Cuadros2017-07-192-43/+24
| |
* | plumbing: object, allow ignore commits in commit walkersMáximo Cuadros2017-07-182-16/+105
|/
* Merge pull request #473 from taralx/patch-1Máximo Cuadros2017-07-131-2/+3
|\ | | | | Use buffered IO for decoding index files.
| * Use buffered IO for decoding index files.JP Sugarbroad2017-07-101-2/+3
| | | | | | | | This reduces syscall CPU time from >40% to <10% in my local repository.
* | Merge pull request #475 from mcuadros/fix-ackMáximo Cuadros2017-07-122-23/+42
|\ \ | | | | | | plumbing: protocol, fix handling multiple ACK on upload-pack and test…
| * | plumbing: protocol, fix handling multiple ACK on upload-packMáximo Cuadros2017-07-122-23/+42
| | |
* | | Merge pull request #476 from smola/server-as-clientMáximo Cuadros2017-07-113-7/+49
|\ \ \ | | | | | | | | transport/server: add asClient parameter
| * | | transport/server: add NewClientSantiago M. Mola2017-07-113-7/+49
| |/ / | | | | | | | | | | | | | | | server.NewClient returns a server that acts as a client. This makes it working seamlessly when registering a server directly with `client.InstallProtocol`.
* | | Merge pull request #472 from smola/fix-caps-delete-refsMáximo Cuadros2017-07-114-37/+17
|\ \ \ | |/ / |/| | improve delete support on push
| * | improve delete support on pushSantiago M. Mola2017-07-114-37/+17
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * server: implement delete-refs and announce it. * remote: check if server announced delete-refs before trying to delete and fail fast if it does not. Note that the client does not need no send 'delete-refs' back to the server to be able to delete references: ``` delete-refs ----------- If the server sends back the 'delete-refs' capability, it means that it is capable of accepting a zero-id value as the target value of a reference update. It is not sent back by the client, it simply informs the client that it can be sent zero-id values to delete references. ``` So our server implementation does not check if the client sent delete-refs back, it just accepts deletes if it receives them.
* | Merge pull request #469 from mcuadros/fix-multiple-ackMáximo Cuadros2017-07-114-17/+76
|\ \ | |/ |/| plumbing: protocol, fix handling multiple ACK on upload-pack
| * plumbing: protocol, fix handling multiple ACK on upload-packMáximo Cuadros2017-07-084-17/+76
| |
* | Merge pull request #464 from smola/race-463Máximo Cuadros2017-07-072-21/+31
|\ \ | | | | | | transport/file: avoid race with Command.Wait, fixes #463
| * | transport/file: avoid race with Command.Wait, fixes #463Santiago M. Mola2017-07-071-4/+14
| | | | | | | | | | | | | | | | | | Pipe returned by Command.StderrPipe() has a race with Read and Command.Wait(). We use a io.Pipe() instead and ensure it is closed after Wait().
| * | transport/internal: read only first error lineSantiago M. Mola2017-07-071-17/+17
| |/ | | | | | | | | | | | | We only use the first line of error output. So we use a channel with a single byte buffer and read the first line from stderr. Further output is discarded, as well as any further I/O error, which might be expected when closing the pipe (command finished).
* / fix reference shorteningSantiago M. Mola2017-07-072-18/+23
|/ | | | | Implemented according to git shorten_unambiguous_ref. See: https://github.com/git/git/blob/e0aaa1b6532cfce93d87af9bc813fb2e7a7ce9d7/refs.c#L1030
* Merge pull request #423 from smola/ssh-optionsMáximo Cuadros2017-07-051-3/+36
|\ | | | | transport/ssh: allow passing SSH options
| * transport/ssh: allow global *ssh.ClientConfig overrideSantiago M. Mola2017-06-231-14/+31
| | | | | | | | | | A global *ssh.ClientConfig override can be set. It will be use to override values of each SSH session.
| * transport/ssh: allow passing SSH optionsSantiago M. Mola2017-06-231-3/+19
| | | | | | | | | | Adds the possibility of passing options to SSH transport. Options have the form of functions modifying ssh.ClientConfig.
* | fix auth error issueAntonio Jesus Navarro Perez2017-07-042-1/+7
| |
* | fix CGI git serverAntonio Jesus Navarro Perez2017-07-041-7/+14
| |
* | transport: http pushAntonio Jesus Navarro Perez2017-07-044-77/+253
| |
* | capability: accept unknown capabilities, fixes #450Santiago M. Mola2017-06-232-10/+6
|/ | | | | | | | | GitHub has started using a non-standard capability "early-capabilities" with agent=git/github-g3daa19f21. This is breaking all go-git operations on GitHub. This commit removes validation for known capabilities, so that we can use non-standard capabilities safely.
* revlist: ignore treeEntries that are submodules.Antonio Jesus Navarro Perez2017-06-192-1/+24
| | | | - If we don't ignore submodules in trees, when we tried to perform a push, revlist.Objects returned hashes that was from submodules, causing an "object not found" error in packfile generation.
* plumbing: gitignore, upgrade to go-billy.v3 and test with gocheckMáximo Cuadros2017-06-194-218/+199
|
* Merge pull request #429 from silvertern/gitignoreMáximo Cuadros2017-06-197-0/+676
|\ | | | | Adds .gitignore support