搭建SVN版本控制

1 安装SVN

#安装
yum install -y subversion
#测试
svnserve --version

2 建库

#创建库根路径
mkdir -p /svn
#创建一个项目库
svnadmin create /svn/qq
#检测是否创建成功
cd /chiu/svn/qq/conf
#如果有这几个说明创建成功
-rw-r--r-- 1 root root 1080 5月  16 20:49 authz
-rw-r--r-- 1 root root  309 5月  16 20:49 passwd
-rw-r--r-- 1 root root 3090 5月  16 20:49 svnserve.conf
#启动
svnserve -d -r /svn/qq

3 修改配置文件

3.1 svnserve.conf文件

vim /svn/qq/conf/svnserve.conf
[general]
#没有登录不能操作
anon-access = none
#登录后可以写操作
auth-access = write
#用户密码文件的位置
password-db = /svn/qq/conf/passwd
#授权文件的路径
authz-db = /svn/qq/conf/authz
#项目的名称
realm = /svn/qq

3.2 passwd文件

vim /svn/qq/conf/passwd
[users]
#格式是 用户名=密码
admin=admin

3.3 authz文件

vim /svn/qq/conf/authz
[groups]
#给用户分配用户组,格式是 组名=成员1,成员2
admin=admin
[/]
#给用户组分配权限,格式 @组名=rw (r读权限,w写权限)
@admin=rw

4 启动SVN版本库

svnserve -d -r /svn    启动服务
netstat -luntp
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      20507/svnserve 
svn co svn://10.0.0.50:3690/qq   连接到仓库指定仓库名
取出版本 0。

5 错误排查

svn: E170000: URL “svn://10.0.0.50/qq” 不存在  
启动服务时错误指定了/svn/qq
svn: E170001: 认证失败
用户名密码错误
配置文件格式错误

6 基本操作

注意:大部分操作需要在svn版本控制的文件夹下进行
checkout(别名:co)命令
命令说明:剪出版本库中的可用的工作目录; 
使用方法:checkout URL[@REV]… [PATH]; 
使用实例:svn co svn://10.0.0.50/qq 
这个过程是把代码从服务器中下载下来,保持版本一致。

add命令
命令说明:Put files and directories under version control, scheduling them for addition to repository. They will be added in next commit. 
使用方法:add PATH…; 
使用实例:svn add *.Java(可以使用通配符)
这个过程是把新建的文件和文件夹添加进版本控制,在下一次commit时,会导入到版本库里进行同步。

commit(别名:ci)命令
命令说明:将你的变更从你的SVN工作目录提交到版本库; 
使用方法:commit PATH…; 
使用实例:svn ci -m “commit dir and file” test(可以使用通配符,可同时提交目录和文件)

lock命令
命令说明:将锁住SVN工作目录或者版本库的URL,以使没有人可以提交目录或者文件的变更信息; 
使用方法:lock TARGET…; 
使用实例:svn lock -m “lock dir and file” Test.java(可使用通配符,比如:T*.*)

unlock命令
命令说明:解除SVN工作目录或者版本库URL的锁; 使用方法:unlock TARGET…; 
使用实例:svn unlock -m “lock dir and file” Test.java(可使用通配符,比如:T*.*)
注:在本地加锁或者解锁,记得提交到服务器。

delete(别名:del, remove, rm)命令
命令说明:从SVN版本控制中删除文件或者目录; 
使用方法:delete PATH…; 
使用实例:svn delete Test.java(可使用通配符,比如:T*.*) –删除文件 
         svn delete test(可使用通配符,比如:t*) –删除目录
注:执行上面的命令,只能删除SVN版本控制下的文件,不能删除目录,故删除目录时,应该采用Linux(Unix)系统的rm命令,同时删除后记得提交。

move(别名:mv, rename, ren)命令
命令说明:移动或者重命名SVN工作目录或者版本库; 
使用方法:move SRC… DST 
使用实例:svn move Test.Java Test2.java
         svn move -m “ss” svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test2.java svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test3.java
注:执行上面的第一种实例命令记得提交。第二种命令是直接修改服务器的文件名,不用提交。

log命令
命令说明:显示版本库文件的日志信息 
使用方法:log [PATH] log URL[@REV] [PATH…] 
使用实例:svn log T*(一般不要使用通配符,除非该文件目录下只有一个文件) 
         svn log svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test3.java

info命令
命令说明:显示本地或者远程服务器文件的详细信息 
使用方法:info [TARGET[@REV]…] 
使用实例:svn info Test.java(可以使用通配符)

