id = "sourcetree" name = "Sourcetree" homepage = "https://www.sourcetreeapp.com/" # The product's own sentence, from sourcetreeapp.com. description = "Sourcetree simplifies how you interact with your Git repositories so you can focus on coding." icon = "SimpleIcons:sourcetree" # Sourcetree ships a command-line tool and the Homebrew cask links it onto the # PATH under the name a user types: `binary "#{appdir}/Sourcetree.app/Contents/ # Resources/stree"` (Casks/s/sourcetree.rb). The bundle identifier behind it is # com.torusknot.SourceTreeNotMAS, which the same cask names in # `uninstall quit:`. executables = ["stree"] # Sourcetree runs on Mac and Windows, but only the macOS locations below were # verified, so the entry claims macOS alone rather than guessing at where the # Windows build writes. platforms = ["macos"] [dotfiles] # The direct download is not sandboxed, so its settings are an ordinary # preferences domain. The Homebrew cask's `zap trash:` names the locations # Sourcetree leaves under the user's home, and this is the settings one: # ~/Library/Preferences/com.torusknot.SourceTreeNotMAS.plist. [preferences] is # ~/Library/Preferences, and the entry is macOS-only, so there is no other # platform for that root to stand for. paths = ["[preferences]/com.torusknot.SourceTreeNotMAS.plist"] # ~/Library/Application Support/SourceTree is deliberately left out. Atlassian # publishes no list of what it holds, and it is where Sourcetree keeps the # repository bookmarks — a tree of absolute clone paths that mean nothing on # another Mac — alongside its hosting-service account state. An undocumented # directory that may carry account material is not something to sync blind; # see the `gitkraken` entry for the same reasoning. # # The rest of the cask's zap list is state either way: # ~/Library/Preferences/com.torusknot.SourceTreeNotMAS.LSSharedFileList.plist # (the recent-items list), ~/Library/Caches/com.torusknot.SourceTreeNotMAS, # ~/Library/Logs/Sourcetree and the saved application state. exclude = ["[appData]/SourceTree/"] # No whole-file credential *among the paths above*: the preferences domain is # the Preferences window — diff and merge tool choices, the global ignore list, # fonts and refresh intervals. Sourcetree's account passwords and OAuth tokens # go to the macOS Keychain. This is not a statement about the directory # excluded above. secret = [] # No machine_lines: the diff tool, the commit-message settings and the display # options are the whole reason to carry the domain, and a property list has no # matcher in this schema in any case — `format` covers toml, yaml and json # only.