To use the command-line client, type svn, the subcommand you wish to use, [56] and any options or targets that you wish to operate on—the subcommand and the options need not appear in a specific order. For example, all of the following are valid ways to use svn status:
$ svn -v status $ svn status -v $ svn status -v myfile
You can find many more examples of how to use most client commands in Chapter 2, Basic Usage and commands for managing properties in the section called “Properties”.
While Subversion has different options for its
        subcommands, all options exist in a single
        namespace—that is, each option is guaranteed to mean the
        same thing regardless of the subcommand you use it with.  For
        example, --verbose (-v)
        always means “verbose output,” regardless of the
        subcommand you use it with.
The svn command-line client usually exits quickly with an error if you pass it an option which does not apply to the specified subcommand. But as of Subversion 1.5, several of the options which apply to all—or nearly all—of the subcommands have been deemed acceptable by all subcommands, even if they have no effect on some of them. They appear grouped together in the command-line client's usage messages as global options. This was done to assist folks who write scripts which wrap the command-line client. These global options are as follows:
--config-dir
            DIRInstructs Subversion to read configuration
              information from the specified directory instead of the
              default location (.subversion in
              the user's home directory).
--no-auth-cachePrevents caching of authentication information (e.g., username and password) in the Subversion runtime configuration directories.
--non-interactiveDisables all interactive prompting. Some examples of interactive prompting include requests for authentication credentials and conflict resolution decisions. This is useful if you're running Subversion inside an automated script and it's more appropriate to have Subversion fail than to prompt for more information.
--password
            PASSWDSpecifies the password to use when authenticating against a Subversion server. If not provided, or if incorrect, Subversion will prompt you for this information as needed.
--username
            NAMESpecifies the username to use when authenticating against a Subversion server. If not provided, or if incorrect, Subversion will prompt you for this information as needed.
The rest of the options apply and are accepted by only a subset of the subcommand. They are as follows:
--accept
            ACTIONSpecifies an action for automatic conflict resolution.
              Possible actions are postpone,
              base, mine-full,
              theirs-full, edit, and
              launch.
--auto-propsEnables auto-props, overriding the
              enable-auto-props directive in the
              config file.
--change (-c)
            ARGUsed as a means to refer to a specific “change” (a.k.a. a revision). This option is syntactic sugar for “-r ARG-1:ARG”.
--changelist
            ARGInstructs Subversion to operate only on members of the changelist named
              ARG.  You can use this option
              multiple times to specify sets of changelists.
--cl
            ARGAn alias for the
              --changelist option.
--depth
            ARGInstructs Subversion to limit the scope of an operation to a particular tree
              depth.  ARG is one of
              empty, files,
              immediates, or
              infinity.
--diff-cmd
            CMDSpecifies an external program to use to show
              differences between files.  When svn
              diff is invoked without this option, it uses
              Subversion's internal diff engine, which provides
              unified diffs by default.  If you want to use an
              external diff program, use --diff-cmd.
              You can pass options to the diff program with the
              --extensions option (more on that later
              in this section).
--diff3-cmd
            CMDSpecifies an external program to use to merge files.
--dry-runGoes through all the motions of running a command, but makes no actual changes—either on disk or in the repository.
--editor-cmd
            CMDSpecifies an external program to use to edit a log message
              or a property value.  See the editor-cmd
              section in the section called “Config”
              for ways to specify a default editor.
--encoding ENCTells Subversion that your commit message is encoded in the charset provided. The default is your operating system's native locale, and you should specify the encoding if your commit message is in any other encoding.
--extensions (-x)
          ARGSSpecifies an argument or arguments that Subversion
              should pass to an external diff command.  This option is
              valid only when used with the svn
              diff or svn merge commands,
              with the
              --diff-cmd option.
              If you wish to pass multiple
              arguments, you must enclose all of them in quotes (e.g.,
              svn diff --diff-cmd /usr/bin/diff -x
              "-b -E").
--file (-F)
            FILENAME
          Uses the contents of the named file for the specified subcommand, though different subcommands do different things with this content. For example, svn commit uses the content as a commit log, whereas svn propset uses it as a property value.
--forceForces a particular command or operation to run. Subversion will prevent you from performing some operations in normal usage, but you can pass the force option to tell Subversion “I know what I'm doing as well as the possible repercussions of doing it, so let me at 'em.” This option is the programmatic equivalent of doing your own electrical work with the power on—if you don't know what you're doing, you're likely to get a nasty shock.
--force-logForces a suspicious parameter passed to the
              --message (-m) or
              --file (-F) option to
              be accepted as valid.  By default, Subversion will
              produce an error if parameters to these options look
              like they might instead be targets of the subcommand.
              For example, if you pass a versioned file's path to the
              --file (-F) option,
              Subversion will assume you've made a mistake, that the
              path was instead intended as the target of the
              operation, and that you simply failed to provide some
              other—unversioned—file as the source of your
              log message.  To assert your intent and override these
              types of errors, pass the --force-log
              option to subcommands that accept log messages.
--help (-h) or
                -?)
          If used with one or more subcommands, shows the built-in help text for each. If used alone, it displays the general client help text.
