svn 常用的几个命令

1.把项目上传到svn(import)
svn import -m "New Import" ./MyProject/ http://svn_server/ios/trunk/MyProject #将本地MyProject目录下的所有文件提交到服务器/trunk/MyProject目录
2.检出代码(checkout)
svn co http://svn_server/ios/trunk/MyProject           #检出最新版本到本地
svn co -r 版本号 http://svn_server/ios/trunk/MyProject  #检出指定版本到本地
3.往版本库中添加新的文件(add)
svn add filename #添加指定文件
svn add *        #添加所有文件
4.将改动的文件提交到服务器(commit)
svn ci -m "日志消息" #将该路径下所有修改的文件提交到服务器
5.将服务器的代码更新到本地(update)
svn up
6.创建分支(copy)
svn cp -m "create branch" http://svn_server/ios/trunk/MyProject http://svn_server/ios/branches/NewBranch     #将主干MyProject拷贝一份到分支NewBranch
7.合并主干代码到分支(merge)
cd NewBranch  #切换到本地分支目录
svn merge http://svn_server/ios/trunk/MyProject #将服务器主干代码合并到本地
  • 注:先将服务器上的主干代码合并到本地分支;合并好并且确保本地分支运行没问题后再讲本地分支代码提交到服务器
8.合并分支代码到主干(merge)
cd MyProject #切换到本地主干目录
svn merge http://svn_server/ios/branches/NewBranch #将服务器分支代码合并到本地
9.创建tags(copy)
svn cp http://svn_server/ios/trunk/MyProject http://svn_server/ios/tags/tag-1.0 -m "create tag"
10.删除分支或tags(delete、del、remove)
svn rm -m "rm branch" http://svn_server/ios/branches/NewBranch
svn rm -m "rm tag" http://svn_server/ios/tags/tag-1.0
11.冲突解决(resolve)

a. svn up时如果有冲突发送svn通常会有以下提示(注意:“#”后面是我添加的注释):

U    Classes/Message/FriendsViewController.swift                  # U 该文件有修改
C    Classes/AppDelegate.swift                                    # C 该文件在更新时发生冲突
R    Vendor/Web.bundle/index.html                                 # R 这个文件预定要被替换
U    Demo.xcodeproj/project.pbxproj                               # U 该文件有修改
--- Recording mergeinfo for merge of r709 through r730 into '.':  # 记录合并信息
 U   .
Summary of conflicts:                                             # 冲突总结:
  Text conflicts: 1                                               # 有1个文本冲突
Conflict discovered in file 'Classes/AppDelegate.swift'.          # 文件“Classes/AppDelegate.swift”中发现冲突。
Select: (p) postpone, (df) show diff, (e) edit file, (m) merge,   # 选择:(p)标记冲突,稍后解决,(df)把所有的修改列出来,(e)直接编辑冲突的文件,(m)合并(这个我目前还没用过),
        (mc) my side of conflict, (tc) their side of conflict,    #(mc)冲突以本地为准,(tc)冲突以服务器为准 ,
        (s) show all options:                                     #(s)显示其他可用的命令

b. 遇到冲突我们需要和那个与我发生冲突的哥们商量一番,所以需要推迟处理。选择:p 终端输出如下:

Summary of conflicts:                   # 冲突总结:
  Text conflicts: 1                     # 总共有1个文本冲突

c. 现在我们开始解决冲突,打开Classes/AppDelegate.swift文件,找到冲突。(注意:“#”后面是我添加的注释):

<<<<<<< .working           # 我当前本地的版本(我把这个“友盟统计”的注释给去掉了,因为他还有用。)
        // 友盟统计
        UMAnalyticsConfig.sharedInstance().appKey = "------"
        MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance())
        if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
            MobClick.setAppVersion(version)
        }
||||||| .merge-left.r708   # 我修改之前的版本(以前这个“友盟统计”被注释掉了)
//        // 友盟统计
//        UMAnalyticsConfig.sharedInstance().appKey = "------"
//        MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance())
//        if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
//            MobClick.setAppVersion(version)
//        }
=======                    # 另外一个哥们的修改版本(他觉得这个“友盟统计”被注释掉了就没用了,所以就给删了。简单粗暴🤣🤣🤣)
>>>>>>> .merge-right.r730

经过讨论这个“友盟统计”还是有用的,所以以我当前本地版本为准。修改如下:

        // 友盟统计
        UMAnalyticsConfig.sharedInstance().appKey = "------"
        MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance())
        if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
            MobClick.setAppVersion(version)
        }

d. 冲突文件修改好了。在终端输入svn st命令查看下当前svn状态:

leolideMacBook-Pro:Demo leo$ svn st
U       Classes/Message/FriendsViewController.swift
C       Classes/AppDelegate.swift
R       Vendor/Web.bundle/index.html
U       Demo.xcodeproj/project.pbxproj
?       Demo.xcodeproj/project.xcworkspace/xcshareddata/Demo.xcscmblueprint
?       Demo.xcodeproj/project.xcworkspace/xcuserdata/leoli.xcuserdatad
?       Demo.xcodeproj/xcuserdata/leoli.xcuserdatad
leolideMacBook-Pro: Demo leo$

我们发现Classes/AppDelegate.swift这个文件的标记还是冲突“C”状态。我们需要用resolve命令去掉这个标记。命令如下:

leolideMacBook-Pro: Demo leo$ svn resolve --accept working Classes/AppDelegate.swift
Resolved conflicted state of 'Classes/AppDelegate.swift'
leolideMacBook-Pro: Demo leo$

再次查看svn状态。Classes/AppDelegate.swift的标记已经变成“M”了。

leolideMacBook-Pro:Demo leo$ svn st
M       Classes/Message/FriendsViewController.swift
M       Classes/AppDelegate.swift
R       Vendor/Web.bundle/index.html
M       Demo.xcodeproj/project.pbxproj
?       Demo.xcodeproj/project.xcworkspace/xcshareddata/Demo.xcscmblueprint
?       Demo.xcodeproj/project.xcworkspace/xcuserdata/leoli.xcuserdatad
?       Demo.xcodeproj/xcuserdata/leoli.xcuserdatad
leolideMacBook-Pro: Demo leo$

到此svn已经恢复正常状态。我们可以进行commit等操作了。

12.加锁(lock)
svn lock -m "日志消息" test.h     #给test.h文件加锁
13.解锁(unlock)
svn unlock test.h     #给test.h文件解锁
14.查看日志(log)
svn log test.h #显示test.h文件的所有修改日志
15.查看文件详细信息(info)
svn info test.h #查看test.h文件详细信息
16.比较差异(diff)注:推荐使用xcode会更加清晰明了
svn di test.h         #比较修改后的test.h文件与基础版本的差异
svn di -r m:n test.h  #比较版本m和版本n的差异
17.SVN帮助(help)
svn help
svn help ci #查询ci命令的帮助
18.变更svn地址(switch)
svn switch --relocate http://old_svn_server http://new_svn_server
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容