gatsby-tinacms-git

A Gatsby/Tina plugin for editing content/data files stored in git.

Installation

yarn add gatsby-plugin-tinacms gatsby-tinacms-git

Setup

Include gatsby-plugin-tinacms and gatsby-tinacms-gitin your config:

gatsby-config.js

module.exports = {
  // ...
  plugins: [
    // ...
    {
      resolve: 'gatsby-plugin-tinacms',
      options: {
        plugins: ['gatsby-tinacms-git'],
      },
    },
  ],
}

Options

// reference @tinacms/api-git

interface GitServerConfig extends GitRouterConfig {
  pathToRepo: string
  pathToContent: string
  gitRemote?: string
  sshKey?: string
}

interface GitRouterConfig {
  defaultCommitMessage: string
  defaultCommitName: string
  defaultCommitEmail: string
  pushOnCommit: boolean
}

const DEFAULT_OPTIONS: GitRouterConfig = {
  defaultCommitMessage: 'Edited with TinaCMS',
  defaultCommitName: 'TinaCMS',
  defaultCommitEmail: '[email protected]',
  pushOnCommit: true,
}
OptionDescription
pathToRepoThe base-path to the repository where the content is stored in. Default: The repository root.
pathToContentThe directory to the root of your app within the repository. Default: The repository root. This can be useful for monorepos, when you have multiple sites within one repository.
defaultCommitMessageThe default commit message. Default: 'Edited with TinaCMS'
defaultCommitNameThe default Git user name.
defaultCommitEmailThe default Git user email.
pushOnCommitIndicates if every commit should also be pushed automatically. Default: true.
gitRemoteGit SSH remote url for the repository. Default: undefined.
sshKeyBase64 encoded SSH private key that has access to the repository. This should not be committed to your repository. This value should be undefined or load the key from an environment variable (ie. process.env.SSH_KEY). Default: undefined.

Configuring the File Writing Debounce

The TINA_GIT_DEBOUNCE_MS environment variable can be used to change the debounce rate for file writing. This value defaults to 1000 milliseconds.

TINA_GIT_DEBOUNCE_MS=3000 gatsby develop

This is useful when running in your site in cloud editing environment i.e. Gatsby Cloud or Heroku.