SVN快速入门

╰半橙微兮° 2024-05-31 05:08 179阅读 0赞

目录

  1. SVN 是干什么的?

    2.SVN的安装

2.1 SVN服务器的安装

2.2 SVN客户端的安装

  1. SVN的使用

3.1 创建用户(服务器端)

3.2 创建用户组(服务器端)

3.3 创建版本库(服务器端)

3.4 为仓库设置用户访问权限(服务器端)

3.5 项目导入到服务器

3.6 检出文件(客户端)

3.7 添加文件(客户端)

3.7 添加文件夹(客户端)

3.9 删除文件(客户端)

3.10 更新至最新文件(客户端)

3.11 版本比较(客户端)

3.12 查看版本日志(客户端)

3.13 锁定文件

3.14 未提交时撤销文件的修改

3.15 得到一个去除了指定版本修改后的文件

3.16 解决版本冲突

1)如果不涉及同一行或相邻行。

2)如果涉及同一行或相邻行。

解决冲突方式之一——手动解决冲突

解决冲突方式之二——取消修改

解决冲突方式之三——使用自己的,放弃版本库

3.17 撤销修改

3.18 切换svn账号

4.svn使用经验:


1. SVN 是干什么的?

同学们是不是在小组协作完成项目的过程中,常常因为文件版本混乱而苦恼,由于多人修改而导致某些修改内容的丢失?找不到最新版本?

看到下面的图片,同学们有没有似曾相识的感觉,为了保留更改记录,我们会保存若干个版本的副本,通过这种方式把修改的历史版本保存下来。这样万一某个版本有问题,我们还可以找到之前的版本。

b614fae2205f4e99a93412863cac638e.png4c5a344557bb47aca80bd4a4b0ee9bb3.png

但是这种copy方式有一些明显的缺陷

1.很难知道各个版本之间做了那些修改呢?必须打开文档进行比对查看。

2.如果遇到多人同时编辑修改文档,则往往容易出现文件混乱,部分信息丢失的问题,尤其是大家的期末设计,多个同学完成代码,就常常遇到这样的困惑。

那么有没有比copy方式更好的解决方法呢?

当然有更好的解决方法!!!工于利其事必先利其器,下面我们就来介绍较为流行的版本管理工具SVN,它可以帮助你记录文件的历史版本,并让多人协同工作,完成文件的编辑。.

SVN是一个开放源代码的版本控制系统,。它是集中式版本管理,用户将文件提交到服务器。当然用户也可以根据需要下载后修改指定版本的文件,然后再提交到服务器。

由于它是集中管理,所以存在单点故障的问题。

2fa4ab98e0d04b7da551e8eb14aeeb03.png

SVN只关心每个版本更新了那些文件,以及更新了哪些内容

694c2589314c43328f0aa998f5c39df5.png

2.SVN的安装

Svn分为服务器端和客户端

服务器端:保存文件版本仓库。通常一个公司在服务器安装一个服务器端,保存文件历时版本,

客户端:每位开发安装一个客户端。开发人员通过客户端连接到服务器后,下载指定版本的文件。修改后,可以更新到服务器形成性的版本

从超星班级资料中下载服务器安装包进行安装

同学们可以到超星班级资料下载服务器端和客户端安装程序。如果是演练,则只需要安装客户端。

不能访问超星的同学可以从百度网盘下载。

链接:https://pan.baidu.com/s/1unHFP27MlTu\_wCmZkdrzvg
提取码:1234

2.1 SVN服务器的安装

  1. 双击安装包89dcc50527dd46d8b22c2fde1f9dea53.png
  2. 点击 【Next】

f19d6411732647ada32906271db19026.png

3.同意许可协议后,点击 【Next】

0288a4a0f09d43a2902cbee5ec9b82c5.png

4.采用默认安装选项,点击 【Next】

41293e716f02410a84f47f4f8c43e3e9.png

5.根据需要设置安装路径和版本库位置后,点击【Next】

a2608ea6bdca4bd496e71da8304eb7f7.png

6.选择授权方式后,点击【next】

091aa422feab45348a886277f9762631.png

7.点击【install】

83f07fff937b48ae952f04cecfafd218.png

8.点击【Finish】开始安装svn

7c691f8e7f9f4b678fcd1fb981a4de2a.png

