svn

Linux Server 5.5安装SVN+Apache服务

Red Hat Enterprise Linux  Server 5.5安装SVN+Apache服务


前言

Subversion (简称svn)是近年来崛起的版本管理软件,是cvs的接班人。Subversion 是一个自由 / 开源的版本控制系统。也就是说,在 Subversion 管理下,文件和目录可以超越时空。也就是 Subversion 允许你的数据恢复到早期版本,或者是检查数据修改的历史。正因为如此,许多人将版本控制系统 SVN 当作一种神奇的“时间机器”。目前,绝大多数开源软件都在使用 SVN 作为代码版本管理软件。

Subversion 支持 Linux 和 windows ,更多是安装在 Linux 下。
svn 服务器有 2 种运行方式:独立服务器和借助Apache。2 种方式运行各有利弊。
svn 存储版本数据也有 2 种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点,常见的创建数据版本库也都是使用FSFS方式。

相关平台软件

SVN+Apache软件安装包下载推荐,在所有平台上的安装文件都在此站有免费下载,选择要在什么操作平台上进行安装配置,就下载相应的安装文件,进行安装配置。

www.open.collab.net/cn/downloads/subversion/redhat.html

我所使用到的安装文件如下:
CollabNet Subversion Command-Line Client v1.6.9 (for Red Hat Linux)
下载文件名:CollabNetSubversion-client-1.6.9-1.i386.rpm   --客户端
CollabNet Subversion Server v1.6.9 (for Red Hat Linux)  
下载文件名:CollabNetSubversion-extras-1.6.9-1.i386.rpm   --服务端
CollabNet Subversion Extras v1.6.9 (for Red Hat Linux)  
下载文件名:CollabNetSubversion-extras-1.6.9-1.i386.rpm   --扩展件
下载文件名:RPM-GPG-KEY-csvn.asc   ---分离的 OpenPGP 签名文件

      安装过程:

    安装非常简单容易,安装已经编译过的 rpm 文件即可!

    首先安装签名文件,安装说明原文如下:

CollabNet Subversion RPMs are signed using our GPG key. As a one-time task,
import the CollabNet GPG key using the command:

sudo rpm --import /path/to/RPM-GPG-KEY-csvn.asc

The CollabNet GPG key is available for download at:
http://www.collab.net/nonav/down ... PM-GPG-KEY-csvn.asc

      按照说明操作即可进行下一步安装,否则会有提示告知。打开终端,切换到 root 帐号:

[root@localhost]# rpm --import RPM-GPG-KEY-csvn.asc

签名文件安装后,接着就可以进行下面的安装了。

先安装 client ,然后 server ,最后是 extras ,顺序一次进行安装下去。

[root@localhost]# rpm -ivh CollabNetSubversion-client-1.6.9-1.i386.rpm
Preparing...                ########################################### [100%]
1:CollabNetSubversion-cli########################################### [100%]
[root@localhost]#

client 端安装完成;

[root@localhost]# rpm -ivh CollabNetSubversion-server-1.6.9-1.i386.rpm
Preparing...                ########################################### [100%]
1:CollabNetSubversion-ser########################################### [100%]
[root@localhost]#

server 端安装完成;

[root@localhost]# rpm -ivh CollabNetSubversion-extras-1.6.9-1.i386.rpm
Preparing...                ########################################### [100%]
1:CollabNetSubversion-ext########################################### [100%]
[root@localhost]#
extras 端也顺利安装完成;

这样三个 rpm 安装文件就顺利安装完成了。 此时,系统也就自动增加了一个 csvn 用户/组。

[root@localhost]# more /etc/passwd
csvn:x:502:501:CollabNet Subversion:/opt/CollabNet_Subversion:/bin/bash

[root@localhost]# more /etc/group
csvn:x:501:

SVN相关的程序目录也创建完成;

svn_第1张图片

接着进行SVN的配置:

在 /opt/CollabNet_Subversion/bin 目录下执行 Configure-CollabNet-Subversion ,一步一步按照提示操作即可顺利完成简单的服务配置。

[root@localhost]# ./Configure-CollabNet-Subversion

