Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
G
goyo-syncable-container
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 27
    • Issues 27
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 7
    • Merge Requests 7
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • kuraemon-goyo
  • packages
  • goyo-syncable-container
  • Merge Requests
  • !19

Open
Opened Sep 18, 2024 by 工藤 思由@s_kudoDeveloper
  • Report abuse
Report abuse

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch origin
git checkout -b "feature/refactorCompression" "origin/feature/refactorCompression"

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git fetch origin
git checkout "develop"
git merge --no-ff "feature/refactorCompression"

Step 4. Push the result of the merge to GitLab

git push origin "develop"

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines.

転送ファイル結合/圧縮のリファクタ

  • Overview 14
  • Commits 40
  • Changes 10

目的

既存のファイル結合圧縮ロジックがgoyoClientと密結合しており、サーバー側で圧縮ファイルが扱えないため、圧縮部分を分離する。

概要

goyoClientCompress.ts 内で実装されていた結合圧縮ロジックを util/compress.ts に切り出し、

goyoClientCompress.ts から util/compress.ts を呼び出す構成とした

また、test/util/serverSideCompress.test.ts にサーバーサイドで使用する場合のコードを表現した

使用する型
  • FileInfo: ファイルの基本情報 {filesize; pathname}
  • PackedFileInfo: 圧縮/結合ファイル情報 FileInfo に加えて圧縮/結合元の情報を持つ
  • PlainFileInfo: 展開/分解ファイル情報 FileInfo に加えて圧縮/結合先の情報を持つ
圧縮 -> 展開 の流れ

PackedFileListBuilderでファイルを結合/圧縮しPackedFileInfoを返却

PlainFileListBuilder.toPlainFileInfosでPackedFileInfoをPlainFileInfoに変換

PlainFileListBuilderでPackedFileInfoの一覧を受け取り、ファイルを取得して展開

主な変更点

goyoClientCompress.ts

この中にあった既存の圧縮ロジックを丸ごとutil/compress.tsに移動した

goyoClientCompressは既存の使用方法とcompress.tsの圧縮との変更を吸収レイヤーとして使用している

  • compressionStrategy を使用して差分ファイルのグループ化
  • 既存の型と上記の型に変換
  • compress.tsを呼び出して圧縮展開を実行

buildUploadSetの引数に``ProgressReporterが必要となったことに伴い、呼び出し元のgoyoClient.tsでprogressをdevideしている !19 (diffs)

サーバーサイドでの使用

test/util/serverSideCompress.test.tsに

compress.tsを使用したSyncableContainer.copyFromSnapshotListToLocalFileの代替実装を記した

Edited Oct 11, 2024 by 工藤 思由
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
Reference: kuraemon-goyo/packages/goyo-syncable-container!19
Source branch: feature/refactorCompression