list(别名:ls)命令:
命令说明:显示版本库目录的实体,包括目录下的子目录和文件。 
使用方法:list [TARGET[@REV]…]; 
使用实例:svn list [test] (不建议使用通配符,除非你的目录开头字母是不重复的,否则分不清目录下文件的归属)

help(别名:?, h)命令
命令说明:对svn命令或者使用程序的一种描述。 
使用方法:help [SUBCOMMAND…]; 
使用实例:svn ci –help(不可以使用通配符)

mkdir命令:
命令说明:在SVN版本控制下创建目录。 
使用方法:mkdir PATH…;mkdir URL… 
使用实例:svn mkdir test3(不可以使用通配符) 
         svn mkdir -m “create dir” svn://192.168.31.131/svntest/trunk/src/com/ant/test4
注:第一种方式创建完目录之后,需要提交,第二种直接将目录创建在版本库的URL下,不需要提交尽。提交目录或文件时加上 -m 参数,否则会提示如下错误:

status(别名:stat, st)命令
命令说明:打印SVN工作目录和文件状态。 
使用方法:status [PATH…]; 
使用实例:svn status -v *(可以使用通配符)
注:在执行status命令时,建议强制加上“-v”命令参数,第一列保持相同,第二列工作版本号,第三列最后一次修改的修改人,第四列最后一次修改的版本号。

copy(别名:cp)命令
命令说明:备份历史。 
使用方法:copy SRC[@REV]… DST; 
使用实例:svn cp Test3.java Test4.java(不可以使用通配符) 
         svn cp -m “ss” Test3.java svn://192.168.31.131/svntest/trunk/src/com/ant/test2/Test4.java
注:第一种方式需要手动提交,第二种方式可以自动提交。

update(别名:up)命令
命令说明:将服务器的变更引入本地项目。 
使用方法:update [PATH…]; 
使用实例:svn up t*(可以使用通配符)

diff(别名:di)命令:
命令说明:比较两个版本的差异。 
使用方法:diff [-c M | -r N[:M]] [TARGET[@REV]…]; 
diff [-r N[:M]] –old=OLD-TGT[@OLDREV] [–new=NEW-TGT[@NEWREV]] [PATH…] 
diff OLD-URL[@OLDREV] NEW-URL[@NEWREV] 
使用实例:svn di T*(可以使用通配符)
         svn di -r 20:18 T*(可以使用通配符)
注:第一种情况是与本地版本比较,第二种情况是显示指定版本的比较。

merge命令
命令说明:将两个指定的版本差异合并到当前的工作目录文件。 
使用方法:merge sourceURL1[@N] sourceURL2[@M] [WCPATH]; merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]; 
merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [WCPATH] 
使用实例:svn merge -r 20:18 Test3.java(不建议使用通配符)
注:当两个文件产生冲突的时候,需要先处理冲突,再执行合并命令。

revert命令
命令说明:恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。 
使用方法:revert PATH… 
使用实例:svn revert Test3.java(不建议使用通配符)
         echo “dd” Test3.java(数据准备)

blame(别名:praise, annotate, ann)命令
命令说明: 输出指定文件带有版本号的内容和作者在线信息。 
使用方法:blame TARGET[@REV]… 
使用实例:svn blame Test.*(可以使用通配符)
注:只能执行文件,不能执行目录。

export命令:
命令说明:采用复制的方式创建一个不在SVN版本控制下的树。 
使用方法:export [-r REV] URL[@PEGREV] [PATH] 
export [-r REV] PATH1[@PEGREV] [PATH2] 
使用实例:svn export . test5(不可以使用通配符)
注:创建之后需要提交。

import命令:
命令说明:提交一个不在版本控制下的树或者文件到版本库。 
使用方法:import [PATH] URL 
使用实例:svn import -m “sss” svn://192.168.31.131/svntest/trunk/src/com/ant/test5(不可以使用通配符)

cat命令:
命令说明:输出指定文件的内容(URLs也必须指定到文件类型)。 
使用方法:cat TARGET[@REV]… 
使用实例:svn cat svn://192.168.31.131/svntest/trunk/src/com/ant/test Test3.java(可以使用通配符)
注:必须指定到文件或者文件类型。

changelist(别名:cl)命令:
命令说明:带有名称的文件关联列表。 
使用方法:changelist CLNAME TARGET… changelist –remove TARGET… 
使用实例:svn changelist T*(可以使用通配符)

switch(别名:sw)命令:
命令说明:带有名称的文件关联列表。 
使用方法:switch URL[@PEGREV] [PATH] switch –relocate 
FROM TO [PATH…] 
使用实例:svn switch svn://192.168.31.131/svntest/trunk/. (不建议使用通配符) 
         svn mkdir trunk2(目录准备) 
         cd trunk2(目录准备)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容