此时,我们会进入svn服务器控制界面

7039067003a0419aa925fa73d9de5369.png

以后可通过安装路径下的VisualSVM server.msc启动SVN服务器控制面板

688d3b32661042169d41b3a8a920641b.png

9.安装之后可以到安装路径下查看下程序文件夹和版本仓库文件夹

bf141ea50c154d02a7a55d3de86a403f.png

10.使用命令可以查看已经安装svn server的版本号

e1d407eac2e4488191c476b0e2a3389e.png

2.2 SVN客户端的安装

1.双击安装包e026bc7bb2234825ab89e895a3fb00fc.png

2.在用户许可协议上点击 【Next】

18376a9e0e1540899eba660f9d15c62f.png

3.设置安装路径后,点击【Next】

c3c8ea79516e486e9f8383c1687c1623.png

4.点击【Install】开始安装

ded0fa25675a463a9ab7fe071224d08c.png

  1. 点击【finish】,完成安装

f7fed83812aa4ddaa5e7d72c4d593d45.png

  1. 安装完成后,可以到安装目录中去看一下

47567fcfb6194bb4b05a152b647ec326.png

也可以到桌面上点击右键菜单验证,是否出现如下所示的右键菜单以验证客户端是否安装成功。

2e6b7c3e97904a8dab4480b56f366113.png

3. SVN的使用

cf76bdf4baac4432a2e68c986ffcdc57.png

3.1 创建用户(服务器端)

请同学们尝试:服务器端创建3个用户 user1/123456 user2/123456 user3/123456

1df1b65391104f959a12fb543a31c54b.png

输入账号信息后,点击【ok】

5533b6e14ae640038e8803c39424b8a9.png

9ff0953ce4854c179874ac1413add572.png

三个用户添加后的效果如下所示:

" class="reference-link">16305e98e9624b819e8ad41289305453.png

3.2 创建用户组(服务器端)

在服务器端点击创建用户组

请同学们尝试:创建1个图书管理系统开发组,组名为:book_dev ,并在组中添加 user1,user2

1d8109fe02694cbba1628171505c7d6c.png25998f721cb5446e8c01810c57783640.png

效果如下:

e6cad187ca754cf5967beb3cae611973.png

3.3 创建版本库(服务器端)

服务器端创建仓库

fa5b0a5bf0874d5ba6876ba6642ea8ea.png

选择仓库的类型

d264d8742b984befaff7b6c7a9b88bdc.png

b819ca9c98bc4e54adc6eca583ceee3a.png

84525e7e56724930a8517b15ff7cb2b1.png

设置访问权限

008cfb21cc3349dfaf735c58b099b831.png

如下图所示。已经成功创建了仓库“图书管理系统”

f246f54963c9499d8de33bb76dced06c.png

3.4 为仓库设置用户访问权限(服务器端)

7699f7d667a14deda2d42057c4a95d49.png

fb6de81496724275a2688f9f0e98cd79.png

3.5 项目导入到服务器

目前svn服务器上的仓库”图书管理系统“目前是空的。

开发人员想将本地的项目上传到svn服务器,我们来看看他怎么完成。

开发人员进入要上传的文件夹的根目录下,点击右键菜单 Tortoise -> import

ccba6940aba84d038704437002b6bff9.png

在’URL of repository”中输入配置管理员给你的项目地址, 填写日志后,点击【ok】,即可完成提交ec20fd3a7d9e4eb8a8890008d8b0fecd.png

如果是第一次进行svn操作,需要输入用户信息,以便配置管理工具了解,是谁在操作。

e9e0136dceb24be3936288dcd6b64ae0.png

fbfb4da9b65e46fc841aa9e8cf45f6f0.png

此时,SVN服务器上刷新仓库,就可以看到刚才提交的文件了。

e533d18016c94f59adacf03a1be5372b.png

3.6 检出文件(客户端)

新额开发人员加入团队,那么他需要先下载最新的项目文件,然后进行功能的开发或者bug的修改。

我们看看他怎样能把最新的项目文件下载到本地。

  1. 开发在本地创建一个文件夹(文件名合法即可),用来存放下载文件。

2.在文件夹中点击右键菜单 SVN chekout

6c188336797142ec86dea0cca07e6d19.png

在 “URL of repostorise”中输入要下载的仓库地址

