ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SVN学习

2022-07-07 13:02:49  阅读:155  来源: 互联网

标签:SVN svn 文件 xxx 学习 123 txt


SVN学习

SVN是Subversion的简称,他是开源的版本控制工具,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问它的版本库,从而使用户在不同的电脑上进行操作。

与git的主要区别:

  • SVN属于集中化的版本控制系统,支持并行读写文件,支持代码的版本化管理。Git是一个分布式版本控制系统,Git擅长的是程序代码的版本化管理。

  • Git按照元数据方式存储,体积很小;SVN按照原始文件存储,体积较大。

  • GIT没有一个全局的版本号,SVN的版本号实际是任何一个相应时间的源代码快照。

  • Git的分支操作不会影响其他开发人员;而SVN会影响,创建新的分支则所有的人都会拥有和你一样的分支。

  • Git没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。SVN则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

SVN安装

Ubuntu安装命令

apt-get install subversion

CentOS安装命令

yum install subversion

SVN server安装(可以不装)

1.软件安装,基于Apache搭建SVN Server

安装apache服务

yum install httpd

​ 安装svn服务和httpd模块

yum install subversion mod_dav_svn

2.创建目录并配置

建立版本库目录

mkdir -p /data/svn/repo

配置 /p>

svnadmin create  /data/svn/repo

执行上面的命令后,自动建立repo测试库,查看/data/svn/repo 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

3.用户密码passwd配置

[root@localhost password]# cd /data/svn/repos/conf
[root@admin conf]# vim passwd

修改passwd为以下内容:

[users]
# harry = harryssecret
# sally = sallyssecret
hello=123

用户名=密码

这样我们就建立了hello用户, 123密码

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

4.权限控制authz配置

[root@admin conf]# vi  authz

目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

#设置[/]代表根目录下所有的资源   或者写成[repl:/]
[/]
hello = rw

意思是hello用户对repo测试库下所有的目录有读写权限,当然也可以限定。 如果是自己用,就直接是读写吧。

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

5.服务svnserve.conf配置

[root@admin conf]# vim svnserve.conf

追加以下内容:

[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限 
auth-access=write
#密码数据库的路径 
password-db=passwd
#访问控制文件 
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字 
realm=/data/svn/repositories

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

6.启动svn服务

查看svn的服务是否启动

ps -ef|grep svn

如果没有启动执行 下面命令即可:

svnserve -d -r /data/svn/repo  --listen-port=3690 

7.开启端口

 /sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
 /etc/rc.d/init.d/iptables save
 /etc/init.d/iptables restart
 /etc/init.d/iptables status

8.访问

svn://ip地址

端口默认为3690,输入配置好的用户名和密码即可。

注意:此处千万不能 svn://ip地址/repo,否则无法访问。

SVN常用命令

1、帮助命令: help(h)

svn help  或者  svn h

2、往版本库中添加新文件:add

svn add xxx.txt
  • 命令解释:这个命令使用之后,还得使用svn ci xxx.txt命令提交一下。

3、将改变的文件提交到版本库:commit(ci)

svn commit -m "LogMessage" xxx.txt  或者 svn ci -m "LogMessage" xxx.txt

4、检出文件到本地:checkout

svn checkout path(项目库的路径)  或者  svn co path

5、更新版本:update(up)

svn update -r m path  或者  svn up  或者  svn up -r 200(版本号) 123.txt(文件名)
  • 命令解释 该命令使用频率应该是最高的。

    svn update后面如果没有目录或文件,默认将目录下的文件以及子目录都更新到最新版。

    • -r:指定更新到哪个版本。

6、查看日志:log

svn log xxx.txt

7、查看文件详细信息:info

svn info xxx.txt

8、比较差异:diff(di)

svn diff -r m:n xxx.txt 或者 svn di -r m:n xxx.txt
  • 命令解释:对版本m和版本n比较差异。
    • -r:需要对比的两个版本号。举例:svn di -r 2:3 123.txt(查看123.txt2版本和3版本之间的差异)

9、删除文件:delete(del,remove,rm)

svn delete path -m "DeleteMessage"  或者 svn del/remove/rm path -m "DeleteMessage
  • 命令解释:使用这个命令有两种方式。
    • 远程删除svn delete svn://192.168.1.1/project_v1/123.java -m "delete test file"(使用这种方式删除后,直接会删除掉版本库中的文件)。
    • 提交删除:首先svn delete 123.java,然后svn ci -m "delete file"(推荐使用这种方式)。

10、对文件加锁:lock

svn lock -m "LockMessage" xxx.txt #对长时间需要频繁修改的文件使用

11、对文件解锁:unlock

svn unlock xxx.txt

12、移动文件或者文件更名:move(mv,rename,ren)

svn move -m "MoveMessage" xxx.txt 或者 svn mv/rename/ren -m "MoveMessage" xxx.txt
  • 命令解释:我们来举两个例子,更直观理解这个命令。
    • svn move -m "rename file" 123.txt 456.txt(将当前目录下的123.txt更名为456.txt)。
    • svn move -m "move file" 123.txt test/123.txt(将当前目录下的123.txt移动到当前子目录test下去)。

13、列出属于版本库下的文件和目录:list(ls)

svn list path 或者 svn ls

14、查看文件状态 status(st、stat)

svn status xxx.txt 或者 svn st xxx.txt
  • 命令解释:svn st -q xxx.txt -q 参数 只显示本地修改并且仓库中存在的,新增和未修改的不会显示。
  • 状态列举:

​ A: 新增,当创建新文件后,执行svn add xxx后显示为A, 否则显示为 ?
​ C: 冲突,本地修改后与仓库中的有冲突
​ D: 删除,执行svn del xxx后显示为D
​ M: 本地已变更
​ ?: 未纳入版本控制,即仓库中没有此文件或目录
​ !: 遗失,未执行svn del, 直接将文件或目录在文件系统中删除
K: 锁定,执行操作断网或强行中止等情况下会出现,或svn lock命令后出现
​ I: 忽略 R: 替换 X:未纳入版本控制的目录,被外部引用的目录所创建

15、回滚revert

svn revert xxx
  • 命令解释:svn revert -R xxx -r 参数 递归回滚

标签:SVN,svn,文件,xxx,学习,123,txt
来源: https://www.cnblogs.com/chase-h/p/16454287.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有