| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
revlist: ignore all objects reachable from ignored objects
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
ObjectType.IsDelta is a convenience function to match both
offset and reference delta types.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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).
|
| |
| |
| |
| |
| |
| |
| | |
* Improve checks for encode/decode.
* Make it easier to extend this test with more
storage backends.
|
| | |
|
| |
| |
| |
| |
| | |
Reuse delta base object cache for packfile decoders
across multiple instances.
|
|/
|
|
|
|
| |
* renamed Add to Put
* Get returns a second bool value to indicate if there
was hit or miss.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|\
| |
| | |
*: add more IO error checks
|
| | |
|
| | |
|
|\ \
| | |
| | | |
*: several windows support fixes
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
|\ \
| | |
| | | |
packfile: Avoid panics patching corrupted deltas.
|
| |/ |
|
| | |
|
|/ |
|
|\
| |
| | |
Use buffered IO for decoding index files.
|
| |
| |
| |
| | |
This reduces syscall CPU time from >40% to <10% in my local repository.
|
|\ \
| | |
| | | |
plumbing: protocol, fix handling multiple ACK on upload-pack and test…
|
| | | |
|
|\ \ \
| | | |
| | | | |
transport/server: add asClient parameter
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
server.NewClient returns a server that acts as a client.
This makes it working seamlessly when registering a server directly with
`client.InstallProtocol`.
|
|\ \ \
| |/ /
|/| | |
improve delete support on push
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
|\ \
| |/
|/| |
plumbing: protocol, fix handling multiple ACK on upload-pack
|
| | |
|
|\ \
| | |
| | | |
transport/file: avoid race with Command.Wait, fixes #463
|
| | |
| | |
| | |
| | |
| | |
| | | |
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().
|
| |/
| |
| |
| |
| |
| |
| | |
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).
|
|/
|
|
|
| |
Implemented according to git shorten_unambiguous_ref.
See: https://github.com/git/git/blob/e0aaa1b6532cfce93d87af9bc813fb2e7a7ce9d7/refs.c#L1030
|
|\
| |
| | |
transport/ssh: allow passing SSH options
|
| |
| |
| |
| |
| | |
A global *ssh.ClientConfig override can be set. It will be
use to override values of each SSH session.
|
| |
| |
| |
| |
| | |
Adds the possibility of passing options to SSH transport.
Options have the form of functions modifying ssh.ClientConfig.
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
- 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.
|
| |
|
|\
| |
| | |
Adds .gitignore support
|
| | |
|
| | |
|