在 “checkout directory” 中输入你要保存文件的路劲。默认就是当前路径

你还可以根据需要选择版本号,现在仓库只有一个版本,我们就下载最新版本即可

8a4d247e92644c5a95f1ee58937ae887.png

效果如下,svn的工作区有一个隐藏的文件“.svn”,它用来监控文件的变更。有了它,后期才可以修改、删除、更新等操作。

如果没有该隐藏文件夹,那么它只是一个普通的文件夹。

a1c0ae9900a14e74af6a3001b7d5abf9.png

如果看不到隐藏文件的,请进行设置。

9b2083c4c4d143039fe38bbfae25f932.png

开发人员后续就可以在工作区添加、更新、删除文件,并提交到服务器。

3.7 添加文件(客户端)

刚才我们已经把项目下载到本地,现在我们尝试添加一个。

大家进入到刚才检出的工作区下额“13 svn添加文件练习” 目录中,新建文件“005.txt”,并保存。

2bd2da97532d426c8004f5976baa244d.png

现在我们把它提交到svn仓库。

  1. 先 svn add

92f89f6fe6354cc7a2d4e8acb3dd6199.png

本操作并不会将文件添加到仓库,下次提交时,才能正在提交到仓库

  1. svn commit

在文件夹的空白区域点击右键菜单 SVN commit,弹出窗口上点击【ok】即可。

3b278a019fa6477587b1136a58e3f565.png

输入修改日志,点击【ok】即可完成提交

日志信息方便日后查找某个版本

7d448c3c0f3e4a9385410c331b8c4506.png

af6dd595d92b47cf92823f89362c6281.png

c8656d53d86248b888966467dd0858a8.png

3.7 添加文件夹(客户端)

假设某个开发希望新建一个文件夹,该文件夹及其下的文件如何提交到仓库呢》

方法与文件添加基本相同

1.在想要的工作区路径下新建文件夹,并添加相关文件

0a7a6f1f7cd341adbb39df8e7abd16b1.png

2. 在文件夹上上点击右键菜单 TortoiseSVN -> add

876e8ef3c42148c5a601ad4c5a2a13b2.png

c96137d264b94e4ab7610e8396fab043.pngac2399b3e7fc49e6bb65ab493fbadde0.png

那么现在只是告诉svn,这些文件和文件夹想要纳入版本管理。并没有提交到服务器。

  1. 点击右键菜单 SVN commit ,

4203f68d94084a18b0382e4e31980861.png

输入日志后,点击【ok】

92010426a25e438e913834815b667516.png

f422f52397b2419cbf3778c63abbedef.png

成功提交文件夹到服务器后,文件夹会有绿色对勾标识,而在服务器上刷新也可以看到该文件夹。72bb5212fb9846f5b383b0e911000e09.png

3.8 修改文件(客户端)

开发想要修改一个文件。需要先从svn checkout 最新版本,然后再本地修改后,commit到服务器。

如下图所示,开发乙已经检出了代码,将caculate.java文件做了如下修改

fb8b78b0f23f4b669393b327301af7e5.png

下面来看开发乙如何将修改提交到服务器的

可以选中修改的文件commit,当然选中文件所在的祖先目录也是可以commit的。

若不选中任何文件夹,则表明对文件夹中的所有修改进行提交。

c26159ec0953440eb2ecde452af839a2.png

e87ca12ed28f4cdab32ece1edd512f22.png

若点击版本比较,则可以查看本版本与父版本之间的差异f3e7449cfcb1468ab6d0e1c4552f98b5.png

df51ebdf91d24fb4830fa91f870642a6.png

42f388ab23734267ab2e6212b19c3916.png

3.9 删除文件(客户端)

某个文件已经提交到svn服务器,但是现在不需要改文件了,要从服务器上删除。那该怎么操作呢?

下面我们来练习删除2个文件。

下面我们进入文件夹 “16 svn删除文件练习” ,选中要删除的文件003.txt和004.txt,点击右键菜单TortoiseSVN —>delete按钮,之后进行commit,就可以将文件从服务器上上删除了

d70778d74cfa4aacb0e2d723e1328f9f.png

此时虽然本地003.txt和004.txt已经删除了,但是这个修改并没有提交到服务器

