]> Cypherpunks.ru repositories - gocheese.git/blob - doc/storage.texi
Move documentation to doc/
[gocheese.git] / doc / storage.texi
1 @node Storage
2 @unnumbered Storage format
3
4 Root directory has the following hierarchy:
5
6 @verbatim
7 root
8   +-- public-package
9   |     +- public-package-0.1.tar.gz.md5
10   |     +- public-package-0.1.tar.gz.blake2_256
11   |     +- public-package-0.1.1.tar.gz.blake2_256
12   |     +- public-package-0.2.tar.gz
13   |     +- public-package-0.2.tar.gz.asc
14   |     +- public-package-0.2.tar.gz.sha256
15   +-- private-package
16   |     +- .internal
17   |     +- private-package-0.1.tar.gz
18   |     +- private-package-0.1.tar.gz.asc
19   |     +- private-package-0.1.tar.gz.sha256
20   |...
21 @end verbatim
22
23 Each directory is a normalized package name. When you try to list non
24 existent directory contents (you are downloading package you have not
25 seen before), then GoCheese will download information about package's
26 versions with checksums and write them in corresponding
27 @file{.sha256}, @file{.blake2_256}, @file{.sha512}, @file{.md5} files.
28 However no package package tarball is downloaded.
29
30 When you request for particular package version, then its tarball is
31 downloaded and verified against the stored checksum. But SHA256 is
32 forced to be stored and used later.
33
34 For example @file{public-package} has @code{0.1} version, downloaded a
35 long time ago with MD5 checksum. @code{0.1.1} version is downloaded more
36 recently with BLAKE2b-256 checksum, also storing that checksum for
37 @code{0.1}. @code{0.2} version is downloaded tarball, having forced
38 SHA256 recalculated checksum. Also upstream has corresponding
39 @file{.asc} signature file.
40
41 @file{private-package} is private package, because it contains
42 @file{.internal} file. It can be uploaded and queries to it are not
43 proxied to upstream PyPI. You have to create it manually. If you upload
44 GPG signature, then it will be also stored.