[自学笔记]关於SVN(Subversion) 版本控制系统

安妞大家 /images/emoticon/emoticon42.gif
以下一样是自学笔记

什麽是SVN(Subversion) ?

SVN(Subversion) 是一个自由/开放源码的版本控制系统,
也就是说 Subversion 管理着随时间改变的档案(跟git 87%像)

这些档案放置在一个中央档案库 (Repository) 中,
这个档案库很像一个寻常的档案服务器,不过它会记住每一次档案的变动

你可以把档案回复到旧的版本,或是浏览档案的变动历程
svn tutorial

实际操作步骤(示范初始化&将新的项目加入SVN中&提交项目):

以下使用工具TortoiseSVN做示范SVN乌龟
TortoiseSVN应该是最多人用的一套SVN Client软件,可透过档案总管在档案或目录上方便用滑鼠右键的选单完成SVN的操作。

1.在电脑内建一新资料夹作为档案库(Repository)使用,这边我命名为test。
2.对这个资料夹按滑鼠右键选择「TortoiseSVN」→「在此建立档案库 Create repository here」。
https://ithelp.ithome.com.tw/upload/images/20220517/20135530ekM2Z9vk1t.png

3.我在test里面新增了一个"工作目录"的资料夹,进入後按滑鼠右键选择「SVN取出(SVN checkout)」,确认路径是否正确,所谓的checkout就是将资料从档案库取出(目前是初始化)
https://ithelp.ithome.com.tw/upload/images/20220517/20135530KGLKny1ctU.png
https://ithelp.ithome.com.tw/upload/images/20220517/20135530DtCdeaioTj.png
https://ithelp.ithome.com.tw/upload/images/20220517/20135530jLu1FZnChZ.png

  • 3.1 如果对资料夹按右键选Add,Add只是告诉SVN这些档案需要版本管理,还没有真的进入到SVN档案库
    https://ithelp.ithome.com.tw/upload/images/20220517/20135530aYsApweFRF.png

4.我新增一记事本将档案存入於工作目录资料夹,对档案按右键选送交Commit,进入後可观看历史的log、写入新log以及实际要Commit的档案
https://ithelp.ithome.com.tw/upload/images/20220517/20135530CeEGhEJqjq.png
写入更新档案的讯息
https://ithelp.ithome.com.tw/upload/images/20220517/20135530B0E4jNr1UB.png
5.Commit送交完成
https://ithelp.ithome.com.tw/upload/images/20220517/201355305iUFehX7As.png
(未提交完成前资料夹图示上会有一个红色惊叹号 提交完成会变绿色打勾) 提交完成可操作其他功能!
https://ithelp.ithome.com.tw/upload/images/20220517/20135530sZN6T5vL0y.png

常用的SVN指令

1.取得内容
check out(co):-> 初始化检出 - 设定工作拷贝
svn checkout svn+ssh//your.remote-server.com/home/svn/test
svn co http网址
svn co file://
svn co-r file

update(up):更新为svn上最新版本
svn up

2.变更档案
add:将档案或目录加进SVN 之後还要再commit才会真的加进SVN
svn add file-> 将新的项目加入 SVN 中
svn add folder

del,rm:将档案或目录删除,之後还要再commit才会真的从svn删除
svn del file 或svn rm file

svn move

3.看储存库变化
svn status -u

4.合并程序码
svn diff(确认差异)
svn resolved

5.提交修正
Commit(ci):将目前有修改的commit到SVN
svn ci(全部有修改的都会commit)
svn ci file1 file2 file3(只将file123commit)


关於TortoiseSVN 的图示

SVNstatusLogo



另外以下是其他技术文章,
有提到的SVN 与 Git 这两个版本控制系统的优劣势 也一并给大家看一下~


SVN 的优势:

  • 用法简单,易上手,没有 Git 那麽多的命令,对新手比较友好。
  • 易於管理,对许可权的管理相当严格,可以按组、个人针对某个子目录的许可权控制。
  • 文件锁定意义上真的非常有用,尤其是分工明确,且不愿意让别人碰自己程序码的时候。
  • 本地装置上的档案更小,更省记忆体,尤其是做大专案的时候,对电脑记忆体比较友好。
  • 可以单独检出某个有许可权的目录。
  • 有全域性版本号——不需要手动编号。

SVN 的劣势:

  • 专案放在中央服务器中,一旦服务器出现什麽意外,就会损失惨重。
  • 断网意味着不能工作,比较扎心。联内网还好,联外网能卡得你怀疑人生。
  • 人一多服务器就有点遭不住,尤其是那种大型开源专案。
  • 分支管理不灵活,svn分支是一个完整的目录,且这个目录拥有完整的实际档案,这些操作都是在服务端进行同步的,* 不是本地化操作,如果要删除分支,也是需要将远端的分支进行删除,这会导致大家都得同步。

Git的优势:

  • 速度快,灵活 可离线工作。
  • 十分详细且忠实地反映版本间的变化,能够及时且方便地解决冲突。
  • 拥有多个完整独立的分支,且可以只选择推送共享分支。
  • 本地拥有完整的 git 版本库,无论损坏了那一边,都能够通过克隆的方式恢复。

Git的劣势:

  • 许可权管理形同虚设,几乎所有人都能获取更改全部档案,难保会不会有傻缺更改注释不全的程序码,导致报错……而且也很容易被人扒原始码挂网上。
  • 模式上比 SVN 复杂,相对的学习周期更长。

官方网站及资料参考来源:

TortoiseSVN官方网站
版本控制工具SVN-常用基本指令/状态表示
SVN 与 Git 的优缺点
SVN笔记
TortoiseSVN 常用指令介绍
SVN 笔记 - 基本指令
svn版控使用
Git和Subversion的命令比较表

以上是本人SVN的自学笔记,有错再请不吝指正谢谢!


<<:  Flutter在Android模拟器无法安装release apk原因

>>:  ISO 27001 资讯安全管理系统 【解析】(二十四)

Day 48 (Node.js)

1.制作成物件 score = Object scoreList2: [ {value : 100,...

【LeetCode】Linked List

能够完赛的人是鬼吧 本文会提到做 singular linked list 常犯错误、如何避免,与常...

Day 26 利用transformer自己实作一个翻译程序(八) Multi-head attention

Multi-head attention 在Day 12 Self-attention(六) Mul...

[Day 06] 一个单元测试的题目-闰年的判断

过了这麽多天, 我们终於进入到主题了, 这一次我们使用的题目, 是输入一个正整数(西元年), 然後判...

Day30-用 LINEBot、Google Calendar、Dialogflow ES 做个开会机器人当结尾!

大家好~ 今天是最後一天了, 来将这几天所学结合成一个小作品吧! 功能部分就是当使用者跟 LINEB...