a6b9eac3831741dfb529739d563fb1e2.png

5e6614148d9146c2b819776e2be40ba8.png

dbb104b0d8c74bfdbd954f272ffb87ac.png

3.10 更新至最新文件(客户端)

开发团队的每天有很多添加、修改、删除操作。大家每日早上应当将最新的版本文件更新到本地,下午下班前将修改提交到版本库。

那么早上我们是如何更新我们的本地工作区呢?

在工作区 的空白文件夹 点击右键菜单 “SVN update”

a4c6ede46ec4492a8559dc4225d4e7c0.png

cc64a12b3eae4a63957118bea68a5c40.png

3.11 版本比较(客户端)

版本比较可以帮我们快速了解不同版本的差别。svn的版本比较很方便。

例如,上午你提交的版本功能还是正常的,但是下午你提交的版本登录功能就不正常了,那么这应该是你下午修改代码引起的,这时,我们通过代码比较,快速找到修改的代码,从而定位和解决问题。

选中要比较的文件,点击右键菜单 TortoiseSVN -> Diff with previous versioon .

41086afaa93b429897118ebaaf9d802d.png

da2319c53d484ae6ad77c20e25030387.png

当然你可以与之前的任何版本比较,在显示日志(show log),可以完成指定版本的比较。

下面我们来看看 显示日志功能。

3.12 查看版本日志(客户端)

在你想要查看日志的文件夹或者文件上,点击右键菜单 TortoiseSVN->show log,可以查看到具体的日志信息

3a98f1b2fe3542138046c1d94b6b01ed.png

15acf96afcb14b3da1759100971056f8.png

为了减少同学们之间的相互干扰,更好的练习,建议大家每人创建一个以自己姓名命名的文件夹,所有的操作在自己的文件夹操作,

3.13 锁定文件

防止其他人修改文件,可以锁定文件

945e50a479504a349115a2e9ba5781a4.png

d240ee43e31c4d819f56ab5ab5949ed3.png

其他人试图提交枷锁文件会报错。

1b0e57f1a576499eb44ed4dd0d25c0bc.png

加锁人自己可正常提交

454c20e0eda6432fbf876f3e93cba79f.png

加锁的人可以释放锁

76059fb7ba2843c8bcc43048e86d9a03.png

3.14 未提交时撤销文件的修改

" class="reference-link">06d0a3623b404e799606771f9bc0a3cf.png

10c70993e6b94ad3bbbef1ad4dab42a4.pngaaf56cd7663346a29788a0980e139064.png

文件内容回复到修改前的状态

3.15 得到一个去除了指定版本修改后的文件

文件经过 版本1,,2,3,4,5,6,7等修改后 如果想去除 3,4版本的修改工作,该如何撤销修改呢?

这时候就可以使用 revert changes from this version

例如,大家可以修改 13 svn添加文件练习 下的 003.txt

第一次将第一行修改为 11 提交

第二次将第二行改为 22 提交

第三次将第三行改为33提交

然后撤销第二次的修改。 就可以使用该功能。

0c28f25114fb446d8b3193dc07911647.png

b9d6975966c34f8f8a652eeed748548d.png

3.16 解决版本冲突

例如。假设版本库中的 main.cpp文件如下:

  1. #include <stdio.h>
  2. int main(int argc, char *argv[]) {
  3. int n=10;
  4. int i;
  5. for(i=0;i<n;i++)
  6. printf("%d\n",i);
  7. return 0;
  8. }

如下图所示,假设最开始版本库中的文件版本是 V1 , 张三、李四都下载了该版本的文件到本地。

张三、李四修改后,分别依次进行提交,根据两者修改的内容是否涉及同一行,结果不同。

dda7fd55dab649e0ae931c632b877399.png

1)如果不涉及同一行或相邻行。

那么,李四提交时,会在张三修改的基础上合并李四的修改。

张三修改后,提交到版本库。版本升级为V2 ;

李四修改后,也去提交文件,如果修改的地方不一样,

此时,提交,系统会提示需要先更新。update时,会将张三的修改合并到李四的文件中,

然后再提交,则版本可以正常升级到V3.

为了演示方便,大家可以从svn服务器检出两个工作副本,模拟2个用户。