CollabNet Subversion Server is a free download of open-source Subversion,

  compiled and tested by CollabNet. For more information about CollabNet

  Subversion, visit the CollabNet community at http://open.collab.net.

  Would you like to configure the CollabNet Subversion Server now? [yes] (直接回车)

  Welcome to CollabNet Subversion Server setup.

  You will now be asked some questions to configure CollabNet Subversion.

  Defaults are given in square brackets. If a default is okay for you

  Just hit [Enter] to continue.

  This setup can configure either Apache or svnserve as Subversion

  server, for you. Would you like to configure Apache as your

  Subversion server now? [yes] (直接回车)

  Continuing with apache Subversion server configuration ...

  Specify the base directory for Subversion repositories: [/var/svn/repositories] /opt/SVNRepositories (这里我更改了SVN仓库存储路径,不使用默认的路径。)

  Non-existing base path, Let me create and continue [yes] (直接回车)

  Base path created.

  Would you like to create a new Subversion repository? [yes] (直接回车)

  What should be your new Subversion repository name? DEOM (这里建立一个名为 DEMO 的测试用库)

  New repository created.

  Would you like to initialize the repository with trunk/branches/tags folders? [no] (直接回车)

  Done.

  Would you like to create another Subversion repository? [yes] (直接回车)

  What should be your new Subversion repository name? svntest (这里再建立一个名为 svntest 的库)

  New repository created.

  Would you like to initialize the repository with trunk/branches/tags folders? [no](直接回车)(暂时不导入初始数据)

  Done.

  Would you like to create another Subversion repository? [yes] no (已经建立了2个测试用库,就不再建了。)

  Would you like to give the name and port that the server uses to identify itself? [yes]

  Registered DNS name or IP address: 192.168.168.159 (这里IP是指 apache 的服务“IP”配置。)

  Server port number: 18080 (apache的服务端口号)

  Allow anonymous read access? [no] (直接回车)

  0 users currently have access to this repository:

  Would you like to create a new Subversion account? [yes] (直接回车)

  Account username

  (To re-create or delete a Subversion account, enter an existing username): svnadmin (建立一个SVN帐号)

  Account password: (密码)

  Retype account password: (重复密码)

  Adding password for user svnadmin

  Account created

  Would you like to create another user account? [yes] no (暂时不需要再建另一用户了)

  Would you like to configure ViewVC? [yes] (是否启用VierVC,直接回车)

  Stopping CollabNet Subversion: httpd (no pid file) not running

  done

  Starting CollabNet Subversion: done

  (此时,SVN+Apache服务也顺利地配置完成了。最后的提示信息如下:)

  Congratulations! You have successfully configured the CollabNet

  Subversion server.

  You can access your repositories at the following URL:

  http://192.168.168.159:18080/svn/YOUR-REPOS-NAME

  http://192.168.168.159:18080/viewvc/YOUR-REPOS-NAME

      最后,配置完成后进行检查:

[root@localhost]# ps -ef|grep httpd
root      2569     1  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2588  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2595  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2596  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2597  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2599  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      2600  2569  0 18:16 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      3809  2569  0 18:18 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      3813  2569  0 18:18 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      3814  2569  0 18:18 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      3836  2569  0 18:21 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn      3839  2569  0 18:21 ?        00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
root      4696  4113  0 19:56 pts/1    00:00:00 grep httpd

       在浏览器中访问SVN服务;

  http://192.168.168.159:18080/svn/DEMO

      注意:浏览器上的地址栏!



    http://192.168.168.159:18080/viewvc



     小结:

   到此,SVN+Apache服务就搭建完成了,SVN 是个很好的版本控制软件,好好的享受它带来的无限乐趣吧!



SVN 命令行在 Linux 下的操作

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.168.159:18080/pro/domain
简写:svn co

2、往版本库中添加新的文 件
  svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版 本库
  svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci

4、加锁/解锁
  svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" test.php
svn unlock PATH

5、更新到某个版本
  svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件, 然后清除svn resolved,最后再提交commit)
简写:svn up

6、查看文件或者目录状态
  1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st

7、删除文件
  svn delete path -m "delete test fle"
例如:svn delete svn://192.168.168.159:18080/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)

8、查看日志
  svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息
  svn info path
例如:svn info test.php

10、比较差异
  svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

11、将两个版本之间的差 异合并到当前文件
  svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助
  svn help
svn help ci

------------------------------------------------------------------------------

以上是常用命令,下面写几个不经常用的

------------------------------------------------------------------------------

13、版本库下的文件和目 录列表
  svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls

14、创建纳入版本控制下 的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH...
2、mkdir URL...
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录

16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]

1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。

17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或 URL的内容。
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

