| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Javi Fontan <jfontan@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Decoder object can make use of an object cache to speed up processing.
Previously the only way to specify it was changing manually the struct
generated by NewDecodeForFile. This lead to some instances to be created
without it and penalized performance.
Now the cache should be explicitly passed to the constructor function.
NewDecoder now creates objects with a cache using the default size.
A new helper function was added to create cache objects with the default
size as this becomes a common task now:
cache.NewObjectLRUDefault()
Signed-off-by: Javi Fontan <jfontan@gmail.com>
|
|
|
|
| |
This change adds a new method Alternates() in DotGit to check and
query alternate source.
|
|
|
|
|
|
| |
Suggested by mcuadros.
Issue: #669
|
|
|
|
|
|
|
| |
This allows the user to check whether an object exists, without
reading all the object data from storage.
Issue: KBFS-2445
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- no length for map initialization
- don't check for boolean/error return
- don't format string
- use string method of bytes buffer instead of converting bytes to
string
- use `strings.Contains` instead of `strings.Index`
- use `bytes.Equal` instead of `bytes.Compare`
|
|
|
|
| |
Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
|
|\
| |
| | |
storage: reuse deltas from packfiles
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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).
|
|/ |
|
| |
|
|
|
|
|
| |
Reuse delta base object cache for packfile decoders
across multiple instances.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
fixes #327
|
| |
|
|
|
|
| |
To be able to fix #261 we will move again to gopkg.in before v4 stable release.
|
|
|
|
|
| |
- Deleted invalid logic that returned nil if an ref-delta was not found into the decoder index. This logic was missing objects if it was deltified using ref-deltas.
- Now, to avoid that problem, index is mandatory to decode correctly a packfile of a specific type. Decoder.SetOffsets method now is called into the EncodedObjectIterator to avoid this problem.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Extract billy
Billy is a new library directly extracted from go-git. It abstract
several storages systems in a filesystem interface.
More in github.com/src-d/billy
* Fix grouping in imports block
* Update billy to v1
* Re-remove fs_implementation example
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* plumbing: rename Object -> EncodedObject.
* plumbing/storer: rename ObjectStorer -> EncodedObjectStorer.
* move difftree to plumbing/difftree.
* move diff -> utils/diff
* make Object/Tag/Blob/Tree/Commit/File depend on storer.
* Object and its implementations now depend only on
storer.EncodedObjectStorer, not git.Repository.
* Tests are decoupled accordingly.
* move Object/Commit/File/Tag/Tree to plumbing/object.
* move Object/Commit/File/Tag/Tree to plumbing/object.
* move checkClose to utils/ioutil.
* move RevListObjects to plumbing/revlist.Objects.
* move DiffTree to plumbing/difftree package.
* rename files with plural nouns to singular
* plumbing/object: add GetBlob/GetCommit/GetTag/GetTree.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* plumbing: move plumbing/client package to plumbing/transport.
* transport: create Client interface.
* A Client can instantiate any client transport service.
* InstallProtocol installs a Client for a given protocol,
instead of just a UploadPackService.
* A Client can open a session for fetch-pack or send-pack
for a specific Endpoint.
* Adapt ssh and http clients to the new client interface.
* updated doc
|
|
|
| |
* plumbing: now core was renamed to core, and formats and clients moved inside
|
|
|
|
|
|
|
|
|
|
|
| |
* core: ObjectStorage, ReferenceStorage renamed to ObjectStorer and
ReferenceStorer
* rebase
* general, changes request by @alcortes
* general, changes request by @alcortes
|
|
|
|
|
|
|
| |
* storage/filesystem: added ObjectStorage Set.
* storage/filesystem: now passes all tests, except those specific to transactions.
* formats/config: Encoder now encodes subsections with no options.
* formats/config: add HasSubsection on Section.
* dotgit: add Ref method to get specific reference.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Support non packed git objects
* Support non packed git objects for Iterator
* Fix error handling from Writer() in FillObject()
* Fix format in func (r *Reader) FillObject(obj core.Object) error
* Fix to return d.addRefsFromPackedRefs() error
And if packed-refs dosen't exist not to return error in d.addRefsFromPackedRefs
* Remove debug code
* Add GoDoc for func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Add GoDoc for func (r *Reader) FillObject(obj core.Object) error
* Add GoDoc for func (d *DotGit) Objectfiles() (fs.FS, []core.Hash, error)
* Fix format in func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Rename value dotGitobjcts -> objsDir
* Change regexp.Compile -> regexp.MustCompile
* Move regexp to variable initialization
* Rename regexp value to be more coherent
* Fix object directory name and object file name to correct character
* Faster Objectfiles func
* Add test for FillObject
* Add GoDoc for func (s *ObjectStorage) Get(h core.Hash) (core.Object, error)
* defer Close()
* Return name values for defer function overwrite the error value.
* Fix error handling in func (s *ObjectStorage) Get()
Return error that gets error except for ErrObjfileNotFound from getFromUnpacked()
* Rename getFromObject -> getFromUnpacked
* Add test for func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Add test for func (d *DotGit) Objectfiles() (fs.FS, []core.Hash, error)
* Faster check git object name
* Faster dotgit_test.go
* Fix Godoc for Objectfiles func
* Refactor variable name in Objectfiles func
* Fix GoDoc for objectfile func
* Fix TestObjectfile func and TestObjectfiles func
* Rename fixobj -> fixObj in Test Objectfile func
* Fix test compare method
* Refactor Get func in object.go
* Refactor getFromUnpacked func in object.go
* Fix GoDoc for ErrObjfileNotFound
* Fix TestObjectfiles for not guarantee the slice order
* Change error no such file or directory to target file not found
* Change spec func (s *ObjectStorage) Get(h core.Hash) (core.Object, error)
return core.ErrObjectNotFound, if index pointer is nil.
* Add space
* storage: Add object type hint parameter to ObjectStorage.getFromUnpacked
|
| |
|
|
|
|
|
|
|
| |
Some storage backends can optimize object lookup if they get
the object type that is expected. So we the signature of the Get
method is now Get(Hash, ObjectType).
Added generic tests for storage backends.
|
|
|