技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 7 常见问题 0 技术文章 7

SVN工具使用

时间:2022-09-30   访问量:1080
一:SVN介绍二:Mac SVN使用三:Win平台SVN使用一:SVN介绍1.1 SVN发展

   SVN全名Subversion,即版本控制系统。SVN与CVS同样,它是支持大多数常见操作系统的跨平台软件。作为开源版本控制系统,Subversion管理随时间变化的数据。这些数据放置在中央数据档案中(repository)中。这个档案库就像一个普通的文件服务器,但它会记住每个文件的变化。这样,您就可以将档案恢复到旧版本,或浏览文件的变更历史。Subversion包括程序源代码在内的通用系统。

   SVN 的一些概念

repository(源代码库):源代码统一存储的地方Checkout(提取):当你手中没有源代码时,你需要从repository checkout一份Commit(提交):当您修改代码时,你就需要Commit到repositoryUpdate (更新):当你已经Checkout一个源代码, Update你可以和一下Repository当源代码同步时,您手中的代码将发生最新变化。

   日常开发过程其实是这样的(假设你已经Checkout并且工作了几天):Update(获取最新代码) -->成功修改和调试自己 --> Commit(大家就可以看到你的修改了)

   如果两个程序员同时修改相同的文件, SVN这两个程序员的变化实际上可以合并SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN两种修改将自动合并。如果是同一行,SVN会提示文件Confict, 手动确认冲突。

二:Mac SVN使用2.1 Mac SVN服务器搭建

   在Mac因为Mac自带了svn服务器端和客户端功能,可以在不安装任何第三方软件的情况下使用svn功能,但也需要做一个简单的配置。

   首先,让我们看看如何Mac环境下搭建svn服务器端环境。

  (1)创建代码仓库存储客户端上传的代码

   我先在/User/a在目录下新建一个svn目录,以后可以在svn创建多个仓库目录

  打开终端,创建一个mycode输入指令:svnadmin create /Users/a/svn/mycode

  成功执行指令后,您会发现硬盘上有多个/Users/apple/svn/mycode目录,目录结构如下:

  (二)配置svn的用户权限

   主要是修改/svn/mycode/conf目录中的三份文件

   1.打开svnserve.conf,去掉以下配置项前的#和空格(必须去掉空格,否则会失败)

# anon-access = read # auth-access = write # password-db = passwd # authz-db = authz

   anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none禁止匿名访问代表,需要帐户密码才能访问。

  2.打开passwd,在[users]以下是帐户和密码的添加,如:

[users] zyq = 123 zl= 456

   帐号是zyq,密码是123

  3.打开authz,配置用户组和权限

   我们可以在那里passwd添加到不同用户组不同的用户组。以后可以为不同的用户组设置不同的权限,不需要为每个用户单独设置权限。

   在[groups]下面添加组名和用户名,用逗号()将多个用户分开

[groups] topgroup=zyq,zl

   说明zyq和zl都是属于topgroup这组,然后进行权限配置。

   使用[/]代表svn服务器中的所有资源库。

[/] @topgroup = rw

   上述配置说明topgroup本组所有用户都有读写所有资源库(rw)组名前使用权限@。如果是用户名,不需要添加@,比如zyq用户有读写权限。

[/] zyq= rw

   至于其他精细的权限控制,请参考authz文件中的其他内容

  4.启动svn服务器

   前面配置了这么多,最重要的是看服务器能否正常启动。

   输入以下指令:svnserve -d -r /Users/a/svn

   没有任何提示表明启动成功。

  5.关闭svn服务器

   若要关闭svn最有效的服务器方法是打开实用工具中的活动监控器,搜索svn ,关闭过程。

  6.从本地导入代码到服务器(第一次初始化导入)

svn import /Users/a/Documents/my svn://localhost/mycode --username=zyq --password=123456 -m ";初始导入"

   将/Users/a/Documents/my 中的所有内容,上传到服务器mycode后双引号中的仓库";初始导入"是注释

  7.从服务器端下载代码到客户端本地

   输入终端svn checkout svn://localhost/mycode --username=zyq --password=123 /Users/a/Documents/code

  解释命令的含义:在服务器中mycode下载仓库内容Users/a/Documents/code目录中

  8.将更改后的代码提交给服务器

   服务器代码已在步骤7中下载到/Users/a/Documents/code在目录中,修改下面的代码,然后将其提交给服务器

  1> 打开终端,先定位到/Users/a/Documents/code目录,输入:cd/Users/a/Documents/code

  2> 输入提交指令:svn commit -m "修改了 ** in.m文件"

   这个指令将是/Users/a/Documents/code下面的所有修改都同步到服务器端,如果这次我只修改了 ** in.文件

  9.将服务器代码更新到客户端

   这应该是最简单的指令。在终端定位到客户端代码目录后,如上述/Users/a/Documents/code然后输入指令:svn update