资料来源 http://www.gpu.cn/wiki/%D4%DACentos%C9%CF%C5%E4%D6%C3%D7%EE%D0%C2%B0%E6SVN(Subversion)
http://www.china-cto.cn/cu/32881s.html
http://downloads.open.collab.net/readmes/readme_Redhat_Server.txt
http://www.02.246.ne.jp/~torutk/subversion/setupCollabNetSubersionOnCentOS5.html (这是一个日本的网站信息,这里信息很实在,过程基本有了。)

为Centos程序库中的Subversion SVN版本过老,Centos 5.4版中仍然是 Subversion 1.4.4.2版,这差不多是2006年的版本,而现在没有几天就是2010年。最近版本已经是1.6.11.3了,那么,当然安装最新的版本。

首先去下载最新版的rpm安装包

下载地址

http://www.collab.net/downloads/subversion/redhat.html

CollabNetSubversion-client-1.6.11-3.i386.rpm --32位客户端
http://www.open.collab.net/files/documents/60/3489/CollabNetSubversion-client-1.6.11-3.i386.rpm

CollabNetSubversion-server-1.6.11-3.i386.rpm --32位服务端
http://downloads-members.open.collab.net/files/documents/60/3493/CollabNetSubversion-server-1.6.11-3.i386.rpm

CollabNetSubversion-extras-1.6.11-3.i386.rpm --32位扩展件
http://www.open.collab.net/files/documents/60/3491/CollabNetSubversion-extras-1.6.11-3.i386.rpm

CollabNetSubversion-client-1.6.11-3.x86_64.rpm --64位客户端
http://downloads-members.open.collab.net/files/documents/60/3490/CollabNetSubversion-client-1.6.11-3.x86_64.rpm

CollabNetSubversion-server-1.6.11-3.x86_64.rpm --64位服务端
http://downloads-members.open.collab.net/files/documents/60/3494/CollabNetSubversion-server-1.6.11-3.x86_64.rpm

CollabNetSubversion-extras-1.6.11-3.x86_64.rpm --64位扩展件
http://www.open.collab.net/files/documents/60/3492/CollabNetSubversion-extras-1.6.11-3.x86_64.rpm

RPM-GPG-KEY-csvn.asc ---分离的 OpenPGP 签名文件
http://www.collab.net/nonav/downloads/subversion/gpg-key/RPM-GPG-KEY-csvn.asc


我这里用的是32位的软件
1、分别用 rpm -ivh 命令按照 GPG-KEY --> client --> server --> extras的顺序逐一安装。

不安装签名文件,则会有安装警告(warning: CollabNetSubversion-client-1.6.11-3.i386.rpm: Header V3 DSA signature: NOKEY, key ID 35bcca43)
[root@localhost tools]# sudo rpm --import RPM-GPG-KEY-csvn.asc 

[root@localhost tools]# rpm -ivh CollabNetSubversion-client-1.6.11-3.i386.rpm 
Preparing... ########################################### [100%]
  1:CollabNetSubversion-cli########################################### [100%]

[root@localhost tools]# rpm -ivh CollabNetSubversion-server-1.6.11-3.i386.rpm 
Preparing... ########################################### [100%]
  1:CollabNetSubversion-ser########################################### [100%]

[root@localhost tools]# rpm -ivh CollabNetSubversion-extras-1.6.11-3.i386.rpm 
Preparing... ########################################### [100%]
  1:CollabNetSubversion-ext########################################### [100%]
[root@localhost tools]# 

这样三个 rpm 安装文件就顺利安装完成了。 此时,系统也就自动增加了一个 csvn 用户/组。

[root@localhost]# more /etc/passwd
csvn:x:501:501:CollabNet Subversion:/opt/CollabNet_Subversion:/bin/bash

[root@localhost]# more /etc/group
csvn:x:501:

SVN相关的程序目录也创建完成;


2、安装成功后进入/opt/CollabNet_Subversion/bin目录
[root@localhost tools]# cd /opt/CollabNet_Subversion/bin/

运行配置命令 Configure-CollabNet-Subversion 
[root@localhost bin]# ./Configure-CollabNet-Subversion

根据命令提示回答即可

以下选择重点讲解

Would you like to configure the CollabNet Subversion Server now? [yes] (回车)


This setup can configure either Apache or svnserve as Subversion
server, for you. Would you like to configure Apache as your
Subversion server now? [yes] (回车)

Specify the base directory for Subversion repositories: [/var/svn/repositories] /var/svn/repositories

