-
Couldn't load subscription status.
- Fork 61
Closed
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
1. Problem
- Dependencies from different registries may have the same name, and the current way kpm uses file names can cause conflicts that rely on duplicate names.
- The local saving path of the three-party library is case-sensitive, this has different effects on windows and unix systems.
2. Solution
In order to solve the problem, we redesigned the storage local system of the third-party dependencies with reference to rust
└── kpm
├── .kpm # all the configuration file for kpm client
├── git # all the kcl dependencies from git repo
├── oci # all the kcl dependencies from oci registry
2.1 Git
Under the subdir in kpm/git, the storage local system is
kpm/git
├── checkouts. # checkout the specific version of git repository from cache bare repository
│ ├── kcl-2a81898195a215f1
│ │ └── 33bb450. . # All the version of kcl package from git repository will be replaced with commit id
│ ├── kcl-578669463c900b87
│ │ └── 33bb450
└── db # A bare git repository for cache git repo
├── kcl-2a81898195a215f1. # <NAME>-<HASH> <NAME> is the name of git repo,
├── kcl-578669463c900b87. # <HASH> is calculated by the git full url.
NOTE:
<NAME>-<HASH><NAME>is the name of git repo,<HASH>is calculated by the git url.<HASH>is mainly used to distinguish between different git repositories, such as github and gitlab, and the reason for using a hash value is mainly to mask the inconsistency of the symbols in the url and local path.
2.2 Oci
Under the subdir in kpm/oci, the storage local system is
kpm/oci
├── cache # the cache for KCL dependencies tar
│ ├── ghcr.io-2a81898195a215f1 # <HOST>-<HASH> HOST is the name of oci registry, <HASH> is calculated by the oci full url.
│ │ └── k8s_1.29.tar # the tar for KCL dependencies
│ ├── docker.io-578669463c900b87
│ │ └── k8s_1.28.tar
└── src
│ ├── ghcr.io-2a81898195a215f1
│ │ └── k8s_1.29 # the KCL dependencies tar will untar here
│ ├── docker.io-578669463c900b87
│ │ └── k8s_1.28
4. Implementation
- The cache module for oci: feat: add OciCache to support the new local file structure for OCI #502
Peefy
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Type
Projects
Status
Done