2.2 SVN客户端使用

   Mac直接使用命令操作客户端非常麻烦,可能会对经验不足的学生感到复杂。让我们用一个SVN客户端工具管理我们的代码。工具名称CornerStone,首先从网上下载CornerStone Mac安装版本,复制到应用程序中。

  (1)点击File->Add Repository,弹出下面的界面,我们选择SVN Server,输入用户名和密码,SVN如下图所示,服务器等信息:

  (2)成功后,我们需要将服务器隆服务器的内容,点击CheckOut即可。

  (3)选择本地工作区,添加几份文件,点击Commit,输入必要的提交信息,单击CommitChanges,将修改提交到远程代码仓库。

  (4)其他操作可以根据每个人的需要直接操作。

三:Win平台SVN使用

   Windows平台下使用SVN,需要下载服务器端和客户端,地址如下:

   VisualSVN Server下载地址如下,免费,无需担心

  :http:// ** .visualsvn.com/server/download/

   TortoiseSVN 下载地址如下:

   下载服务器端和客户端后,安装软件。

  3.1 VisualSVN Server安装步骤

   VisualSVN Server安装很简单,几乎都是下一步。

  【1】双击VisualSVN Server安装包,如下图所示:

  【2】 选择visualVSN或者只有管理控制权限的服务器和管理控制台。

   你可以选择HTTP和HTTPS如需使用两种协议svn协议也很方便,1.4版后,Subversion加入了Service操作功能。端口号可任意定义。HTTPS默认可以选择443和8443的端口号HTTP80、8080和81可以默认选择。

   个人倾向于使用HTTPS原因很简单HTTPS虽然443端口是标准的HTTPS端口,但如果做WEB开发一定有麻烦。Skype也会使用这个端口进行一些通信。还有以下验证身份,一个是windows验证,一是Subversion身份验证

   这里默认是Subversion身份验证。

  然后就是 ** 文件的过程。

  安装完成后,会问你是否需要运行VisualSVN Server Manager(一种非常有用的管理工具)。

  【6】打开“ VisualSVN Server Manager ”,如下:

3.2 VisualSVN Server配置与使用

  (1)修改URL:

  查看IP命令:

  在下面的示范中添加一个代码库【Repository】,如下图:

  (2)点击Repository右键

  如上图所示,创建新的代码库,在下图所示的文本框中输入代码库名称:

  注:上图中的CheckBox如果选择,则在代码库中StartKit下面会创建trunk、branches、tags三个子目录;不选择,只创建空代码库StartKit。点击OK按钮,代码库成功创建。

  创建代码库后,没有内容。

  接下来,我们开始在左侧设置安全设置Users点击右键:

  输入上述信息,点击OK,我们创建了一个用户。根据上述过程,可以分别添加其他用户。

  让我们把这些用户添加到我们刚刚创建的项目中。

  点击刚刚创建的库,Lenovo,右击选择属性(Properties)。

  点击上图中的"Add...";按钮,在下图中选择我们刚刚添加的用户,

  注意这里的权限设置,选择好。

  点击"确定";按钮,用户有访问StartKit不同的代码库权限。

3.3 TortoiseSVN安装与使用

   下载后直接双击安装,安装过程不会在这里逐步解释。安装完成后,您可以在我的桌面右键(或在您的新项目文件夹中)看到以下图片:

   说明TortoiseSVN客户端已成功安装!

