SVN是subversion的缩写,它是一个开源版本控制系统。通过采用分支管理系统的高效管理,简而言之就是多人使用,共同开发同一个项目,实现资源共享,最终实现集中管理。
SVN的全称是Subversion,即版本控制系统。它是最流行的开源版本控制系统。作为一个开源版本控制系统,Subversion管理随时间变化的数据。这些数据放在一个中央存储库中。这个存档非常类似于一个普通的文件服务器,但是它会记住每个文件的变化。这样,您可以将文件还原到旧版本,或者浏览文件的更改历史。Subversion是一个通用系统,可以用来管理任何类型的文件,包括程序源代码。
SVN采用客户机/服务器系统,项目的所有版本都存储在服务器上。程序开发人员将首先从服务器上获得项目最新版本的副本,并将其复制到本地计算机上。然后,在这个基础上,每个开发者可以在自己的客户端上进行独立的开发工作,随时向服务器提交新的代码。当然,你也可以通过更新操作获得服务器上的最新代码,从而与其他开发者使用的版本保持一致。
SVN客户端有两种,一种是基于Web的WebSVN,一种是以乌龟SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端。两者都有免费的开源软件可以使用。SVN还以两种方式存储版本数据:BDB(一种事务安全的表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB模式可能会在服务器中断时锁定数据,所以FSFS模式更安全。
svn的基本操作过程是:
你刚进入一家新公司,要求你接手一个正在进行的项目。你打开终端写道:
SVN co SVN://192 . 168 . 1 . 1/pro/domain
然后你可以在当前目录下找到一个名为domain的项目,cd domain。你浏览了几行代码,但是有一个bug。你不能不改变它。你必须提交它。
svn ci -m 某物
成功。您已经添加了几个。php文件到域下的app文件夹,完成了整个项目!你再次打开终端:
svn添加域/应用/*。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
添加成功。厉害了,下班后你去吃了一碗你最爱吃的老坛酸菜泡面。
以下是一些常用命令
1.将文件签出到本地目录。
Svcheckout路径(路径是服务器上的目录)
例如:SVN SVN收银台://192.168.1.1/pro/domain
缩写:svn公司
2.向版本库中添加新文件。
svn添加文件
示例:svn添加test.php(添加test.php)
Svadd *。php(添加当前目录中的所有PHP文件)
3.将更改的文件提交到版本库。
Svcommit-m "日志消息"[-n] [-no-unlock]路径(如果选择了锁,请使用no-unlock开关)
例如:test.php SVN commit-m“为我的测试添加测试文件”
缩写:svn ci
4.锁定/解锁
svn lock -m "LockMessage" [ - force]路径
例如:test.php SVN锁-m“锁测试文件”
svn解锁路径
5.更新到某个版本。
svn更新-r m路径
例如:
SVUPDATE如果后面没有目录,默认情况下当前目录和子目录下的所有文件都会更新到最新版本。
Svupdate-r200test.php(将版本库中的文件test.php恢复到版本200)
Svupdatetest.php(已更新,与版本库同步。如果提交时提示过期,则是因为冲突。您需要首先更新和修改文件,然后清除svn resolved,最后提交commit)
缩写:svn up
6.检查文件或目录状态。
Svstatus路径(目录中文件和子目录的状态,正常状态不显示)
【?不受svn控制;m:内容修改;c:有冲突;答:计划添加到版本库中;k:锁定]
Svstatus-vpath(显示文件和子目录的状态)
第一列保持不变,第二列显示工作版本号,第三和第四列显示最后修改的版本号和修改者。
注意:svn status、svn diff和svn revert可以在没有网络的情况下执行,因为svn在本地保留了本地版本的原始副本。svn。
缩写:svn st
7.删除文件
svn删除路径-m“删除测试文件”
例如:SVN删除SVN://192 . 168 . 1 . 1/pro/domain/test . PHP-m“删除测试文件”
或者直接SVN删除test.php,然后svn ci -m 删除测试文件,这是推荐的。
缩写:svn (del,remove,rm)
8.检查日志。
svn日志路径
例如,test.php SVN日志显示该文件的所有修改记录及其版本号的变化。
9.检查文件详细信息。
svn信息路径
例如:SVN info test.php
10.比较不同之处。
Svdiff路径(将修改后的文件与基本版本进行比较)
例如:test.php SVN差异
Svn diff -r m:n路径(比较版本m和版本n之间的差异)
例如:svn diff -r 200:20test.php
缩写:svn di
1.将两个版本之间的差异合并到当前文件中。
svn合并-r m:n路径
比如:test.php SVN合并-R 200: 205(版本200和205的差异合并到当前文件,但是总会有冲突,需要处理)
12.SVN帮助
svn帮助
svn帮助配置项
13.版本库下的文件和目录列表
svn列表路径
在路径目录下显示属于版本库的所有文件和目录。
缩写:svn ls
14.在版本控制下创建一个新目录。
Svmkdir:在版本控制下创建一个新目录。
用法:
1、mkdir路径…
2、mkdir URL…
创建受版本控制的目录。
1.由工作拷贝路径指定的每个目录将在本地端创建并添加。
下次提交的时间表。
2.由URL指定的每个目录将通过立即提交给仓库来创建。
在这两种情况下,所有中间目录都必须预先存在。
15.恢复本地修改。
Svrevert:恢复原始未更改的工作副本文件(恢复大多数本地修改)。还原:
用法:还原路径…
注意:此命令不会访问网络,但会解决冲突情况。但是它不会恢复
删除的目录
16、代码库URL更改
Svn开关(sw):将工作副本更新到不同的URL。
用法:1、切换URL[路径]
2、切换从重新定位到[路径.]
1.更新您的工作副本并将其映射到新的URL。它的行为与“svn更新”非常相似,它还将
服务器文件与本地文件合并。这是为了将工作副本映射到同一仓库中的分支或标记。
方法。
2.重写工作副本的URL元数据,以反映简单URL中的更改。当仓库的根URL改变时
(例如,方案名或主机名发生了变化),但是工作副本仍然映射到同一仓库中的同一目录。
该命令更新工作副本和仓库之间的对应关系。
7.解决冲突
Svresolved:删除工作副本的目录或文件的“冲突”状态。
用法:解析路径…
注意:该子命令不会根据语法解决冲突或删除冲突标记;它只是消除了冲突
相关文件,然后让PATH再次提交它
查看修改的文件记录
svcat-显示文件的特定版本的内容。
svlist-显示目录或版本中的文件列表。
显示Svn的版本日志,包括作者、日期、路径等。
svdiff-显示特定修改的行级详细信息。
列表示例:
svlist http://svn.test.com/svn #查看目录中的文件。
svlist-v http://svn.test.com/svn #查看详细的目录信息(修订者、版本号、文件大小等。).
Svn list [-v] #查看当前工作副本的版本库URL。
卡特彼勒示例:
Svcat-r4test.c #查看版本4中test.c文件的内容,不做比较。
差异示例:
Svdiff #没有添加任何东西,并且将坚持本地代码和存储在本地的信息之间的区别。svn目录;信息太多没用。
比较本地代码和所有版本号为3的文件的区别。
Svdiff-r3text.c #比较本地代码和版本号为3的text.c文件之间的差异。
Svdiff-R 5: 6 #比较第5版和第6版所有文件的差异。
Svdiff-R5: 6Text.c #比较Text.c文件在版本5和版本6之间的变化。
Svdiff-c6test.c #比较了text.c文件在版本5和版本6之间的变化。
日志示例:
Svlog #不添加任何内容将显示提交的所有版本的日志信息:版本、作者、日期、注释。
Svlog-r 4: 20 #只看版本4到版本20的日志信息,按顺序显示。
Svlog-r20: 5 #以相反的顺序显示版本20和4之间的日志信息。
Svlogtest.c #查看文件test.c的日志修改信息
Svn log -r 8 -v #显示版本8的详细修改日志,包括所有修改文件的列表信息。
Svn log -r 8 -v -q #显示了版本8的详细提交日志,不包括注释。
Svn log -v -r 88:866 #显示了当前代码目录从版本88到版本866的所有变更的细节。
Svn log -v dir #要查看目录的日志修改信息,需要添加v。
svlog http://foo.com/svn/trunk/code/#显示代码目录的日志信息。
常见命令
svaddfile | dir-添加文件或整个目录
获取svn代码
提交本地修改代码
SVN status-查看本地修改代码:已修改文件或本地唯一文件的详细信息。
SV merge-合并svn和本地代码
svrevert-撤销本地修改代码
SV resolve-合并冲突代码
SV help[command]-查看svn帮助,或特定命令的帮助
Svdiff个性化定制
Svn配置文件:~/。子版本/配置
修改~/。subversion/config查找以下配置行:
# diff-cmd=diff_program (diff,gdiff等。)
只需添加上述脚本的路径,并将其修改为
diff-cmd=/usr/local/bin/diff wrap . sh #绝对路径
这样,svn diff命令将默认使用vimdiff来比较文件。
Diffwrap.sh文件
#!/bin/bash
# for svn diff: modify ~/。subversion/config查找以下配置行:
# diff-cmd=diff_program (diff,gdiff等。)
# diff-cmd=~/bin/diffwrap.sh
#当参数大于5时,删除前5个参数;如果参数小于5,则失败且不做任何事情。
第五班
#与vimdiff比较
vimdiff $@
参考文献
使用vimdiff作为SVN diff:https://www.jb51.net/LINUXjishu/734861.html的代码查看工具
http://blog.csdn.net/sunboy_2050/article/details/6187464 SVN共同司令部
svn 常用操作命令
检出Svcheckout http://路径(目录或文件的完整路径)[本地目录的完整路径] -用户名
Svn checkout svn:///path(目录或文件的完整路径)[本地目录的完整路径] - username用户名
#示例:
svcosvn://localhost/test tools/home/test tools-username WZHNSC
SVN co http://localhost/test/test app-用户名wzhnsc
SVN check out SVN://localhost//测试工具/home/测试工具-用户名WZHNSC
SVN check out http://localhost/test/test app-username wzhnsc
注意:如果在没有-password参数的情况下传输密码,将提示您输入密码。建议不要使用明文密码选项。
其中用户名和密码前面有两行短行,而不是一行。
如果您没有指定本地目录的完整路径,请将其签出到当前目录。
导出(导出一个干净的不带.svn文件夹的目录树)Svexport [-R版本号] http://路径(目录或文件的完整路径)[本地目录的完整路径] -用户名
Svexport [-R版本号] svn://path(目录或文件的完整路径)[本地目录的完整路径] -用户名
svexport在本地签出的目录的完整路径(即使用。svn文件夹)要导出的本地目录的完整路径
示例:
svexportsvn://localhost/test tools/home/test tools-username WZHNSC
svn导出SVN://localhost/test/test app-username wzhnsc
svn导出/home/testapp /home/testtools
注意:从版本库中导出干净的工作目录树的第一种形式是指定URL,
如果指定了修订号,将导出相应的版本。
如果未指定修订,最新版本将被导出到指定位置。
如果省略本地目录的完整路径,URL的最后一部分将是本地目录的名称。
第二种形式是将本地签出目录的完整路径指定为要导出的本地目录的完整路径,所有本地修改都将被保留。
但是,不受版本控制的文件(即,由于在。svn文件夹)将不会被复制。
添加新文件Svadd文件名
注意:告诉SVN服务器添加文件,实际上用svn commint -m上传!
示例:
svadd test.php <-添加test.php
Svcommit-M "用test.php添加我的测试" test.php
Svadd *。php <-添加当前目录中的所有PHP文件
Svcommit-m "为我的测试添加所有php文件" *。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
提交SVCOMMIT-M "提交注释信息文本"[-n] [-N] [ - no-unlock]]文件名
svci-m的文件名“提交评论信息文本”[-n] [-N] [ - no-unlock]]
必须带-m参数,可以是空的,但是必须写-m。
示例:
Svcommit-m“提交当前目录下所有受版本控制的文件”* <-注意,这里*指的是所有文件。
SVCOMMIT-M“用test.php提交我的测试”test.php
Svcommit-m "用test.php提交我的测试"-n-不解锁test.php <-使用不解锁开关来保持锁定。
SVCI-M“提交当前目录下所有受版本控制的文件”* <-注意,这里*指的是所有文件。
test.php SVCI-M“用test.php提交测试”
svci-m " submit my test test . PHP "-n-no-unlock test.php <-使用no-unlock开关来保持锁定。
更新文件svn更新
Svupdate-r修订版文件名
Svupdate文件名
示例:
SV update <-后面没有目录,默认情况下当前目录和子目录下的所有文件都更新到最新版本。
SV update-r 200 test.cpp <-将版本库中的文件test . CPP恢复到修订版)200。
SV Update test.php <-更新与版本库同步。
提交时,系统会提示您终止冲突。您需要首先更新文件,
然后清除svn resolved,最后提交。
删除文件Svn delete svn:///Path(目录或文件的完整路径)-m“删除笔记信息文本”
建议采取以下行动:
Svn删除文件名
Svci-m "删除注释信息文本"
示例:
SV Delete SVN://localhost/test app/test.php-m "删除测试文件test . PHP "
建议采取以下行动:
svn删除test.php
Svci-m "删除测试文件test.php "
加锁/解锁svlock-m的文件名“锁定注释信息文本”[-force]
Svunlock文件名
示例:
Svlock-M“用于字母锁定测试的test.php文件”test.php
svn解锁test.php
比较差异Svdiff文件名
Svdiff-r修订号m:修订号n文件名
示例:
svdiff test.php <-将修改后的文件与基本版本进行比较。
svdiff-R 200:201 test.php <-比较修订版本号200和修订版本号201之间的差异。
查看文件或者目录状态Svn st目录路径/名称
Svstatus目录路径/名称<-目录中文件和子目录的状态,不显示正常状态。
【?不受svn控制;m:内容修改;c:有冲突;
答:计划添加到版本库中;k:锁定]
Sv-v目录路径/名称
Svstatus-v目录路径/名称<-显示文件和子目录的状态
[第一列保持不变,第二列显示工作版本号,
第三列和第四列显示最后一次修改的版本号和修改者]
注意:svn状态、svn差异和svn恢复可以在没有网络的情况下执行。
原因是svn在本地保存了本地版本的原始副本。svn。
查看日志Svn日志文件名
示例:
svlog test.php <-显示该文件的所有修改记录及其版本号的变化。
查看文件详细信息Svn信息文件名
示例:
test.php SVN信息
SVN 帮助SVN help <-所有函数选项
svhelpci <-特定功能描述
查看版本库下的文件和目录列表Svlistsvn://path(目录或文件的完整路径)
Svls SVN://path(目录或文件的完整路径)
示例:
svn列表svn://localhost/test
svls svn://localhost/test <-显示SVN://localhost/test目录下属于版本库的所有文件和目录。
创建纳入版本控制下的新目录Svmkdir目录名
SVMKDIR-M 新目录备注文本 http://目录的完整路径
示例:
svn mkdir新目录
创建一个新目录。SVN://本地主机/测试/新目录
注意:添加子目录后,一定要回到根目录并更新,否则在此目录提交文件会提示“提交失败”
svn更新
注意:如果您在签出的目录中手工创建一个新文件夹newsubdir,
用svn mkdir newsubdir命令,svn会提示:
Svn:试着换成“svn add”或者“svn add -非递归”?
Svn:无法创建目录“hello”:文件已经存在。
此时,使用下面的命令来求解:
svn add -非递归newsubdir
进入这个newsubdir文件夹,用ls -a查看其下的所有目录和文件,会发现更多:svn目录。
然后使用svn mkdir -m 添加hello功能模块文件 SVN://localhost/test/newdir/newsubdir命令,
SVN提示:
svn:文件已经存在:文件系统/data/svnroot/test/db ,事务 4541-1 ,
路径“/newdir/newsubdir”
恢复本地修改SV revert[-递归]文件名
注意:此命令不会访问网络,但会解决冲突情况。但是它不会恢复已删除的目录。
示例:
SV revert foo . c <-放弃对文件的修改。
SV revert-递归。<-恢复整个文件目录。是当前目录。
把工作拷贝更新到别的URLSvswitch http://目录完整路径本地目录完整路径
示例:
Svswitchhttp://本地主机/测试/456。<-(原来是123的分支)当前目录分支到localhost/test/456。
解决冲突SV resolved[本地目录的完整路径]
示例:
$ svn更新
C foo
更新至修订版31。
如果您在更新时遇到冲突,您的工作副本将生成三个新文件:
$ ls
福. c
foo.c .矿
福. c.r30
foo . c . 31
当您解决了foo.c的冲突并准备提交时,运行svn resolved让您的工作副本知道您已经完成了所有工作。
您只需删除冲突文件并提交即可,但svn resolved不仅删除冲突文件,还会更正工作副本管理区中记录的一些记录数据,因此我们建议您使用此命令。
不checkout而查看输出特定文件或URL的内容svcat3358文件的完整路径
示例:
svn目录http://localhost/test/readme.txt
19.创建新的分支副本。
s Copy branchA branchB-m make b branch //从branch a复制一个新的分支branch b
20.将内容合并到分支合并中
SV Merge branchA branchB//将branch a的更改合并到branch b中
1.将文件签出到本地目录。
Svcheckout路径(路径是服务器上的目录)
例如:SVN SVN收银台://192.168.1.1/pro/domain
缩写:svn公司
2.向版本库中添加新文件。
svn添加文件
示例:svn添加test.php(添加test.php)
Svadd *。php(添加当前目录中的所有PHP文件)
3.将更改的文件提交到版本库。
Svcommit-m 日志消息[-n] [-no-unlock]路径(如果选择了保持锁定,请使用-no-unlock开关)
例如:test.php SVN提交-m 为我的测试添加测试文件
缩写:svn ci
4.锁定/解锁
svn lock -m LockMessage [ - force]路径
例如:test.php SVN锁-m“锁测试文件”
svn解锁路径
5.更新到某个版本。
svn更新-r m路径
例如:
SVUPDATE如果后面没有目录,默认情况下当前目录和子目录下的所有文件都会更新到最新版本。
Svupdate-r200test.php(将版本库中的文件test.php恢复到版本200)
Svupdatetest.php(已更新,与版本库同步。如果提交时提示过期,则是因为冲突。您需要首先更新和修改文件,然后清除svn resolved,最后提交commit)
缩写:svn up
6.检查文件或目录状态。
1)svn状态路径(目录中文件和子目录的状态,正常状态不显示)
【?不受svn控制;m:内容修改;c:有冲突;答:计划添加到版本库中;k:锁定]
2)svn状态-v路径(显示文件和子目录的状态)
第一列保持不变,第二列显示工作版本号,第三和第四列显示最后修改的版本号和修改者。
注意:svn status、svn diff和svn revert可以在没有网络的情况下执行,因为svn在本地保留了本地版本的原始副本。svn。
缩写:svn st
7.删除文件
svn删除路径-m 删除测试文件
示例:SVN删除SVN://192 . 168 . 1 . 1/pro/domain/test . PHP-m 删除测试文件
或者直接SVN删除test.php,然后svn ci -m 删除测试文件,这是推荐的。
缩写:svn (del,remove,rm)
8.检查日志。
svn日志路径
例如,test.php SVN日志显示该文件的所有修改记录及其版本号的变化。
9.检查文件详细信息。
svn信息路径
例如:SVN info test.php
10.比较不同之处。
Svdiff路径(将修改后的文件与基本版本进行比较)
例如:test.php SVN差异
Svn diff -r m:n路径(比较版本m和版本n之间的差异)
例如:test.php SVN diff-r 200:201
缩写:svn di
1.将两个版本之间的差异合并到当前文件中。
svn合并-r m:n路径
比如:test.php SVN合并-R 200: 205(版本200和205的差异合并到当前文件,但是总会有冲突,需要处理)
12.SVN帮助
svn帮助
svn帮助配置项
以上是常用命令,下面是一些不常用的命令。
13.版本库下的文件和目录列表
svn列表路径
在路径目录下显示属于版本库的所有文件和目录。
缩写:svn ls
14.在版本控制下创建一个新目录。
Svmkdir:在版本控制下创建一个新目录。
用法:1。mkdir路径.
2、mkdir URL.
15.恢复本地修改。
Svrevert:恢复原始未更改的工作副本文件(恢复大多数本地修改)。还原:
用法:还原路径.
注意:此命令不会访问网络,但会解决冲突情况。但是它不会恢复
删除的目录
16、代码库URL更改
Svn开关(sw):将工作副本更新到不同的URL。
用法:1、切换URL[路径]
2、切换-从重新定位到[路径.]
1.更新您的工作副本并将其映射到新的URL。它的行为与“svn更新”非常相似,它还将
服务器文件与本地文件合并。这是为了将工作副本映射到同一仓库中的分支或标记。
方法。
2.重写工作副本的URL元数据,以反映简单URL中的更改。当仓库的根URL改变时
(例如,方案名或主机名发生了变化),但是工作副本仍然映射到同一仓库中的同一目录。
该命令更新工作副本和仓库之间的对应关系。
7.解决冲突
Svresolved:删除工作副本的目录或文件的“冲突”状态。
用法:解析路径.
注意:该子命令不会根据语法解决冲突或删除冲突标记;它只是消除了冲突
相关文件,然后让PATH再次提交。
18.输出指定文件或URL的内容。
Svcat目标[@版本].如果指定了版本,搜索将从指定的版本开始。
SV cat-r prev filename filename(prev是以前的版本,或者可以写具体的版本号,以便提交输出结果)