ff789ecf5c444a19b795db958231fef4.pngb109c6f62ead42cdb5545f04a9befd7d.png75c5052e8cd948b2ac36e02f17f4d4ec.png697ba7865cfb41d9b79cde43efc111c8.png

此时的,main.cpp已经包含了张三和李四的修改,

此时再次commit即可将合并的内容提交到版本库 8ae17a6747a14d46ac4ba63b56dbf825.png

26db009441a44a72b4a528103d42bc31.png

2)如果涉及同一行或相邻行。

那么,张三、李四分别检出代码后,张三修改后可以正常提交

但李四提交时,将会冲突,通常需要手工解决冲突后才能提交。

  • 解决冲突方式之一——手动解决冲突

假设张三把n=10 改为了 n=20 修改后,提交到版本库。版本升级为V2 ;

李四把int n = 10 改为了 long n=10

return 0 改为 return 1;

07e17c5216824d42b2ceb5f5fc37c073.png

张三可以正常提交,产生新版本

但是李四提交时,会报冲突

a1c0a25611864ac196cc5a2a1ee74c77.png

关闭后,进行svn更新

75290e52d05a4cbbb1affa25fc7d5cb1.png

9a932b9669a74bb3ae2f8a4e6c154ed6.png6469fc6d0ff14e9aa8bee68cea03454a.png

c3e7564143ac451eac1a3305005c7712.png

88bee1a0e2d246a7a652b5bfd3f5f5fc.png

解决冲突方式之二——取消修改

删除冲突文件

1d4da49c41fb485586546818b9a62a7c.png

  • 解决冲突方式之三——使用自己的,放弃版本库

假设 张三、李四下载最新文件后,张三改为“return 3;” ,李四改为“return 4;”

张三提交后

李四提交时,出现冲突

f0f162cf2eda413bad60ec3f94f3b626.png

1cac24291d7d45aeb7b88a8773b1cfbc.png 9038bc07608142d991722dc0b8486663.png

对每一处冲突选择是用版本库的,还是我的修改,或者两者都使用,也可以手动修改,将所有冲突确定好解决方案后,点击“Mark as resolved” 949d6b08ec82476fb3f937baa9c7598e.png

492343ef3ef847b0bf20786152f5a248.png

022f520de4794ba9891960d876bb08a5.png

此时版本库上的文件,已经是我的文件了。

3.17 撤销修改

删除本地文件,直接update下载最新文件到本地即可、

3.18 切换svn账号

有时我们需要切换到其他账号进行svn操作

ec2740b74d754e58a5faefa04c227de7.png

选择要删除的用户后,点击 【ok】按钮

c4a069db577f470089092f00ba9b1d93.png

此后,进行svn操作时会让你输入新的账号。例如,svn update时,弹出登录窗口

22ce203a0a8f47d5aa36c6e61d7c7fbf.png

4.svn使用经验:

早上开工前先更新代码,保证自己在最新代码上工作 update代码

下班提交代码。保存劳动成果

有问题的代码不提交。

版本冲突,谁发现,谁解决

执行commit之前,先update

问题解决办法:

  1. 操作中如果遇到svn的图标(绿色对勾,加号,红色的叉叉等不能正常显示),请参考https://blog.csdn.net/weixin_44541320/article/details/119418867icon-default.png_t_M3K6http://xn--svn-928dw0oiqjj00am4aq3itvpb3z6ghgs2d

  2. S**VN 图标不显示解决**办法见链接

https://blog.csdn.net/weixin\_44541320/article/details/119418867

  1. SVN的详细使用可以参考

SVN 安装 | 菜鸟教程icon-default.png_t_M3K6https://www.runoob.com/svn/svn-install.html 菜鸟变成上的svn使用帮助

发表评论

表情:
评论列表 (有 0 条评论,179人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SVN快速入门

    目录1. SVN 是干什么的?2.SVN的安装2.1SVN服务器的安装2.2 SVN客户端的安装3. SVN的使用3.1 创建用户(服务器端)3.2创建用户组(服务器端)...

    相关 SVN不错的入门

    SVN简介:  为什么要使用SVN?       程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相

    相关 eclipse快速安装svn

    最近新工作需要用eclipse开发,而且对eclipse不是特别熟悉,所以相当于在学校学的那么多,这不来到新公司用的是SVN工具,也不是很了解。从csdn上有很多的方法安装SV