SVN 图标 **

  TortoiseSVN使用客户端:

  ① Checkout项目文件

  单击右键菜单SVN Checkout,如下图:

   其中URL我可以在SVN获得服务器,我在Code下quanduan项目文件夹右键Copy URL,然后进行粘贴即可,如下图:

  点击OK之后可以检索项目文件,如下图所示:

   至此,我们已经将项目文件检索完毕了。

  注意事项:

   .svn这个隐藏的目录记录了两个关键信息:工作文件的基准版本和当地副本最终更新的时间戳,不要手动修改或删除.svn隐藏目录和内部文件!!,否则,您当地的工作副本(静态试图)将被破坏,无法再次操作。

  ② 增加文件(Add)

   在test在项目文件下,新建6个.txt提交到版本库的文件有两种方法(如下图所示):

   Ⅰ 先提到变更列表中,再commit选择配置库中的新文件,右键SVN菜单执行“Add将操作提交到变更列表SVN菜单执行”SVN Commit提交到版本库

   Ⅱ直接提交到变更列表而不是提交commit在配置库中,选择文件,右键svn菜单执行”SVN Commit”操作。

  ③ 删除文件(Delete)

   如果删除的文件尚未进入版本库,则可直接使用操作系统删除该文件。

   如果删除的文件已进入版本库,删除方法如下:

   Ⅰ 选择被删除的文件,右键svn菜单执行”delete操作,然后选择删除文件的父目录,右键svn菜单执行”SVN Commit”。

   Ⅱ 使用操作系统删除文件,然后选择被删除文件的父目录,右键svn菜单执行”SVN Commit”,在变更列表中选择被删除的文件。

  如下图:

  ④ 文件重命名(Rename)

   修改文件名,选中需要重命名的文件或文件夹,然后右键“TortoiseSVN->Rename“,在弹出的对话框中输入新名称,点击”ok”按钮,并将修改文件名后的文件或文件夹通过 “SVN Commit”提交到SVN服务器上。

  ⑤ SVN还原(SVN Revert)

   右击想要回退的文件或者文件夹,在TortoiseSVN弹出菜单中选择”Update to reversion…” 然后会弹出一个窗口,如下图:

   比如说我们要回退到第10个版本只需要在Revision中填写相应的版本号,然后点击ok即可。如果你不记得版本号,你可以进行show log查看提交的版本日志信息。

  ⑥ 检查更新(Check for modifications)

   此功能可以显示你所做的修改有哪些还没有提交的,此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或者目录,删除文件或者目录,移动文件或者目录等,如果你点击了检查版本库,那你还可以看到版本库里的改动,既别人提交了哪些文件的改动,你还没更新到本地,如下图:

  ⑦ SVN更新(SVN Update)

   更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。

  ⑧ SVN提交(SVN Commit)

   Svn的提交是将在工作空间做的修改进行提交,包括文件内容的修改,文件或目录的添加,删除,命名,移动等操作。直接右键-》SVN Commit即可。

  ⑨ 显示日志(Show log)

   通过此功能可以查到谁,什么时候,对那个目录下的那些文件进行了哪些操作,如下图:

  ⑩ 版本库浏览(Repo-browser)

   此功能是用来浏览需要查看的资料库,在本地文件夹下点击右键,选择TortoiseSVN->Repo-browser,在弹出的对话框中输入资料库地址,再输入用户名和密码,就能查看到你需要查看到版本库的内容,在这你还能看到那些文件被谁锁定了,如下图:

  SVN提交冲突处理

   对于每个冲突的文件Subversion在你的目录下放置了三个文件,如下图:

   为什么会产生冲突代码呢?原因很简单就是因为不同的人,同时修改了同一个文件的同一个地方,这时候,他提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成如上3个文件。

  解决方案如下:

  首先我们可以看下1.txt代码如下:

   <<<<<<< .mine

   echo 123; var_dump(456);

   =======

   b>>>>>>> .r5

  然后我去掉多余的代码,1.txt变成这样:

  

   echo 123; var_dump(456);

  

  进行提交,还是提交不了,如下所示:

  为什么?因为冲突会产生上面的三个文件,有上面3个文件存在肯定提交不了,这三个文件代码及解释如下:

  1.txt.mine 是冲突前自己的文件。可以看下内容如下:

   echo 123; var_dump(456);

  1.txt.r4 是冲突前本地的版本文件内容如下:

   echo 123;

  1.txt.r5 是别人赶在你之前提交的版本。

   其中,<<<<<<<<.mine .....=======之间的代码是你自己的,而======......>>>>>>>.r5是别人与你冲突的代码部分,这样就不难理解为什么会产生冲突这种奇怪的东西了,因为你们修改的同一块代码,当然会产生冲突。

  假如我现在的1.txt中的冲突内容如下:

   <<<<<<< .mine

   zhihua_wei,wei_zhihua

   =======

   wei_zhihua,zhihua_wei

   >>>>>>> .r16

  前面说过 <<<<<<< .mine …… ======= ……之间的代码是我未产生冲突之前修改的代码 ======= ………>>>>>>> .r16,这中间……的代码是别人与我冲突代码的部分。

  Ⅰ 使用revert(回滚)操作,该操作表示用户放弃自己的更新代码,然后直接提交,这个时候你的代码就会使服务器上最新的代码,即A用户提交的新代码,你的代码不会被提交,如下图示:

   点击ok按钮后 可以看到其他三个文件都自动删掉了,1.txt代码正常,也就是a用户提交的代码,自己更新的代码需要自己动手 ** 进去即可提交commit。

  Ⅱ 第二种解决方法如下:

   选择文件->右键Editconficts:这种方法需要冲突双方经过协商之后将代码更改统一之后再提交。不仅解决了冲突而且还保证了代码是正确的,因为只有一方的代码被提交。

   如上图所示,红色的部分是冲突代码:theirs表示当前服务器端最新的代码,Mine表示自己修改后的代码,Merged表示合并后的代码。点击红色后右键选择:use this text block就可以将该部分代码作为合并后的代码。接下来再说说由于冲突导致重要代码被覆盖的情况。冲突发生时如果采取的措施不对可能会导致部分代码丢失,如果想要还原之前的代码也很容易。选择文件->右键选择show log在这里面你可以看见之前提交的所有版本,找到你想要恢复的版本右键选择revert to this version 就可以恢复了。

  

  

  

  

  

上一篇:【Unity 教程】用SVN做Unity项目版本控制(实现多人合作开发) (4) 创建新项目SVN服务端

下一篇:软件开发过程会用到哪些软件?

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部