Git pull


Load and update configuration files for Home Assistant from a GIT repository.

{
  "repository": "https://example.com/my_configs.git",
  "auto_restart": false,
  "git_branch": "master",
  "git_command": "pull",
  "git_remote": "origin",
  "repeat": {
    "active": false,
    "interval": 300
  },
  "deployment_key": [
"-----BEGIN RSA PRIVATE KEY-----",
"MIIEowIBAAKCAQEAv3hUrCvqGZKpXQ5ofxTOuH6pYSOZDsCqPqmaGBdUzBFgauQM",
"xDEcoODGHIsWd7t9meAFqUtKXndeiKjfP0MMKsttnDohL1kb9mRvHre4VUqMsT5F",
"...",
"i3RUtnIHxGi1NqknIY56Hwa3id2yk7cEzvQGAAko/t6PCbe20AfmSQczs7wDNtBD",
"HgXRyIqIXHYk2+5w+N2eunURIBqCI9uWYK/r81TMR6V84R+XhtvM",
"-----END RSA PRIVATE KEY-----"
  ],
  "deployment_key_protocol": "rsa"
}
  • repository (Required): Git URL to your repository (make sure to use double quotes). You have to add .git to your GitHub repository URL (see example config)
  • git_branch (Required): Branch name of the git repo, leave this as ‘master’ if you are unsure.
  • git_remote (Required): Name of the tracked repository, leave this as ‘origin’ if you are unsure.
  • git_command (Required): Must be either ‘pull’ or ‘reset’, leave this as ‘pull’ if you are unsure.

    • pull: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files.
    • reset: Will execute git reset --hard and overwrite any local changes to tracked files and update from the remote repository.

Using the reset option will overwrite changes to tracked files. Tracked files are those visible in the Github repository or those given by the output on this command: git ls-tree -r master --name-only

  • auto_restart (Optional): Restart Home Assistant when the configuration has changed (and is valid).
  • repeat/active (Optional): Pull periodic for git updates.
  • repeat/interval (Optional): Pull all x seconds and look for changes.
  • deployment_user (Optional): Username to use when authenticating to a repo with a username and password.
  • deployment_password (Optional): Password to use when authenticating to a repo. Ignored if deployment_user is not set.
  • deployment_key (Optional): A private SSH key that will be used for communication during git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: <user>@<host>:<repository path>.
  • deployment_key_protocol (Optional): The key protocol. Default is “rsa”. Valid protocols are:

    • dsa
    • ecdsa
    • ed25519
    • rsa

The protocol is typically known by the suffix of the private key –e.g., a key file named id_rsa will be a private key using “rsa” protocol.

You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a .git folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is ls -a /config.