Comments (5)
Thanks so much for the write up! And I can tell you that especially the bonus point is what interests me! If this would be on the server side, this could result in massive time savings. That also implies that there should be some control about how much resources you actually want to put into it, otherwise slow connection would likely trigger higher CPU usage.
Something that should always be an option is to directly copy entries from a possibly highly compressed pack, which basically costs nothing. That way, one would differentiate between even trying to create efficient packs (during operations like gc
), and trying to transfer data quickly ideally without initial delay.
A cool hybrid of both of these operations would be to use the transfer time for packing, and after transfer one could re-integrate the potentially more compressed parts of the transferred pack into the existing one. For git hosting providers, that would be something like auto-gc, if that is even ever useful :D.
Generally, the idea of having a massively bored 96 core server that sends data to a receiver through a 5kbit modem line and use all 96 cores to crush the pack down to 1/60 compression ratios seems like great fun!
Potentially making it easy to stream directories or tar files directly into a pack would make git packs into a genuine transport format, which also sounds interesting. That case can probably be supported at first by adding the source data into an in-memory object database, from which objects can later be streamed.
Anyway, I will keep you posted here once there is anything to test :).
from gitoxide.
Great, unless I forget I will announce that here and work in a PR for that, no problem. It's probably the easiest way for you to follow along and set the stage for early feedback - for that task I can use all the help I can get 😅!
from gitoxide.
In the current iteration, I believe it's time to implement a first stab at pack generation. It certainly won't be fancy, but I will do my best to build the machinery so that it can support streaming of packs with various settings.
To my mind, this will absolutely be possible and I would also want to start out reducing the time it takes to start streaming a pack, and overall, clone and fetch.
Exiting times ahead!
from gitoxide.
I'm interested in following along pack writing/generation work - if there ends up being a branch that I can watch I'd love to hear about it
(no pressure - it's totally up to you what makes most sense when you do the work)
from gitoxide.
Notes
from gitoxide.
Related Issues (20)
- Incomplete note on async use of fetch_only HOT 2
- OSS-Fuzz issue 64904 HOT 1
- update ring dependency HOT 4
- Inconsistency in gix clone with repo url with a dot. HOT 1
- oxidize `lilgit` HOT 1
- `gix-archive` - submodule support
- Updating packed-refs fails on Windows if `mmap`-ed (i.e. file size is over 32KiB) HOT 6
- OSS-Fuzz issue 65196 HOT 1
- Consider a `crates` folder HOT 1
- OSS-Fuzz issue 65229 HOT 1
- OSS-Fuzz issue 65231 HOT 1
- some dependencies are yanked HOT 1
- gitoxide requires miniz_oxide even when building with libz-ng HOT 3
- OSS-Fuzz issue 65351 HOT 1
- gix-index failing to build on NetBSD HOT 3
- Provide usage examples for the `Find` trait HOT 3
- Create a git wrapper that polyfill's unsupported behaviour HOT 1
- Rewrite tracker panics on BlobExecutable HOT 2
- OSS-Fuzz issue 65492 HOT 1
- make `ItemSliceSync` safe HOT 15
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gitoxide.