aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing
Commit message (Collapse)AuthorAgeFilesLines
* 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
| * Adds gitignore supportOleg Sklyar2017-06-197-0/+676
| |
* | *: upgrade to go-billy.v3, mergeMáximo Cuadros2017-06-187-27/+26
| |
* | Merge pull request #421 from smola/iter-namingMáximo Cuadros2017-06-143-7/+7
|\ \ | | | | | | fix naming of NewCommit{Pre,Post}Iterator
| * | fix naming of NewCommit{Pre,Post}IteratorSantiago M. Mola2017-06-133-7/+7
| |/ | | | | | | | | Use Iter suffix, just as all other iterators in the project. Use Preorder and Postorder to be more clear.
* | Merge pull request #422 from smola/gofmtMáximo Cuadros2017-06-133-3/+5
|\ \ | | | | | | fix gofmt