:PROPERTIES:
:ID:       cf5cadae-e01b-4099-86fe-b0e05bda4d39
:END:
#+title: swh.fuse
#+date: 2021-07-27 21:02:05 +08:00
#+date_modified: 2021-07-28 00:00:24 +08:00
#+language: en


A tool to interact with the Software Heritage Filesystem (SwhFS);
you can see [[id:4703f8c2-225c-4c76-a788-af04b84309ac][The Software Heritage Filesystem (SwhFS): Integrating Source Code Archival with Development]] paper for an introduction.

Some details about the tool itself...

- It is mainly used with the =swh fs= subcommand.

- To mount the filesystem itself, use =swh fs mount DIRECTORY=.

When mounted, the directory should have the following structure:

#+begin_src
swhfs
├── archive/
├── cache/
├── origin/
└── README
#+end_src

- =archive/= is the entry point for the archived repos in the library;
  the files inside there cannot be listed (e.g., =ls=, file managers)
  but you can access the files inside of it (e.g., text editors, file openers)
- =cache/= contains on-disk representation of metadata
- =origin/= is where mounting of origins with an encoded URL

For up-to-date information, you can read the =README= file.

With the complete setup, you are now ready to interact with the filesystem.
The point of interest here is the =archive/= directory which holds all of the objects in the merkle tree.
You can see the [[https://docs.softwareheritage.org/devel/swh-model/data-model.html#data-model][model data]] from their documentation.

You can interact with it by accessing one of the repo through their SWHID.

#+begin_src shell  :eval no
ls swhfs/archive/${SWHID}
#+end_src

The tool lazily loads the repo, saving bandwidth and disk space.
