标签 svn 下的文章

Linux下svn命令整理

1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.35/pro/domain 
如果开启了https浏览模式也可以写成:
svn checkout https://192.168.1.35/pro/domain
简写:svn co 
svn co https://192.168.1.35/pro/domain

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.1.1/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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

SVN数据迁移Linux到Windows机器

VN版本信息:
Linux: Subversion版本 1.6.11 (r934486)

Windows : VisualSVN Server Manager 2.7.6

使用工具
Putyy
WinScp

1.从Linux系统备份仓库

使用Putty连接到Linux,进入到SVN仓库目录,

执行命令进行备份:

svnadmin dump /home/subversion/repos > svnback20141114
/home/subversion/repos 要备份的仓库
svnback20141114 备份文件名

备份过程需要等待一会。

2.将仓库备份导入到Windows
备份完成以后使用WinScp将备份文件(svnback20141114)拷贝到Windows中。
打开cmd,进入仓库目录
执行命令创建新仓库:

svnadmin create 200SVN

执行命令将备份导入新仓库:
svnadmin load 200SVN < c:\svnback20141114

200SVN 导入的仓库名

c:ssvnback20141114 备份文件
漫长的等待后迁移完毕!
一般或者说大部分都是Windows到Linux,但是也有部分奇葩,是从L到W;
VIA: https://my.oschina.net/calvin6/blog/344693

SVN Skipped 'xxx' -- Node remains in conflict svn文件冲突解决方法

开发在执行svn up更新静态文件的时候报错,

# svn up
Updating '.':
Skipped 'xxx' -- Node remains in conflict
At revision 2635.
Summary of conflicts:
  Skipped paths: 1

xxx为文件名

处理方式:

svn remove --force filename
svn resolve --accept=working  filename
svn up

一般就可以了,如果还是不行可以把目录mv掉,重新全量拉下·

CentOS7下快速安装部署Svn服务

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。SVN相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS,互联网上免费的版本控制服务多基于Subversion。
subversion_logo.png
Subversion官网地址:http://subversion.apache.org/packages.html
SVN客户端:TortoiseSVN 官网下载地址:http://tortoisesvn.net/downloads.html
安装SVN服务:

yum install subversion -y

创建svn目录

mkdir -p /data/svn

新建资源仓库

svnadmin create /data/svn/project
ll /data/svn/project/
total 24
drwxr-xr-x 2 root root 4096 Mar 23 14:43 conf
drwxr-sr-x 6 root root 4096 Mar 23 15:15 db
-r--r--r-- 1 root root    2 Mar 23 14:35 format
drwxr-xr-x 2 root root 4096 Mar 23 14:35 hooks
drwxr-xr-x 2 root root 4096 Mar 23 14:35 locks
-rw-r--r-- 1 root root  229 Mar 23 14:35 README.txt
目录用途说明:
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

配置svn服务svnserver.conf

vim /data/svn/project/svnserver.conf
[general]
anon-access = none
auth-access = write
password-db = /data/svn/project/conf/passwd
authz-db = /data/svn/project/conf/authz
realm = My Test Repository         #提示信息

添加用户和密码

vim /data/svn/project/passwd
[users]
a1 = 123abc
a2 = aaabbbccc
test1 = 11aabb
用户配置文件的修改立即生效,不必重启svn服务

配置用户授权文件

vim /data/svn/project/authz
[groups]

user = a1,a2
test = test1
[/]

@user = rw
@test = r
* =

格式说明

版本库目录格式: 

[<版本库>:/项目/目录] 

@<用户组名> = <权限> 

<用户名> = <权限>

/ 表示对根目录(即/data/svn/project目录)下的所有子目录范围设置权限;

[/abc] 表示对资料库中abc项目设置权限;

创建一个user组,组成员包括a1和a2

创建一个test组,成员只有test1;

user组对目录有读写权限;

单个用户test1有读权限;

*=表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。

注意:对权限配置文件的修改立即生效,不必重启svn。 

启动svn服务

svnserve -d -r /data/svn/project/

注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /data/svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in 'svn://x.x.x.x/project' ”这样的错误。

默认svn服务器端口是3690。

杀死svn服务:

ps -ef|grep svnserve
直接kill -9 Pid号即可

或者修改/etc/init.d/svnserve在start()函数部分的daemon增加svn路径,修改后的服务文件为:

 cat /etc/init.d/svnserve 
#!/bin/bash
#
# svnserve        Startup script for the Subversion svnserve daemon
#
# chkconfig: - 85 15
# description: The svnserve daemon allows access to Subversion repositories \
#              using the svn network protocol.
# processname: svnserve
# config: /etc/sysconfig/svnserve
# pidfile: /var/run/svnserve.pid
#
### BEGIN INIT INFO
# Provides: svnserve
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: start and stop the svnserve daemon
# Description: The svnserve daemon allows access to Subversion
#   repositories using the svn network protocol.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/svnserve ]; then
        . /etc/sysconfig/svnserve
fi

exec=/usr/bin/svnserve
prog=svnserve
pidfile=${PIDFILE-/var/run/svnserve.pid}
lockfile=${LOCKFILE-/var/lock/subsys/svnserve}
args="--daemon --pid-file=${pidfile} $OPTIONS"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

start() {
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon --pidfile=${pidfile} $exec $args -r /data/svn/project
    retval=$?
    echo
    if [ $retval -eq 0 ]; then
        touch $lockfile || retval=4
    fi
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc -p ${pidfile} $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

reload() {
    restart
}

force_reload() {
    restart
}

rh_status() {
    # run checks to determine if the service is running or use generic status
    status -p ${pidfile} $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac
exit $?

常见问题处理:

提示svn: No repository found in 'svn://x.x.x.x/project'错误?
解决:启动svn服务的时候没有使用-r /svn/project参数,没有指明资源库的具体路径。使用# svnserve -d -r /svn/project/ 命令来启动就可以了,不要使用/etc/init.d/svnserver脚本。

执行命令# svn co svn://x.x.x.x.x/project时提示“svn: Authorization failed”错误?
解决:一般这种授权失败的错误原因都来自conf/authz文件的配置。

checkout的时候SVN看到anon-access = read只读模式 日志文件显示正常,不要求用户名密码,而到了具体目录的时候问题发生了,这时没有用户密码就不能获得文件就会出错;
anon-access = none 禁止所有匿名访问,也就是说如果不在authz-db中开放访问的用户,是不会允许读写版本日志的,故系统对日志的读写也纳入禁止访问范围,所以anon-access = none才会正常。

Windows2008安装SVN报错“Сertificate key usage violation in Subversion clients built against GnuTLS VisualSVN”

Windows2008安装SVN报错“Сertificate key usage violation in Subversion clients built against GnuTLS VisualSVN”解决办法:
修改注册表键值:
Add the following registry value to the Windows registry:
for 32-bit system:

[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server]
"CreateGnuTLSCompatibleCertificate"=dword:00000001

for 64-bit system:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VisualSVN\VisualSVN Server]
"CreateGnuTLSCompatibleCertificate"=dword:00000001

Start VisualSVN Server Manager.
Go to Action | Properties | Certificate.
Click Change certificate... and follow the wizard instructions to generate a new self-signed certificate.
The certificate will be generated without the 'Key Usage' extension and will be compatible both with GnuTLS and OpenSSL.

VIA:https://www.visualsvn.com/support/topic/00056/

最新

分类

归档

评论

其它