Apache Subversion (often abbreviated SVN, after the command name svn) is a software versioning and revision control system distributed under an open source license. Developers use Subversion apache setup to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System(CVS).
Features
-
Commits as true atomic operations (interrupted commit operations in CVS would cause repository inconsistency or corruption).
-
Renamed/copied/moved/removed files retain full revision history.
-
The system maintains versioning for directories, renames, and file metadata (but not for timestamps). Users can move and/or copy entire directory-trees very quickly, while retaining full revision history.
-
Versioning of symbolic links.
-
Native support for binary files, with space-efficient binary-diff storage.
-
Apache HTTP Server as network server, WebDAV/Delta-V for protocol. There is also an independent server process called svnserve that uses a custom protocol over TCP/IP.
-
Branching as a cheap operation, independent of file size (though Subversion itself does not distinguish between a branch and a directory)
-
Natively client–server, layered library design.
-
Client/server protocol sends diffs in both directions.
-
Costs proportional to change size, not to data size.
-
Parsable output, including XML log output.
-
Open source licensed — Apache License in the projected 1.7 release; prior versions use a derivative of the Apache Software License, v1.1
-
Internationalized program messages.
-
File locking for unmergeable files (“reserved checkouts”).
-
Path-based authorization.
-
Language bindings for C#, PHP, Python, Perl, Ruby, and Java.
-
Full MIME support — users can view or change the MIME type of each file, with the software knowing which MIME types can have their differences from previous versions shown.
-
Merge tracking – Merges between branches will be tracked, this allows automatically merging between branches without telling Subversion what (doesn’t) need to be merged.
I would like to list simple steps to create svn and setup hook-
First, Intall SVN if not present.
Second, create a repository
mkdir abc
Third, Get into the repository(abc)
Fourth, Create the project using the following command
svn admin create project
Fifth, Then import initial project data into it using the command
svn import project file:///loaction_of_abc/abc/project/trunk -m “Initial import of project”
Sixth, Then checkout a working copy
svn co file:///loaction_of_abc/abc/project1/trunk /location_of_project/project
Seventh, Download the post-commit file from the post and change the location’s of project and abc to original one and copy the file
to /loaction_of_abc/hooks.
Now you can use checkout the working copy to your tool and start working all changes made there will be reflected in the main folder of project.