Non-existing base path, Let me create and continue [yes] (回车)

Base path created.
Would you like to create a new Subversion repository? [yes] (回车)

What should be your new Subversion repository name? cclub (这里建立一个名为cclub的库)

New repository created.
Would you like to initialize the repository with trunk/branches/tags folders? [no] yes (按照标准的目录结构创建仓库)

Done.

Would you like to create another Subversion repository? [yes] (回车)

What should be your new Subversion repository name? javaclub (这里再建立一个名为javaclub 的库)

New repository created.
Would you like to initialize the repository with trunk/branches/tags folders? [no](回车)(暂时不导入初始数据)

Would you like to create another Subversion repository? [yes] no (已经建立了2个库,不建了.)

Would you like to give the name and port that the server uses to identify itself? [yes] no (我这里没有配WEB方式)

Allow anonymous read access? [no] (回车)

0 users currently have access to this repository:

Would you like to create a new Subversion account? [yes] (回车)

Account username
(To re-create or delete a Subversion account, enter an existing username): svnadmin (建立一个SVN帐号)

Account password: (密码)

Retype account password: (重复密码)

Adding password for user svn
Account created

Would you like to create another user account? [yes] no (不建立另一用户)

Would you like to configure ViewVC? [yes] (启用VierVC,回车)

Stopping CollabNet Subversion: httpd (no pid file) not running
[ OK ]
Starting CollabNet Subversion: [ OK ]

  Congratulations! You have successfully configured the CollabNet
  Subversion server.

  You can access your repositories at the following URL:
  http://localhost:80/svn/YOUR-REPOS-NAME
  http://localhost:80/viewvc/YOUR-REPOS-NAME

3、最后,配置完成后进行检查:
[root@localhost bin]# ps -ef|grep httpd
root 2626 1 1 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2627 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2628 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2629 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2630 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2631 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
csvn 2632 2626 0 06:35 ? 00:00:00 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -D viewvc_installed -k start
root 2634 2493 0 06:35 pts/1 00:00:00 grep httpd

[root@localhost mytest]# chkconfig --list|grep -i subversion
collabnet_subversion 0:off 1:off 2:off 3:on 4:on 5:on 6:off

[root@localhost mytest]# service collabnet_subversion status
CollabNet Subversion (apache [2626]) Running ...[ OK ]


4、在浏览器中,YOUR-REPOS-NAME换成建立的库名,这里为cclub,javaclub ..
http://1localhost:80/svn/YOUR-REPOS-NAME
http://localhost:80/viewvc/YOUR-REPOS-NAME
注意浏览器上的地址栏。

5、如果配置了iptable防火墙,别忘记打开相应的端口

# vim /etc/sysconfig/iptables   ← 编辑防火墙配置文件


-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  ← 找到这一行,就可以了。

如果你配置了其他端口号,假设8000
那么:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  ← 找到这一行,接着添加如下行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT  ← 开放8000号端口,允许Subversion SVN通过


然后重启iptable防火墙
# service /etc/rc.d/init.d/iptables restart  

6、配置命令环境(很多人都没有这个配置环节,我找了很久,才找到的相关配置)
修改 /etc/profile文件,
# gedit /etc/profile
在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC前面添加如下内容:
PATH=/opt/CollabNet_Subversion/bin:$PATH
export MANPATH=/opt/CollabNet_Subversion/share/man:$MANPATH
export LOCPATH=/opt/CollabNet_Subversion/share/locale:$LOCPATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

最终效果如上.
执行如下命令,可以让修改立即生效:
# source /etc/profile

7、你可以简单测试一下svn命令:

[root@localhost etc]# svn help
用法: svn <subcommand> [options] [args]
Subversion 命令行客户端,版本 1.6.11。
请使用 “svn help <subcommand>” 显示子命令的帮助信息。
使用“svn --version”查看程序以及RA模块的版本号,或者
使用“svn --version --quiet”仅查看程序版本号。
大多数的子命令可接受文件或目录参数,对目录进行递归处理。
如没有指定参数,则默对当前目录(包含当前目录)递归处理。

到此,SVN服务器端已经配置好了。在Windows下,你可以安装TortoiseSVN客户端,我安装的是TortoiseSVN 1.6.5。


