[SVN]部署使用subversion服务器,版本控制软件。

情况说明:一个工作团队,写出的代码版本不同,工作协调性很差,使用subversion就可以控制版本。subversion允许他人同时协作修改版本,且一旦出现严重BUG可用恢复旧的版本。subversion服务器,也是一个共享服务。


subversion是一个自由开源的版本控制系统。

-在subversion的管理下,文件和目录开源超越时空。

-subversion可以将数据恢复到早起版本,或者是检查数据修改的历史。

-许多人将版本控制系统当做时间机器。

-允许你和别人协作文档,并跟踪所做的修改。


********************部署SVN***********************


yum -y install subversion                       //安装SVN
mkdir /var/svn                                        //创建文件夹
svnadmin create /var/svn/project         //使用svnadmin命令创建仓库,数量任意,可自定义仓库名。


模拟导入初始数据:

svn    import /usr/lib/systemd/system/  file:///var/svn/project/ -m "Init Data"
SVN     导入   被导入数据的路径  导入到的SVN的仓库路径     写注释(重要)

注意:导入的数据将以数据库的形式存在,在本地进入到你的SVN仓库将会看不到你的数据,只能通过客户端访问使用co命令下载使用。


修改配置文件:(注意:所有配置文件每一行开头都不得有空格符)

vim  /var/svn/project/conf/svnserve.conf

取消注释,删除前端空格和等号两边的空格,最前面写的行号。

 19 anon-access = none           //默认read,表示无密码可读取文件;改为none,表示匿名无权限。
 20 auth-access = write            //保持默认,表示有效账户可读写。
 27 password-db = passwd      //指定用户名密码文件
 34 authz-db = authz               //去注释启用ACL访问控制文件


修改密码文件:(注意:所有配置文件每一行开头都不得有空格符)

vim  /var/svn/project/conf/passwd

文件末行,仿照注释行写。

[users]

# harry = harryssecret

# sally = sallyssecret

ouyang = 123456

用户名 = 密码


修改ACL控制文件:

vim  /var/svn/project/conf/authz

仿照注释:(其他地方未写则默认继承跟的权限)

[/]                     //此处“/”符号等于仓库的跟

harry = rw        //给予harry读写权限(r=读,x=写)

* =                    //其他人无读写权限


svnserve -d  -r /var/svn/project       //启动服务(-d,启动进入后台;-r,指定启动仓库)

killall  svnserve                //杀死、停止程序

也可以不指定路径。但访问SVN会变得更麻烦。例如:svn://服务器IP/路径,而指定路径就可用直接使用IP访问,例如:svn://服务器IP


********************客户端登陆SVN服务器***********************

Windows用户客户端使用软件:TortoiseSVN


以下内容为Centos7用户。


cd 进入一个临时目录。


svn    --username ouyang    --password 123456        co         svn://192.168.2.100           code       //使用命令下载到当前的临时目录中

SVN          输入用户名                    输入密码                下载       下载来源(SVN服务器)     下载到哪里


执行代码出现如下提示:

-----------------------------------------------------------------------

注意!  你的密码,对于认证域:


   <svn://192.168.2.100:3690> a6f2c3cc-fbc5-4294-9c98-f707e6ef0a09


只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。


你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?yes                       //输入yes保存密码。

cd进入下载目录。注意:必须在目录中执行svn指令,否则将会报错。


略过修改代码~~~


上传更改完成的代码:

svn        ci         -m  "注释内容"           //自动识别,不需要输入服务器地址、指定文件,会自动识别。

SVN    上传             写注释


svn update                                  //同步服务器上的资料

svn info svn://192.168.2.100       //查看仓库信息

svn log svn://192.168.2.100        //查看修改用户、修改时间、注释信息。


提交新的文件:(出现文件。SVN将不会主动识别)

vim test.sh                        //新建文件

svn add test.sh                 //告诉SVN我要添加一个test.sh文件

svn ci -m "新建test.sh"     //上传文件,出现版本号和修改内容,成功。


其他操作同样的:

svn mkdir  文件夹名         //创建文件夹

svn rm  文件名                  //删除文件

svn ci -m "新建/删除"       //上传


查看文件差异的SVN命令:

svn  diff                                                         //查看本地与服务器文件差异

svn  diff  文件                                                //仅查看此文件与服务器文件差异

svn cat svn://192.168.2.100/文件名              //cat查看服务器文件内容


删除还原文件:

情况一:文件修改错误,但未提交。

sed   -i   'd'   文件名                            //模拟清空一个文件内所有字符,修改内容,未提交。

svn   revert    文件名                           //从SVN服务器调取数据,恢复还原这个文件。

情况二:文件修改错误,但已经提交。

svn ci  -m  "xxx"                                                          //模拟提交错误的文件。

svn     merge      -r6:5                    文件名                   //还原一个文件到上一个版本,从第六个版本还原到第五个版本。

SVN     还原      6还原到5     指定需要还原的文件名

情况三:文件被失误删除。

svn update


多用户修改文件:

情况一:多用户修改不同文件。

上传不冲突,无需解决。

情况二:多用户修改相同文件,且修改内容不同行。

出现问题为:第一位上传成功,第二位上传失败。

svn update     //上传失败使用此命令解决,SVN服务器自动合并文件,且上传成功。

情况三:多用户修改相同文件,且修改位置相同行。

出现问题:第一位上传成功。第二位上传失败,且svn update命令报错。

出现如下报错信息:

[root@svn code]# svn update

正在升级 '.':

在 “/tmp/code/code/xxx” 中发现冲突。

选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,

        (mc) 我的版本, (tc) 他人的版本,                            //mc,上传我的版本;tc,保留他人版本。

        (s) 显示全部选项: 

输入 p 回车。

此时获取四个文件。

xxx                 //你和他的差异

xxx.mine       //你的版本

xxx.r10          //旧的早期版本

xxx.r11          //他的版本

综合分析,将多余文件删除,留下一个文件。(xxx)

做法如下。

mv   xxx.mine   xxx                                     //覆盖文件

mv:是否覆盖"xxx"? y

[root@web3 code]# rm -rf xxx.r*              //删除多余

[root@web3 code]# svn ci -m "zzz"         //上传同步

正在发送       xxx

传输文件数据.

提交后的版本为 12。                                   //成功


备份还原SVN服务器:

在SVN服务器上执行以下命令:

svnadmin    dump      /var/svn/project        >           project.bak            //使用此命令备份仓库

SVN命令       备份     需要备份的仓库路径    导出     生成备份文件路径

svnadmin create /var/svn/project2                                                          //新建仓库,准备还原

svnadmin    load       /var/svn/project2         <        project.bak             //使用此命令还原仓库

 SVN命令      还原     需要备份的仓库路径      导入    备份文件路径

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。