mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-07-29 12:42:36 +00:00
Use git filters for incremental updates from a git repository.
This commit changes the git fetch algorithm to only retrieve blobs that aren't included in the previously deployed site manifest, if git filters are supported by the remote. It also changes how manifest entry sizes are represented, such that both decompressed and compressed sizes are stored. This enables computing accurate (and repeatable) sizes even after incremental updates. Co-authored-by: David Leadbeater <dgl@dgl.cx>
This commit is contained in:
co-authored by
David Leadbeater
parent
af40848d9f
commit
89c57cfadb
+16
-5
@@ -26,8 +26,13 @@ enum Transform {
|
||||
message Entry {
|
||||
Type type = 1;
|
||||
// Only present for `type == InlineFile` and `type == ExternalFile`.
|
||||
// For transformed entries, refers to the post-transformation (compressed) size.
|
||||
int64 size = 2;
|
||||
// For transformed entries, refers to the pre-transformation (decompressed) size; otherwise
|
||||
// equal to `compressed_size`.
|
||||
int64 original_size = 7;
|
||||
// Only present for `type == InlineFile` and `type == ExternalFile`.
|
||||
// For transformed entries, refers to the post-transformation (compressed) size; otherwise
|
||||
// equal to `original_size`.
|
||||
int64 compressed_size = 2;
|
||||
// Meaning depends on `type`:
|
||||
// * If `type == InlineFile`, contains file data.
|
||||
// * If `type == ExternalFile`, contains blob name (an otherwise unspecified
|
||||
@@ -41,6 +46,12 @@ message Entry {
|
||||
// Only present for `type == InlineFile` and `type == ExternalFile`.
|
||||
// Currently, optional (not present on certain legacy manifests).
|
||||
string content_type = 5;
|
||||
// May be present for `type == InlineFile` and `type == ExternalFile`.
|
||||
// Used to reduce the amount of work being done during git checkouts.
|
||||
// The type of hash used is determined by the length:
|
||||
// * 40 bytes: SHA1DC (as hex)
|
||||
// * 64 bytes: SHA256 (as hex)
|
||||
string git_hash = 6;
|
||||
}
|
||||
|
||||
// See https://docs.netlify.com/manage/routing/redirects/overview/ for details.
|
||||
@@ -76,9 +87,9 @@ message Manifest {
|
||||
|
||||
// Contents
|
||||
map<string, Entry> contents = 4;
|
||||
int64 original_size = 10; // total size of entries before compression
|
||||
int64 compressed_size = 5; // simple sum of each `entry.size`
|
||||
int64 stored_size = 8; // total size of (deduplicated) external objects
|
||||
int64 original_size = 10; // sum of each `entry.original_size`
|
||||
int64 compressed_size = 5; // sum of each `entry.compressed_size`
|
||||
int64 stored_size = 8; // sum of deduplicated `entry.compressed_size` for external files only
|
||||
|
||||
// Netlify-style `_redirects` and `_headers`
|
||||
repeated RedirectRule redirects = 6;
|
||||
|
||||
Reference in New Issue
Block a user