8、用户权限配置
这里主要是增加新的用户,由于我这里采用的是缺省的安装,所以配置文件不在/var/svn/repositories下面的仓库里(我配置了很久都不行),里面配置了也没有效果,还是看了一个日本的网站,才知道这一点。
这里需要配置
[root@localhost conf]# htpasswd /etc/opt/CollabNet_Subversion/conf/svn_auth_file h000001
New password: 
Re-type new password: 
Adding password for user h000001
[root@localhost conf]# htpasswd /etc/opt/CollabNet_Subversion/conf/svn_auth_file l000002
New password: 
Re-type new password: 
Adding password for user l000002
[root@localhost conf]# vim svn_access_file 

[/]
svnadmin = rw
h000001 = rw
l000002 = rw
这样,不需要重新启动svn或操作系统,就可以通过http://192.168.1.17/svn/cclub 使用h000001和l000002这两个用户访问了。 (我这台计算机的IP:192.168.1.17)


来源于网络,回归于网络。 
 

编号
出错信息
问题剖析
解决方案

1.
svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://svn.moon.ossxp.com/svn/test'
错误的用户名
检查登录的用户名是否输入错误

svn: 服务器发送了意外的返回值(500 Internal Server Error),在响应 “OPTIONS” 的请求 “http://svn.moon.ossxp.com/svn/test” 中

2.
svn: OPTIONS of 'http://svn.moon.ossxp.com/svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge (http://svn.moon.ossxp.com)
错误的口令
用正确的用户名/口令登录

svn: 方法 OPTIONS 失败于 “http://svn.moon.ossxp.com/svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge (http://svn.moon.ossxp.com)

3.
svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'http://svn.moon.ossxp.com/svn/test'
用户无权限
联系管理员,为用户分配权限

svn: 服务器发送了意外的返回值(403 Forbidden),在响应 “OPTIONS” 的请求 “http://svn.moon.ossxp.com/svn/test” 中

