Mac系统下SVN命令

安裝 Subversion

首先您須要在您所要工作的機器上安裝 Subversion 這套系統. 若您的機器上已經安裝好了, 您可以跳過這一步.

  1. 若您在 FreeBSD 底下, 請直接 cd /usr/ports/devel/subversion; make install
  2. 若您在 Microsoft Windows 底下, 請至 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 下載最新的 Subversion 安裝檔安裝即可, 或者是選擇跟 Explorer 整合在一起, 可以用右鍵來選擇功能的 TortoiseSVNhttp://tortoisesvn.tigris.org/download.html

若您使用其他的系統, 請參考 http://subversion.tigris.org/project_packages.html . 目前 Subversion 能在許多的作業系統上面執行.

checkout

對於每一個專案, 通常會有一個專屬的檔案庫. 若您不打算自行架設, 您可以至 https://opensvn.csie.org 申請一個.

首先您需要從檔案庫中取一份資料至目前目錄下. 您需要使用 `svn checkout 檔案庫路徑 [目的地路徑]` , 例如說:

~$ svn checkout http://OpenSVN.csie.org/demoA  demoA  demo/MakefileA  demo/integer.cA  demo/button.c~$ cd demo              # 切換到工作目錄 (demo) 下面~/demo$

這時 svn會自動建立一個目錄, 若無指定 `目的地路徑` 的話則會以檔案庫路徑最一個目路為準 (以上例來說是 demo) , svn 將會作用在這個目錄底下.

一般操作

有兩個重要的指令, 分別是 svn update , 用來將檔案庫中的版本和本地端同步 (例如說有別人已經修正並上傳了) ; 另一個是 svn status , 可以看到本地端更動尚未上傳的情況. 若您尚不了解這是做什麼的並沒有關係, 接下來就會看到範例.

加入檔案 svn add

若要增加新的檔案進來, 請透過 `svn add <file name>`, 例如說我現在開始撰寫 newfile.c:

~/demo$ vim newfile.c           # 開始編輯 newfile.c~/demo$ svn status              # 看本地端的情況?       newfile.c               # 前面加 ?表示該檔案尚未加入版本控制~/demo$ svn add newfile.c       # 將其加入版本控制A       newfile.c~/demo$ svn status              # 看本地端的情況A       newfile.c               # 有新增的檔案, 尚未上傳

若要在這底下開新的目錄, 請透過 `svn mkdir <dir name>` , 或是先開好目錄, 再透過 `svn add <dir name>` 亦可.

修改

這時, 我可以針對我手上這一份檔案進行修改, 在我進行上傳(commit)前, 別人並不會看到這個更動, 所以並不用擔心我修正錯誤時, 別人會無法使用.

~/demo$ vim integer.c           # 修改 integer.c~/demo$ svn statusA       newfile.cM       integer.c               # M 表是 modified

commit

一旦修改到一個斷落或完成時 (若是在程式開發的情況下, 通常都是在至少可以順利 compile 過時)需要下 commit 這個指令, 將我本地端的修改送回檔案庫; 而在每次 commit 的時候, 可以順便附帶一個訊息, 表示這次 commit 時修正了什麼地方, 以方便之後在找尋的時候, 除了透過時間及作者外, 還能有一些其他的資訊. 我們稱這個訊息為 commit log , 建議最好要填寫, 就算是只有一行五六個字, 也勝於什麼都沒有寫. 若您的 commit log 只有一行, 可以直接透過 -m "<your commit log>" 加在 commit 後面, 如:

~/demo$ svn commit -m "fix bug"

或是直接用 svn commit , 這時它會自動跳出一個編輯器讓您輸入. 接著會看到像是這樣的畫面:

Sending newfile.cSending integer.cTransmitting file data..Committed revision 57.

表示完成, 此時在別的地方進行 svn update 時, 就會含有剛才您更新的資訊.

總結

透過 Subversion 進行開發的流程:

1.只有第一次的時候須要進行 svn checkout , 之後請從 2. 起即可

svn checkout <repository url>

2.假設有其他人在之間有進行修正, 所以先 svn update 更新到最新的版本

svn update

3.進行修正

4.再同步一次

svn update

(這時可以再用 svn status 觀看一下目前的結果, 以及可以透過 svn diff 觀看修正內容. 這將在後文介紹)

5.若有問題則回 3 再進行修正. 要不然確認後, 上傳自己的修正

svn commit

