svn deploy server to linux

Table of Contents

1. Install SVN

Installation command:

Check whether the installation is successful and you can check the version

2. Create the repository directory

Create folder:

Switch to the changed directory:

3. Create a project

Create a project (repository):

Modify the configuration file under the project

4. Start the SVN service

Close svn command:

5. Pull svn project locally

6. Extension

Set up view log log

Multiple project management and control configuration


1. Install SVN

Installation command:
 //Ubuntu
 apt-get install subversion
 
 //Centos
 yum install subversion
To check whether the installation is successful, you can check the version
 svnserve --version

2. Create the repository directory

For example, I store all svn projects in the /cqh/soft/svn directory

Create folder:
 mkdirt -p /cqh/soft/svn
Switch to the changed directory:
 cd /cqh/soft/svn

3. Create project

Create a project (version library):

For example, create a devtest project

 svnadmin create devtest
Modify the configuration file under this project
 cd devtest/conf

Modify the svnserve.conf file:

### This file controls the configuration of the svnserve daemon, if you
 ### use it to allow access to this repository. (If you only allow
 ### access through http: and/or file: URLs, then this file is
 ### irrelevant.)
 
 ### Visit http://subversion.apache.org/ for more information.
 
 [general]
 ### The anon-access and auth-access options control access to the
 ### repository for unauthenticated (a.k.a. anonymous) users and
 ### authenticated users, respectively.
 ### Valid values are "write", "read", and "none".
 ### Setting the value to "none" prohibits both reading and writing;
 ### "read" allows read-only access, and "write" allows complete
 ### read/write access to the repository.
 ### The sample settings below are the defaults and specify that anonymous
 ### users have read-only access to the repository, while authenticated
 ### users have read and write access to the repository.
 anon-access=read
 auth-access=write
 ### The password-db option controls the location of the password
 ### database file. Unless you specify a path starting with a /,
 ### the file's location is relative to the directory containing
 ### this configuration file.
 ### If SASL is enabled (see below), this file will NOT be used.
 ### Uncomment the line below to use the default password file.
 password-db=passwd
 ### The authz-db option controls the location of the authorization
 ### rules for path-based access control. Unless you specify a path
 ### starting with a /, the file's location is relative to the the
 ### directory containing this file. If you don't specify an
 ### authz-db, no path-based access control is done.
 ### Uncomment the line below to use the default authorization file.
 authz-db = authz
 ### This option specifies the authentication realm of the repository.
 ### If two repositories have the same authentication realm, they should
 ### have the same password database, and vice versa. The default realm
 ### is repository's uuid.
 ### realm = /cqh/svn/svnrepos
 ### The force-username-case option causes svnserve to case-normalize
 ### usernames before comparing them against the authorization rules in the
 ### authz-db file configured above. Valid values are "upper" (to upper-
 ### case the usernames), "lower" (to lowercase the usernames), and
 ### "none" (to compare usernames as-is without case conversion, which
 ### is the default behavior).
 # force-username-case = none
 
 [sasl]
 ### This option specifies whether you want to use the Cyrus SASL
 ### library for authentication. Default is false.
 ### This section will be ignored if svnserve is not built with Cyrus
 ### SASL support; to check, run 'svnserve --version' and look for a line
 ### reading 'Cyrus SASL authentication is available.'
 # use-sasl = true
 ### These options specify the desired strength of the security layer
 ### that you want SASL to provide. 0 means no encryption, 1 means
 ### integrity-checking only, values larger than 1 are correlated
 ### to the effective key length for encryption (e.g. 128 means 128-bit
 ### encryption). The values below are the defaults.
 # min-encryption = 0
 # max-encryption = 256
 

The main thing is to remove the comment symbol “#” in front of anon-access, auth-access, password-db, and authz-db

Configuration item meaning:

  • anon-access = none|read|write Determines the access level for unauthorized users. none means no access permission, read means read-only, write means readable and writable, and the default is read.

  • auth-access = none|read|write determines the access level for authorized users, use the same access level as above. Default is write.

  • password-db = filename Specifies the account password database file name. filename is the location of the conf directory in the relative warehouse. It can also be set to an absolute path. The default is passwd.

  • authz-db = filename Specifies the permission configuration file name. filename is the location of the conf directory in the relative warehouse. It can also be set to an absolute path. The default is authz.

