id = "smartgit" name = "SmartGit" homepage = "https://www.syntevo.com/smartgit/" # syntevo's own words, from the SmartGit product page: "SmartGit ยท Visual Git # client" and "Manage commits, branches, and merges in a powerful, graphical # Git interface." description = "A visual Git client: manage commits, branches and merges in a powerful, graphical Git interface." # The SVG favicon SmartGit's own site serves. icon = "https://www.smartgit.dev/images/favicon.svg" # The Homebrew cask links the app's executable onto the PATH as `SmartGit`: # `binary "#{appdir}/SmartGit.app/Contents/MacOS/SmartGit"` # (Casks/s/smartgit.rb). On Linux the archive is started from its own bin # directory rather than from a name on the PATH, so only the cask-verified # spelling is claimed here. executables = ["SmartGit"] [dotfiles] # The settings directory is documented in syntevo's own manual, "SmartGit # Installation File Locations" # (https://docs.syntevo.com/SmartGit/26.1/Manual/Installation/Installation-and-Files.html): # # Windows "%APPDATA%\syntevo\SmartGit\" # macOS "~/Library/Preferences/SmartGit/" # Linux "${XDG_CONFIG_HOME}/smartgit/" # (defaults to ~/.config if the variable is undefined) # # Three genuinely different places, so each is written out and `platforms` is # left alone; a consumer skips the ones that do not exist. No named base # directory fits: [preferences] is macOS-only and [configHome] would resolve to # ~/.config on macOS and %APPDATA%\smartgit on Windows, neither of which # SmartGit touches. The Linux spelling therefore hard-codes the XDG default # even though SmartGit does read $XDG_CONFIG_HOME โ€” that is a limitation of # writing the location out per platform, and it is the safer half of the # trade. # # The Homebrew cask's zap stanza agrees on the macOS half: # ~/Library/Preferences/SmartGit. # # The trailing `*/` is the major version the manual names, so a machine with # 24.1 beside 25.1 carries both. The manual lists what is inside: # preferences.yml ("application-wide settings"), accelerators.yml ("keyboard # shortcuts"), tools.yml ("external tools"), bugtracker.yml, notifications.yml, # repositories.yml, repository-grouping.yml, hosting-providers.yml, # ui-config.yml and ui-state.yml. paths = [ "[preferences]/SmartGit/*/", "~/.config/smartgit/*/", "%APPDATA%/syntevo/SmartGit/*/", ] # The same manual page describes `logs/*` as "debug log information". Each # spelling of the settings directory needs its own carve-out, or the copy on # the platform that was left out syncs the logs the others drop. # # repository-cache ("cached repository state information") and ui-state.yml # ("window sizes, positions and column widths") are per-machine too, but the # manual does not say whether the first is a file or a directory, and a rule # that names the wrong shape silently matches nothing โ€” so they are described # here rather than guessed at. exclude = [ "[preferences]/SmartGit/*/logs/", "~/.config/smartgit/*/logs/", "%APPDATA%/syntevo/SmartGit/*/logs/", ] # The same page names three files that are credentials end to end, and each is # listed under every spelling of the settings directory: # # license "stores license key" # passwords "encrypted file storing passwords" # credentials.yml "authentication information" # # hosting-providers.yml is deliberately not here: the manual describes it as # "hosting provider account details" and gives authentication its own file # above, so it is the non-secret half โ€” the provider, its URL and the account # name. secret = [ "[preferences]/SmartGit/*/license", "[preferences]/SmartGit/*/passwords", "[preferences]/SmartGit/*/credentials.yml", "~/.config/smartgit/*/license", "~/.config/smartgit/*/passwords", "~/.config/smartgit/*/credentials.yml", "%APPDATA%/syntevo/SmartGit/*/license", "%APPDATA%/syntevo/SmartGit/*/passwords", "%APPDATA%/syntevo/SmartGit/*/credentials.yml", ] # No machine_lines: preferences.yml, accelerators.yml and tools.yml are the # settings, shortcuts and external tools a user wants everywhere. # repositories.yml is the one file full of this machine's absolute clone paths, # but the manual does not publish its key names, and a key_path rule that # resolves to nothing is worse than no rule at all.