常用命令:
1、svn update
注:后面也可以指定目录
如果命令后无目录,则将当前目录及其子目录下的所有文件都更新到最新版本。

2、svn update -r 200 test.php
将本地副本中的文件test.php还原到版本200

3、svn update test.php
更新成与版本库同步的最新版本。
注:如果在提交的时候提示过期的话,是因为冲突,需要先update-->修改文件--->最后再提交commit。

多人合作时:
更新要经常频繁的做,尽量让问题及早暴露,便于处理。
提交代码前要更新,否则容易产生版本冲突。

4、更新的时候除去某些文件
svn up --set-depth=exclude XX yyy zz
详细可参考:http://blog.csdn.net/c_singleboy/article/details/45558941

注: 
svn update 等价于 svn up

更多关于update命令的解释可以参看下面的命令:
[root@onlineyx02 ~]# svn help update
update (up): 将版本库的修改合并到工作副本中。
用法: update [PATH...]

如果没有指定版本,则将工作副本更新到 HEAD 版本。否则同步到 -r 选项所指定的版本。

每更新一项就输出一行信息,使用首字符来报告执行的动作。这些字符的含义是:

A  已添加
    D  已删除
    U  已更新
    C  合并冲突
    G  合并成功
    E  已存在

第一列字符表示文件内容更新,第二列表示文件属性更新。第三列中的字符“B”
  表示此文件上的锁被终止或窃取。

如果使用了 “--force” 选项,在工作副本中未版本控制的障碍路径,不会自动
  导致签出失败。 如果障碍路径与版本库中的对应路径类型相同(文件或目录),它
  将成为受版本控制的路径,但是内容不改变。它意味着障碍路径的子孙,如果也
  是障碍路径,那么也将受版本控制。对于障碍路径中的文件,如果与版本库内的
  不同,将视为工作副本发生本地修改。版本库中的所有属性都应用于障碍路径。
  用第一列字符 “E” 来报告障碍路径。

使用“--set-depth”选项设置此操作目标的工作副本之新深度。

有效选项: 
  -r [--revision] ARG      : ARG (一些命令也接受ARG1:ARG2范围)
                             版本参数可以是如下之一: 
                                NUMBER       版本号
                                '{' DATE '}' 在指定时间以后的版本
                                'HEAD'       版本库中的最新版本
                                'BASE'       工作副本的基线版本
                                'COMMITTED'  最后提交或基线之前
                                'PREV'       COMMITTED的前一版本
  -N [--non-recursive]     :过时;尝试 --depth=files 或 --depth=immediates
  --depth ARG                :受深度参数 ARG(“empty”,“files”,“immediates”,或“infinity”) 约束的操作
  --set-depth ARG          :设置工作副本的新深度为 ARG(“exclude”,“empty”,“files”,“immediates”,
                            或“infinity”)
  -q [--quiet]                   :不打印信息,或只打印概要信息
  --diff3-cmd ARG        :使用 ARG 作为合并命令
  --force                         :强制操作运行
  --ignore-externals      :忽略外部项目
  --changelist ARG       :只能对修改列表 ARG 成员操作
                             [aliases: --cl]
  --editor-cmd ARG      :使用 ARG 作为外部编辑器
  --accept ARG             :指定自动解决冲突动作
                            ('postpone', 'base', 'mine-conflict',
                             'theirs-conflict', 'mine-full', 'theirs-full',
                             'edit', 'launch')

全局选项: 
  --username ARG        :指定用户名称 ARG
  --password ARG        :指定密码 ARG
  --no-auth-cache          :不要缓存用户认证令牌
  --non-interactive         :不要交互提示
  --trust-server-cert       :不提示的接受未知的 SSL 服务器证书(只用于选项 “--non-interactive”)
  --config-dir ARG        :从目录 ARG 读取用户配置文件
  --config-option ARG  :以下属格式设置用户配置选项:
                              FILE:SECTION:OPTION=[VALUE]
                             例如:
                                 servers:global:http-library=serf

转载来源:https://blog.csdn.net/gengxiaoming7/article/details/50518616 原作者:NeverGiveUp7

