id = "svn" name = "Apache Subversion" homepage = "https://subversion.apache.org" description = "Enterprise-class centralized version control for the masses." icon = "SimpleIcons:subversion" executables = ["svn", "svnadmin", "svnversion"] [dotfiles] # https://svnbook.red-bean.com/en/1.7/svn.advanced.confarea.html — "On # Unix-like systems, this area appears as a directory named .subversion in the # user's home directory"; "On Win32 systems, Subversion creates a folder named # Subversion, typically inside the Application Data area of the user's profile # directory", reachable as %APPDATA%\Subversion. The area holds config, # servers and the auth/ cache. paths = [ "~/.subversion/config", "~/.subversion/servers", "%APPDATA%/Subversion/config", "%APPDATA%/Subversion/servers", ] exclude = [] # auth/ is the credential cache the same page calls "Client Credentials": # svn.simple holds usernames and passwords, svn.ssl.client-passphrase the # client-certificate passphrases, svn.username the bare usernames. Every file # under it is a stored credential, so the directory goes in whole. Both # platform spellings, or the cache syncs in the clear from Windows. secret = [ "~/.subversion/auth/", "%APPDATA%/Subversion/auth/", ] # The `servers` file carries two passwords in the clear. Names taken from # Subversion's own template for the file, subversion/libsvn_subr/config_file.c: # "http-proxy-password Password for auth to proxy service" and # "ssl-client-cert-password Client Key password, if needed." Both spellings # of the file, or the passwords are lifted out on Unix and sync in the clear # from a Windows machine. [[dotfiles.secret_paths]] file = ["~/.subversion/servers", "%APPDATA%/Subversion/servers"] match = { prefix = ["http-proxy-password", "ssl-client-cert-password"] } # From the same template: "ssl-authority-files List of files, each of a # trusted CA" — a semicolon-delimited list of absolute paths to PEM files # sitting on this machine's disk, which say nothing on any other. # The list is one the user assembled for this host, so it is worth keeping to # rebuild it and worth nothing on a box that does not carry those PEMs. [[dotfiles.machine_lines]] file = ["~/.subversion/servers", "%APPDATA%/Subversion/servers"] match = { prefix = ["ssl-authority-files"] } scope = "backup" [commands] format = 1 label = "Subversion commands" description = "Check out a working copy or commit changes. Only the options present in the completion data are covered." quality = "ai-draft" base = "fig:svn" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/svn.ts" license = "MIT" [[commands.subcommand]] path = ["checkout"] label = "Check out" description = "Check out a working copy from a repository." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/svn.ts" license = "MIT" [[commands.subcommand.field]] id = "repository" label = "Repository URL" type = "url" position = 0 sources = ["fig"] [[commands.subcommand.task]] id = "checkout" label = "Check out" fields = ["repository"] required = ["repository"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["repository"] [[commands.subcommand]] path = ["commit"] label = "Commit" description = "Commit local changes to the repository." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/svn.ts" license = "MIT" [[commands.subcommand.field]] id = "message" label = "Commit message" type = "string" option = ["--message", "-m"] sources = ["fig"] [[commands.subcommand.field]] id = "username" label = "Username" type = "string" option = ["--username"] sources = ["fig"] [[commands.subcommand.field]] id = "no_auth_cache" label = "Do not cache credentials" type = "boolean" option = ["--no-auth-cache"] sources = ["fig"] [[commands.subcommand.field]] id = "non_interactive" label = "Non-interactive" type = "boolean" option = ["--non-interactive"] sources = ["fig"] [[commands.subcommand.task]] id = "commit" label = "Commit with message" fields = ["message"] required = ["message"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["message"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["username", "no_auth_cache", "non_interactive"]