4.
svn: OPTIONS of 'http://www.moon.ossxp.com/svn/test': 200 OK (http://www.moon.ossxp.com)
服务器地址错误,是普通Web页面,不支持SVN的 WebDAV 协议
确认输入正确的 SVN 服务地址。可以在浏览器中输入该地址进行确认

svn: 方法 OPTIONS 失败于 “http://www.moon.ossxp.com/svn/test”: 200 OK (http://www.moon.ossxp.com)

5.
The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 or above. SVN below 1.5.0 can not handle mergeinfo properly. It can mess up our automated merge tracking!
是由于客户端的软件版本低于1.5.0造成的。服务器端对客户端软件版本进行了限制,以免对合并跟踪破坏。
升级本地的Subversion客户端软件到1.5.0或以上版本。

6.
svn: This client is too old to work with working copy '.'. You need to get a newer Subversion client, or to downgrade this working copy. See http://subversion.tigris.org/faq.html#working-copy-format-change for details.
安装了多个版本的SVN客户端(TSVN,Subclipse,...),且各个客户端的版本不一致。高版本的SVN客户端会自动更新本地工作目录中的 .svn 目录下的文件格式,导致旧版本的SVN客户端不能继续访问该本地工作目录
将本机安装的所有的SVN客户端都更新到同一个大版本,以避免本地工作目录的格式不一致

svn: 此客户端对于工作副本 “.” 太旧。你需要取得更新的 Subversion 客户端,或者降级工作副本。 参见 http://subversion.tigris.org/faq.html#working-copy-format-change 以获得更详细的信息。

7.
svn: Working copy 'trunk/src' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
异常操作导致目录没有解锁。
一个简单的重现方法:在 .svn 目录下创建空的名为 lock的文件
使用命令行 "svn cleanup" 或者类似的“清理”动作删除锁定

svn: 工作副本“trunk/src”已经锁定 svn: 运行“svn cleanup”删除锁定 (输入“svn help cleanup”得到用法)

8.
日志中没有作者信息: ------------------------------------ r9 | (没有作者信息) | … ossxp.com anonymous commit test
匿名提交导致没有作者信息
检查版本库权限控制,禁止匿名提交

9.
正在发送 ... 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: 提交说明至少应包含 4 个字符, 或者太简单了。
这是由于用户提交的提交说明(commit log),太过简单了。在提交时需要输入有意义的 commit log。
写有意义的提交说明,或者请求管理员更改版本库插件

10.
增加 Logger.c 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Wide character in print at /opt/svn/svnroot/myrepos/hooks/scripts/check-case-insensitive.pl line 259. 发现文件名大小写冲突: trunk/src/Logger.c 已经存在于 logger.c
管理员设置了对新增文件是否重名(只有大小写不同)的文件进行检查。文件名只有大小写不同,在Windows上进行检出会造成麻烦
不要添加重名(仅大小写不同)文件

增加 src/文件aBc.txt 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Clash: '/trunk/src/文件aBc.txt' '/trunk/src/文件abc.txt'

11.
svn: While preparing '/home/jiangxin/tmp/svn.test/trunk/src/README.txt' for commit svn: Inconsistent line ending style
提交的文件已经设置了 svn:eol-style 属性,但是该文本内的换行符有DOS的换行符CRLF,也有Unix换行符LF,不一致!
统一该文本文件内的换行符。Linux 下可以用dos2unix, unix2dos, sed等命令。Windows下可用UltraEdit 进行转换。

svn: 当为提交操作准备“/home/jiangxin/tmp/svn.test/trunk/src/README.txt”时 svn: 不一致的行结束样式

12.
svn: Failed to add file 'Makefile': an unversioned file of the same name already exists
执行更新(svn up)时报错。因为其他人新增一个文件到服务器,而本地却存在一个同名文件(未版本控制)
先将本地重名文件改名,再执行"svn up",之后再比较、合并文件。或者执行 "svn up --force"

svn: 增加文件 'Makefile' 失败: 同名未版本控制的文件已存在

13.
Adding src/Makefile svn: Commit failed (details follow): svn: File '/svn/test/trunk/src/Makefile' already exists
添加新文件,提交时报错。因为其他人已经先于我增加了该文件。
先执行更新操作("svn up"),再根据提示进行操作:合并/提交...

增加 src/Makefile svn: 提交失败(细节如下): svn: 文件“/svn/test/trunk/src/Makefile”已存在

14.
$ svn up Conflict discovered in 'Makefile'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p C Makefile Updated to revision 5. Summary of conflicts: Text conflicts: 1
多人同时编辑同一个文件时,可能会遇到冲突。别人先于我提交,则当我提交时要先更新。更新可能遇到不能自动解决的冲突
使用工具进行冲突解决

$ svn up 在 “Makefile” 中发现冲突。 选择: (p) 推迟,(df) 显示全部差异,(e) 编辑, (mc) 我的版本, (tc) 他人的版本, (s) 显示全部选项: p C Makefile 更新到版本 5。 冲突概要: 正文冲突:1

15.
svn: Commit failed (details follow): svn: File 'Makefile' is out of date svn: File not found: transaction '6-d', path '/trunk/src/Makefile'
提交的文件已被他人删除
先执行更新操作("svn up"),再根据提示解决该树冲突:删除文件或继续添加...

svn: 提交失败(细节如下): svn: 文件 “Makefile” 已经过时 svn: File not found: transaction '6-c', path '/trunk/src/Makefile'

16.
svn: Commit failed (details follow): svn: File or directory '/trunk/XXX' is out of date; try updating svn: resource out of date; try updating
基于旧版本修改是不允许的
先更新("svn update"),再提交

svn: 提交失败(细节如下): svn: 文件或目录 “/trunk/XXX” 已经过时;请先更新 svn: resource out of date; try updating

17.
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent svn: At least one property change failed; repository is unchanged svn: Error setting property 'log': Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
修改提交说明等操作属于高风险操作,因为该操作没有被版本控制,属于不可恢复的操作。缺省禁止。
请联系管理员,启用该版本的相关钩子,允许修改“版本属性”。参见 管理员钩子设置

svn: DAV 请求失败;可能是版本库的 pre-revprop-change 钩子执行失败或者不存在 svn: 至少有一个属性变更失败;版本库未改变 svn: 设置属性 “log” 出错: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook

18.
传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output: ==================== trunk/src/File.c : 属性 svn:mime-type 或者 svn:eol-style 没有设置 ==================== 管理员已经启用换行符属性检查。每一个新添加的文件必须 指定换行符。如果 svn:mime-type 属性为文本文件,则 必须设置 svn:eol-style 属性。 对于二进制文件,执行如下命令: svn propset svn:mime-type application/octet-stream path/of/file 对于文本文件,可以执行如下命令: svn propset svn:mime-type text/plain path/of/file svn propset svn:eol-style native path/of/file 为了避免每次添加文件手动设置,可以启用自动属性设置 ...
管理员启用了检查新文件换行符的扩展
为新增文件设置正确的 svn:mime-type 和/或 svn:eol-style 属性

 

你可能感兴趣的:(SVN,职场,休闲)