Modify passwd configuration file:

 
### This file is an example password file for svnserve.
 ### Its format is similar to that of svnserve.conf. As shown in the
 ### example below it contains one section labeled [users].
 ### The name and password for each user follow, one account per line.
 
 [users]
 #harry = harryssecret
 # sally = sallyssecret
 #Add a user account: cqh password: cqh
 cqh = cqh

Modify authz configuration file:

 ### This file is an example authorization file for svnserve.
 ### Its format is identical to that of mod_authz_svn authorization
 ### files.
 ### As shown below each section defines authorizations for the path and
 ### (optional) repository specified by the section name.
 ### The authorizations follow. An authorization line can refer to:
 ### - a single user,
 ### - a group of users defined in a special [groups] section,
 ### - an alias defined in a special [aliases] section,
 ### - all authenticated users, using the '$authenticated' token,
 ### - only anonymous users, using the '$anonymous' token,
 ### - anyone, using the '*' wildcard.
 ###
 ### A match can be inverted by prefixing the rule with '~'. Rules can
 ### grant read ('r') access, read-write ('rw') access, or no access
 ### ('').
 
 [aliases]
 # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
 
 [groups]
 # harry_and_sally = harry,sally
 # harry_sally_and_joe = harry,sally, &joe
 # Add users to the group
 g_manager = cqh
 
 # [/foo/bar]
 # harry = rw
 #&joe = r
 # * =
 [/]
 # [repository:/baz/fuz]
 # @harry_and_sally = rw
 # * = r
 # Add permissions r read w write to the group
 @g_manager = rw
 

4. Start the SVN service

Execute the SVN startup command, where the parameter -d means starting as a daemon, and -r means the set root directory

 svnserve -d -r /cqh/soft/svn
Close svn command:
killall svnserve

5. Pull svn project locally

1. In the windows system, install the TortoiseSVN software, create a local directory, right-click and select SVN Checkout to test, fill in the URL svn://IP/devtest, and replace devtest with the name of the repository you created.

2. Enter the configured username and password

Six. Extensions

Set up to view log

If you want to view the submitted svn log, further configuration is required.

Edit svnserve.conf and set:

 anon-access = none

Edit the authz file and add:

[/]
 
 * =

In this way, you can view the history of svn submissions by right-clicking TortoiseSVN->show log.

Multiple project management and control configuration

The SVN configuration file is very flexible. If you want to use unified accounts and permissions to control multiple projects, you can put the authz and passwd files of multiple projects in one place, and configure these in the svnserve.conf files of multiple projects. Absolute paths to both files and set user access permissions for different projects in authz.

For example: there are four users a, b, c, and d, and two projects p1 and p2. Among them, a and b can only access p1, and c and d can only access p2.

Create repository directory

mkdir /usr/svn

Create multiple repositories

 cd /usr/svn
 
 svnadmin create p1
 
 svnadmin create p2

Create a directory with administrative user permissions

mkdir /var/svn/conf
 
 cd /p1/conf
 
 cp authz passwd /var/svn/conf

Modify configuration file

Modify the svnserve.conf file of p1:

 anon-access = none
 
 auth-access=write
 
 password-db = /var/svn/conf/passwd
 
 authz-db = /var/svn/conf/authz
 
 realm = p1

Modify the svnserve.conf file of p2:

 anon-access = none
 
 auth-access=write
 
 password-db = /var/svn/conf/passwd
 
 authz-db = /var/svn/conf/authz
 
 realm = p2

Both password-db and authz-db use unified management user permission directories and use absolute paths.

Modify password-db file

[users]
 
 a = 123
 
 b = 123
 
 c=123
 
 d = 123

Modify authz file

 [groups] //Group
 
 p1user = a,b
 
 p2user = c,d
 
 
 
 [/]
 
 * = #Users not defined above do not have any permissions
 
 
 
 [p1:/] //Access control of p1, c and d cannot access
 
 @p1user = rw
 
 
 
 [p2:/] //Access control of p2, a and b cannot access
 
 @p2user = rw

Modifications to the password-db and authz files take effect immediately without restarting svn.

Start the svn service

 svnserve -d -r /usr/svn/

Access different projects SVN

Similarly for TortoiseSVN software, select SVN Checkout test.

Access project p1 URL
 
 svn://IP/p1
 
 
 Visit project p2 URL
 
 svn://IP/p1

With a unified configuration file, different projects limit access to different users, thus achieving control over the SVN configuration of multiple projects.