--ignore-ancestryTells Subversion to ignore ancestry when calculating differences (rely on path contents alone).
--ignore-externalsTells Subversion to ignore externals definitions and the external working copies managed by them.
--incrementalPrints output in a format suitable for concatenation.
--keep-changelistsTells Subversion not to delete changelists after committing.
--keep-localKeeps the local copy of a file or directory (used with the svn delete command).
--limit (-l)
            NUMShows only the first NUM
              log messages.
--message (-m)
            MESSAGE
          Indicates that you will specify either a log message or a lock comment on the command line, following this option. For example:
$ svn commit -m "They don't make Sunday."
--new ARGUses ARG as the newer
              target (for use with svn diff).
--no-auto-propsDisables auto-props, overriding the
              enable-auto-props directive in the
              config file.
--no-diff-deletedPrevents Subversion from printing differences for deleted files. The default behavior when you remove a file is for svn diff to print the same differences that you would see if you had left the file but removed all the content.
--no-ignoreShows files in the status listing that would
              normally be omitted since they match a pattern in the
              global-ignores configuration option
              or the svn:ignore property.  See the section called “Config” and the section called “Ignoring Unversioned Items” for more
              information.
--no-unlockTells Subversion not to automatically unlock files (the default commit behavior is to unlock all files listed as part of the commit). See the section called “Locking” for more information.
--non-recursive (-N)Deprecated. Stops a subcommand from recursing into subdirectories. Most subcommands recurse by default, but some subcommands—usually those that have the potential to remove or undo your local modifications—do not.
--notice-ancestryPays attention to ancestry when calculating differences.
--old ARGUses ARG as the older
              target (for use with svn diff).
--parentsCreates and adds nonexistent or nonversioned parent subdirectories to the working copy or repository as part of an operation. This is useful for automatically creating multiple subdirectories where none currently exist. If performed on a URL, all the directories will be created in a single commit.
--quiet (-q)Requests that the client print only essential information while performing an operation.
--record-onlyMarks revisions as merged (for use with
              --revision).
--recursive (-R)Makes a subcommand recurse into subdirectories. Most subcommands recurse by default.
--reintegrateUsed with the svn merge subcommand, merges all of the source URL's changes into the working copy. See the section called “Keeping a Branch in Sync” for details.
--relocate FROM TO
          [PATH...]Used with the svn switch subcommand, changes the location of the repository that your working copy references. This is useful if the location of your repository changes and you have an existing working copy that you'd like to continue to use. See svn switch for an example.
--remove
            ARGDisassociates ARG from a
              changelist
--revision (-r)
            REV
          Indicates that you're going to supply a revision (or range of revisions) for a particular operation. You can provide revision numbers, keywords, or dates (in curly braces) as arguments to the revision option. If you wish to offer a range of revisions, you can provide two revisions separated by a colon. For example:
$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}
See the section called “Revision Keywords” for more information.
--revpropOperates on a revision property instead of a
              property specific to a file or directory.  This option
              requires that you also pass a revision with the
              --revision (-r)
              option.
--set-depth
            ARGSets the sticky depth on a directory in a working
              copy to one of empty,
              files, immediates,
              or infinity.
--show-revs ARGUsed to make svn mergeinfo
              display either merged
              or eligible revisions.
--show-updates (-u)Causes the client to display information about which files in your working copy are out of date. This doesn't actually update any of your files—it just shows you which files will be updated if you then use svn update.
--stop-on-copyCauses a Subversion subcommand that traverses the history of a versioned resource to stop harvesting that historical information when a copy—that is, a location in history where that resource was copied from another location in the repository—is encountered.
--strictCauses Subversion to use strict semantics, a notion that is rather vague unless talking about specific subcommands (namely, svn propget).
--targets
            FILENAMETells Subversion to get the list of files that you wish to operate on from the filename that you provide instead of listing all the files on the command line.
--use-merge-history
            (-g)Uses or displays additional information from merge history.
--verbose (-v)Requests that the client print out as much information as it can while running any subcommand. This may result in Subversion printing out additional fields, detailed information about every file, or additional information regarding its actions.
--versionPrints the client version info.  This information
              includes not only the version number of the client, but
              also a listing of all repository access modules that the
              client can use to access a Subversion repository.
              With --quiet (-q) it
              prints only the version number in a compact form.
--with-all-revpropsUsed with the --xml option to svn log,
            will retrieve and display all revision
            properties in the log output.
--with-revprop
            ARGWhen used with any command that writes to the
              repository, sets the revision property, using the
              NAME=VALUE format,
              NAME to
              VALUE.  When used with
              svn log in --xml mode, this displays the value of
              ARG in the log output.
--xmlPrints output in XML format.
Here are the various subcommands for the svn program. For the sake of brevity, we omit the global options (described in the section called “svn Options”) from the subcommand descriptions which follow.
[56] Well, you don't need a subcommand to use the
          --version option, but we'll get to that in
          just a minute.