title: Local Git
icon: '/_assets/icons/ultraviolet-git.svg'
banner: '/_assets/storage/git.jpg'
description: Git is a version control system for tracking changes in computer files and coordinating work on those files among multiple people. If using GitHub, use the GitHub module instead!
vendor: Software Freedom Conservancy, Inc.
website: 'https://git-scm.com'
assetDelivery:
  isStreamingSupported: true
  isDirectAccessSupported: false
  defaultStreamingEnabled: true
  defaultDirectAccessEnabled: false
contentTypes:
  defaultTypesEnabled: ['pages', 'images', 'documents', 'others', 'large']
  defaultLargeThreshold: '5MB'
versioning:
  isSupported: true
  defaultEnabled: true
  isForceEnabled: true
sync:
  supportedModes:
    - sync
    - push
    - pull
  defaultMode: sync
  schedule: PT5M
props:
  authType:
    type: String
    default: 'ssh'
    title: Authentication Type
    hint: Use SSH for maximum security.
    icon: security-configuration
    enum:
      - basic|Basic
      - ssh|SSH
    enumDisplay: buttons
    order: 1
  repoUrl:
    type: String
    title: Repository URI
    hint: Git-compliant URI (e.g. git@server.com:org/repo.git for ssh, https://server.com/org/repo.git for basic)
    icon: dns
    order: 2
  branch:
    type: String
    default: 'main'
    title: Branch
    hint: The branch to use during pull / push
    icon: code-fork
    order: 3
  sshPrivateKeyMode:
    type: String
    title: SSH Private Key Mode
    hint: The mode to use to load the private key. Fill in the corresponding field below.
    icon: grand-master-key
    order: 11
    default: inline
    enum:
        - path|File Path
        - inline|Inline Contents
    enumDisplay: buttons
    if:
      - { key: 'authType', eq: 'ssh' }
  sshPrivateKeyPath:
    type: String
    title: SSH Private Key Path
    hint: Absolute path to the key. The key must NOT be passphrase-protected.
    icon: key
    order: 12
    if:
      - { key: 'authType', eq: 'ssh' }
      - { key: 'sshPrivateKeyMode', eq: 'path' }
  sshPrivateKeyContent:
    type: String
    title: SSH Private Key Contents
    hint: Paste the contents of the private key. The key must NOT be passphrase-protected.
    icon: key
    multiline: true
    sensitive: true
    order: 13
    if:
      - { key: 'authType', eq: 'ssh' }
      - { key: 'sshPrivateKeyMode', eq: 'inline' }
  verifySSL:
    type: Boolean
    default: true
    title: Verify SSL Certificate
    hint: Some hosts requires SSL certificate checking to be disabled. Leave enabled for proper security.
    icon: security-ssl
    order: 14
  basicUsername:
    type: String
    title: Username
    hint: Basic Authentication Only
    icon: test-account
    order: 20
    if:
      - { key: 'authType', eq: 'basic' }
  basicPassword:
    type: String
    title: Password / PAT
    hint: Basic Authentication Only
    icon: password
    sensitive: true
    order: 21
    if:
      - { key: 'authType', eq: 'basic' }
  defaultEmail:
    type: String
    title: Default Author Email
    default: 'name@company.com'
    hint: 'Used as fallback in case the author of the change is not present.'
    icon: email
    order: 30
  defaultName:
    type: String
    title: Default Author Name
    default: 'John Smith'
    hint: 'Used as fallback in case the author of the change is not present.'
    icon: customer
    order: 31
  localRepoPath:
    type: String
    title: Local Repository Path
    default: './data/repo'
    hint: 'Path where the local git repository will be created.'
    icon: symlink-directory
    order: 32
  gitBinaryPath:
    type: String
    title: Git Binary Path
    default: ''
    hint: Optional - Absolute path to the Git binary, when not available in PATH. Leave empty to use the default PATH location (recommended).
    icon: run-command
    order: 50
actions:
  syncUntracked:
    label: Add Untracked Changes
    hint: Output all content from the DB to the local Git repository to ensure all untracked content is saved. If you enabled Git after content was created or you temporarily disabled Git, you'll want to execute this action to add the missing untracked changes.
    icon: database-daily-export
  sync:
    label: Force Sync
    hint: Will trigger an immediate sync operation, regardless of the current sync schedule. The sync direction is respected.
    icon: synchronize
  importAll:
    label: Import Everything
    hint: Will import all content currently in the local Git repository, regardless of the latest commit state. Useful for importing content from the remote repository created before git was enabled.
    icon: database-daily-import
  purge:
    label: Purge Local Repository
    hint: If you have unrelated merge histories, clearing the local repository can resolve this issue. This will not affect the remote repository or perform any commit.
    icon: trash
