Setup and Usage

Setup

A garden can be created in any directory. Run garden init to create an empty "garden.yaml" file for defining trees, groups and gardens.

# Create an empty "garden.yaml" in the current directory.
garden init

By default, the garden.yaml is configured to operate on trees in the current directory relative to the garden file. The garden command searches the current directory for a "garden.yaml" config file.

If no "garden.yaml" could be found in the current directory then garden will attempt to load a "global" configuration file, typically located in ~/.config/garden/garden.yaml.

The following garden init invocation creates an empty garden.yaml with a root directory of ~/src in the user's home configuration directory. This is typically ~/.config/garden/garden.yaml.

garden init --global --root '~/src'

This allows you to access the config irrespective of the current directory and perform garden operations without needing to cd into ~/src/ to do so.

If multiple configuration files are made available in ~/.config/garden, then using garden -c alt.yaml ... from any directory (without specifying an absolute path) will use the alt.yaml garden file.

Usage

Now that we know how to create a garden.yaml we can start using garden to track our development repositories.

When we have a ~/src/garden.yaml file with Git worktrees alongside it in the ~/src directory then we can start adding those trees to the garden file. Existing trees are added to a garden file using garden plant <tree>.

Once we have a garden file with trees in it then we can use the garden file to recreate our setup using garden grow. The garden grow command brings trees into existence by cloning trees that have been configured in a garden file.

Garden commands are used to operate over sets of trees once a configuration has been defined. See the Garden Commands Documentation for detailed information about the built-in garden commands.