LinuxCommandLibrary

svn

Manage versions of files and directories

TLDR

Check out a working copy from a repository

$ svn co [url/to/repository]
copy

Bring changes from the repository into the working copy
$ svn up
copy

Put files and directories under version control, scheduling them for addition to repository. They will be added in next commit
$ svn add [PATH]
copy

Send changes from your working copy to the repository
$ svn ci -m [commit_log_message] [[PATH]]
copy

Display changes from the last 10 revisions, showing modified files for each revision
$ svn log -vl [10]
copy

Display help
$ svn help
copy

SYNOPSIS

svn subcommand [options] [args]

PARAMETERS

checkout
    Check out a working copy from a repository.

commit
    Commit changes from your working copy to the repository.

update
    Update your working copy with changes from the repository.

add
    Add files or directories to the repository.

delete
    Schedule files or directories for deletion.

copy
    Copy a file or directory.

move
    Move a file or directory.

diff
    Display the differences between files or revisions.

log
    Show the history of a file or directory.

status
    Show the status of files in your working copy.

info
    Display information about a file or directory.

resolve
    Resolve conflicts in a working copy.

--username ARG
    Specify a username for authentication.

--password ARG
    Specify a password for authentication.

--revision ARG
    Specify a revision number or range.

DESCRIPTION

The svn command is the primary command-line client for interacting with Subversion repositories. Subversion (often abbreviated SVN) is a software versioning and revision control system.
The svn command allows users to perform a variety of operations, including checking out working copies from a repository, committing changes to the repository, updating working copies with changes from the repository, examining the history of files and directories, resolving conflicts, and managing branches and tags. It serves as the user's primary interface to the version control system.
It is essential for managing source code, documents, and other files over time, enabling collaboration and providing a historical record of changes. svn interacts with a central repository storing data. This client-server architecture enables multiple users to concurrently access and modify the same project files, promoting collaborative development and simplified maintenance. Properly using this command provides reliable version tracking.

CAVEATS

Authentication may be required for some operations. Incorrect usage can lead to data loss or repository corruption. Ensure you understand the implications of each subcommand before executing it.

WORKFLOW

The typical workflow involves checking out a working copy, making changes, and then committing those changes back to the repository. Frequent updates are recommended to minimize conflicts.

BRANCHES AND TAGS

svn allows you to create branches for parallel development and tags for marking specific releases or milestones. These are essentially lightweight copies within the repository.

HISTORY

Subversion was created to address the limitations of CVS (Concurrent Versions System). It was designed to be a better version control system, offering features such as atomic commits, versioned directories, and improved branching and merging capabilities. svn quickly became a popular choice for version control in various software development projects and remained widely used until the widespread adoption of Git.

SEE ALSO

git(1), cvs(1)

Copied to clipboard