# The repository-states.json file format

In the context of subuser, a `repository-states.json` file is a file which serializes the mutable state of each subuser repository.

Unlike `repositories.json` this is a per-user file which is non-hierarchical.

Each repository-states.json file is to be a valid json file containing a single json object.

This object is a set of key value pairs where each key is the identifier of a subuser repository.

Repositories which the user has yet to initialize(by installing a image from that repository) are not represented in this file.

Each repository identifier can either be:

  - string - for a named repository

  - number - for an annonymous repository

Repository names must not contain any of the following characters: `\`, `:` .

The value is a json object with the following properties:

## Properties

> - `git-commit-hash`: The hash of the currently checked out commit of the subuser repository. Specifically, this is the output of `git show-ref -s HEAD` when run within the given repository’s git repository. If the repository is not managed by git, this attribute may be set to `nil`.

> > Ex:

> >     "git-commit-hash" : "a88ce1ec812fec3072b255d7ef7aa53f281d1dcf"