Mac系统下SVN命令相关推荐

  1. (转载)Mac系统下利用ADB命令连接android手机并进行文件操作

    Mac系统下利用ADB命令连接android手机并进行文件操作 标签: Mac adb android 2016-03-14 10:09 5470人阅读 评论(1) 收藏 举报  分类: Androi ...

  2. parallels安装linux命令行,mac系统下虚拟机parallels安装ubuntu 14.04

    mac系统很棒,mac下的开发环境也很棒,但有时你还得需要ubuntu开发环境,比如进行嵌入式Linux交叉编译,使用Linaro toolchain- 其实mac系统下使用parallels虚拟机安 ...

  3. 网络工程师必备知识:苹果MAC系统下使用USB转console线配置交换机的连接方法

    现在用苹果操作系统的人越来越多,作为网络工程师的使用工具之一USB转串口线的转接头,如果在苹果系统下使用呢? 1.首先自然是先安装转接头光盘自带的驱动程序了.也可以到使用的品牌的官网上去下载. 2.安 ...

  4. 苹果电脑上使用linux环境变量,mac系统下修改环境变量

    苹果电脑使用率越来越高,在mac系统下研发,性能要比在windows下快不少,既然要开发,免不了要配置环境变量.下面是学习啦小编收集整理的mac系统下修改环境变量,希望对大家有帮助~~ mac系统下修 ...

  5. 在Mac系统下架设WiFi热点,对比Win7

    看到<Win7无线电脑变WiFi热点实战体会>一文后,对比Mac平台,Windows系统确实做的不够. 在mac下自己架设wifi应该来说还是非常稀疏平常的事,这还得得益于都是苹果的设计. ...

  6. tp5 mysql定时任务_tp5+mysql实现消息队列,并在mac系统下定时执行-Go语言中文社区...

    Demo简介 订单系统和配货系统之间的信息传递,当订单系统压力比较大时或者出现故障时不影响到配货系统,所以就用了消息队列和定时系统. Demo准备 1.创建一张数据表重点内容 status:0未处理, ...

  7. Mac系统下设置Maven环境

    2019独角兽企业重金招聘Python工程师标准>>> 在mac系统下设置maven环境 1.首先通过终端打开    .bash_profile 2.设置maven解压后的路径地址  ...

  8. Mac 系统下 Rstudio连接虚拟机(远程)oracle数据库

    Mac 系统下 Rstudio连接虚拟机(远程)oracle数据库 因为之前做的一个项目需要在mac系统上用Rstudio远程访问Oracle数据库,以对获得的数据进行进一步的分析~但是在网上找了很多 ...

  9. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+

    Linux系统下SVN服务器的搭建过程详解 UpJ}s7+   1 环境:  服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z   Z]jSq@%1H* ...

最新文章

  1. 网闸与防火墙的区别是什么
  2. Notification 浏览器右下角弹出提示消息
  3. 我的世界服务器修改飞行速度,《我的世界》创造模式飞行速度修改方法介绍
  4. 加载模型预测时出现Dst tensor is not initialized.
  5. JSP、Servlet、Tomcat、JDK、J2EE版本比较
  6. 在什么的控制下 计算机系统能及时处理,操作系统练习题(1)
  7. labimage 怎样旋转图片_大理石旋转楼梯的测量方法,你学会了吗?
  8. WinPcap编程3——获取网络适配器列表
  9. r软件 image画出来的图是颠倒的_如何用Python抠图?试试scikitimage
  10. 物联网卡为什么会这么火,主要有哪些优势?
  11. 使用PyTorch前向运算时出现“RuntimeError: Expected object of scalar type Long but got scalar type Float for ……”
  12. 双路服务器单路运行,架构设计-具体案例求解惑:两个单路服务器比一个双路服务器性能高100%?...
  13. idea在编辑界面上显示多个文件
  14. 《中国通史 2016》_34_读后感
  15. 如何压缩PPT文档的大小
  16. 密码生成器(C语言实现)
  17. element ui自定义图标
  18. 战地3皓月服务器win10系统,战地3配置
  19. Pandas中melt()的使用
  20. Android 自定义ViewGroup 实战篇 - 实现FlowLayout

热门文章

  1. 多git帐号的SSH key切换
  2. MySQL数据库开发 (视频)
  3. 简单的无限分级类 category, menus, jquery tree view
  4. C++ const用法 尽可能使用const
  5. SQL Server2008的安装与管理 (第一部分)
  6. LeetCode 459. Repeated Substring Pattern
  7. 《剑指Offer》 反转链表
  8. 《C和指针》——指针运算
  9. 【AI视野·今日NLP 自然语言处理论文速览 第八期】Wed, 16 Jun 2021
  10. 【AI视野·今日Robot 机器人论文速览 第四期】Wed, 9 Jun 2021