安装:
svn客户端:apt-get install subversion ,然后根据提示一步一步,就完成了svn的安装。当然,也可以源码安装 svn,下载 subversion 一个最新版本的源码包,解压之后就可以安装了。
使用:
1、项目管理
通过网页打开http://192.168.xxx.xxx/svnmanager/,在网页进行项目管理(添加或者删除项目成员的读写权限,增加或者删除项目成员)。
2、 将文件checkout到本地目录
例如:svn checkout http://192.168.xxx.xxx/svn/sdvr (sdvr项目名字)
简写:svn co
3、 往版本库中添加新的文件(或者文件夹)
svn add file(folder)(增加文件后要commit文件)
例如:svn add xxx.c(添加xxx.c)
svn add xxx/(添加xxx目录下的所有文件和目录)
svn add * .c(添加当前目录下所有的c文件)
4、 将改动的文件提交到版本库
在checkout 的目录下(工作目录)执行
svn commit -m " LogMessage " [ -N ] [ --no-unlock ] PATH (如果选择保持锁,就使用--no-unlock开关)
例如:svn commit -m " add test file for my test " xxx.c
简写:svn ci
5、 加锁/解锁
svn lock -m " LockMessage " [ --force ] PATH
例如:svn lock -m " lock test file " xxx.c
svn unlock PATH
6、 更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 3 xxx.c(将版本库中的文件xxx.c还原到版本3)
svn update xxx.c(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved ,最后再提交commit)
简写:svn up
7、 查看文件或者目录状态
1 )svn status path (目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2 )svn status -v path (显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
8、 删除文件
svn delete path -m " delete test fle "(引号内容提交到日志)
例如:
svn delete svn://192.168.xxx.xxx/svn/sdvr/domain/xxx.c -m " delete test file "
或者直接svn delete xxx.c 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
9、 查看日志
svn log path
例如:svn log xxx.c 显示这个文件的所有修改记录,及其版本号的变化
10、 查看文件详细信息
svn info path
例如:svn info xxx.c
11、 比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff xxx.c
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 5:4 xxx.c
简写:svn di
12、 将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200 : 205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
13、 SVN 帮助
svn help
svn help ci
------------------------------------------------------------------------------
以上是常用命令,下面写几个不经常用的
------------------------------------------------------------------------------
14、 版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
15、 创建纳入版本控制下的新目录
在checkout 的目录下(工作目录)执行
svn mkdir : 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH...
2、mkdir URL...
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
16、 恢复本地修改
在checkout 的目录下(工作目录)执行
svn revert : 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
17、 代码库URL变更
在checkout 的目录下(工作目录)执行
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
18、 解决冲突
在checkout 的目录下(工作目录)执行
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
19、 输出指定文件或URL的内容。
在checkout 的目录下(工作目录)执行
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
在checkout 的目录下(工作目录)执行
svn switch --relocate http://192.168.168.3/svn/hdvr http://192.168.0.3/svn/hdvr
21、更新到某个版本
test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
svn: Working copy 'trunk/src' locked svn:
run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
异常操作导致目录没有解锁。
一个简单的方法:在 .svn 目录下创建空的名为 lock的文件,使用命令行 "svn cleanup" 或者类似的“清理”动作删除锁定
使用svn cleanup还是解决不了问题,只能删除目录重新checkout
===========================
一键清除SVN或CVS版本控制目录
==========================
用过SVN或CVS版本控制工具的筒子们,在享受着它们给我们带来的方便的同时,也许也在为这么一件事情苦恼:
如果某个目录在SVN或CVS版本控制工具的控制之下时。该目录下以及该子孙目录下都会有一个.svn目录或CVS目录。当我们想让该目录脱离版本控制工具控制时,想删除这些.svn目录或CVS目录。一个一个手动删除吗?目录树大了呢?有成百上千个分支目录也要手动删除吗?
NO。有更简便的方法,即可实现一键删除。操作步骤如下:
步骤一、编写注册表脚本
新建一个文本文件,把下面的代码COPY进去,保存为delSVNorCVS.reg(可直接从本文附件中下载)
- Windows Registry Editor Version 5.00
- [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteCVSOrSVN]
- @="Delete CVS/SVN Folders"
- [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteCVSOrSVN\command]
- @="cmd.exe /c \"TITLE Removing CVS/SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn,CVS) DO RD /s /q \"%%f\" \""
步骤二、执行注册表脚本
双击delSVNorCVS.reg,导入注册表(安装了360等安全管家的筒子会遇到怀疑是木马的提示,放行!)。
步骤三、Delete CVS/SVN Folders
选择想要清除.svn或CVS目录的文件夹,点击右键,发现了什么?是否多了个“Delete CVS/SVN Folders”?!(如下图所示),选择执行!然后你会发现,该目录下以及该目录的子孙目录下的.svn或CVS目录都被删除了!
好了,目的达到了。That's all!