New repository can be created with two different options:
Execute following command. It will create a directory for the repository, but parent path has to be present. i.e. in the following example, /var/svn should already be there, while it will create my_repository directory.
svnadmin create /var/svn/my_repository
If you are using TortoiseSVN, you can use GUI to create repo.
TortoiseSVN -> Create Repository here...To add user, use following command
htpasswd /etc/subversion/passwd user_name
Specify user_name with the username you wish to add in above command. It will prompt to provide password for the user.
If you are creating very first user, you need to add –c switch in above command, which will create the file.
htpasswd -c /etc/subversion/passwd user_name
You can check existence of the file or list of configured users using following command
cat /etc/subversion/passwd
You might need to execute above commands as super user.
Groups can be defined in /etc/subversion/svn_access_control file.
Create/edit the file using following command
nano /etc/subversion/svn_access_control
Use syntax specified as below to define groups and assign members.
[groups]
groupname = <list of users, comma separated>
e.g.
[groups]
myproject-dev = john, peter
myproject-support = maria, cristine
Above example will create two groups named myproject-dev and myproject-support. It will add users john and peter to group myproject-dev and users maria and cristine to group myproject-support.
Groups can then be used to manage repository access
Access specifications for subversion repositories is specified etc/subversion/svn_access_control file
Create/edit the file using following command
nano /etc/subversion/svn_access_control
Use following syntax to configure access permissions for repositories to group/members
[Repository:<Path>]
@groupname = r/rw
User = r
e.g.
[myproject:/]
@myproject-dev = rw
@myproject-support = r
jack = r
[myproject:/branches/support]
@myproject-support = rw
patrick = r
Above example configuration will grant read-write access to entire myproject repository to users belonging to group myproject-dev, while read-only access is granted to users belonging to group myproject-support and specific user jack.
Note that, group names are preceded by @.
Similarly, it will assign read-write access to support branch of myproject repository to all users belonging to myproject-support and read-only access to patrick.