大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net/downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac上轻松使用命令行进行操作SVN,同时提升开发人员的格调。
1.安装svn 命令:
mac:
brew install svn
centos:
yum -y install subversion

2、验证是否安装成功
svn help
出现以下内容表示安装成功

3.拉取仓库文件
通过svn checkout命令检出资源
svn checkout svn://xxxxxx
例子:
[root@s145 tmp]# svn checkout svn://192.168.0.146:18080/repos /tmp/svntest --username=testuser
#等同于
git clone git@gitlab.*.com:gituser/*.com.git (fetch)
格式:
svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码
svn checkout 可以使用缩写svn co

3.添加文件
使用svn add命令添加前要求文件已存在,添加新文件只是告诉SVN,并没有真实提交,需要使用commit提交。
svn add file
#等同于
git add file
4.提交文件到svn
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
#等同于
git commit -m 'init提示信息' filepath
#-m参数为必选,可以为空,用于备注说明
#commit前必须先svn add添加文件到版本控制库。
#svn commit可以缩写为svn ci
5.加锁/解锁(很少用到)
svn lock -m "LockMessage" [--force] PATH
svn unlock PATH
#例如
[root@s145 svntest]# svn lock 2.log
‘2.log’ locked by user ‘wuhs’.
[root@s145 svntest]#svn unlock 2.log
‘2.log’ unlocked.
[root@s145 svntest]# svn lock -m “锁定2.log” 2.log
‘2.log’ locked by user ‘wuhs’.
6.更新svn资源到某个版本
1.svn update -r m
2.svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
#相当于 git pull
3.svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
#相当于
git reset 052e # 回退到指定版本
4.svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
svn update #更新整个版本库
svn update -r 修正版本 文件名 #回退指定文件
svn update 文件名 ##更新指定文件
版本号可以通过svn log查看
7.查看文件或者目录状态
svn status path
#相当于
git status
命令简写svn st
[root@s145 svntest]# svn status 2.log
M 2.log
[root@s145 svntest]# svn status 3.log
[root@s145 svntest]# svn status -v testdir/
5 1 wuhs testdir

8.删除文件
#方法一:删除和提交操作
svn delete path -m "delete test fle"
#方法二:先删除再提交
svn delete 1.log
svn commit -m “”
通过svn delete删除文件后需要执行提交操作才会真正删除。
9.查看日志
svn log path
#查看某个文件的日志
svn log 2.log
10.查看文件详细信息
svn info path
11.将两个版本之间的差异合并到当前文件
svn merge -r m:n path
12.SVN 帮助
svn help
13.比较文件版本差异
svn diff file
命令可以简写为svn di
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
[root@s145 svntest]# ll
total 0
-rw-r–r-- 1 root root 0 Feb 11 17:06 2.log
-rw-r–r-- 1 root root 0 Feb 11 17:35 3.log
drwxr-xr-x 2 root root 6 Feb 11 17:03 testdir
-rw-r–r-- 1 root root 0 Feb 11 17:03 testfile.txt
[root@s145 svntest]# echo “2-test” > 2.log
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
Index: 2.log
===================================================================
— 2.log (revision 5)
+++ 2.log (working copy)
@@ -0,0 +1 @@
+2-test

14.解决冲突
[root@s145 svntest]# svn resolved 2.log
Resolved conflicted state of ‘2.log’
[root@s145 svntest]# svn commit -m “” 2.log
Sending 2.log
Transmitting file data .
Committed revision 9.
15.创建纳入版本控制下的新目录
[root@s145 svntest]# svn mkdir abc
A abc
[root@s145 svntest]# ls
2.log 3.log abc testdir testfile.txt
[root@s145 svntest]# svn commit -m “新增目录” ./
Adding abc
Committed revision 11.
16.版本库下的文件和目录列表
命令简写svn li
[root@s145 svntest]# svn list ./
1.log
2.log
testdir/
testfile.txt
17.不更新情况下查看SVN文件
svn cat file

18. 新建分支
[root@s145 svntest]# svn mkdir branches
A branches
[root@s145 svntest]# svn copy svn://192.168.0.146:18080/repos/testdir svn://192.168.0.146:18080/repos/branches -m “新建分支测试”
Committed revision 12.
19.递归清理工作拷贝
[root@s145 svntest]# svn cleanup
#递归清理工作拷贝,删除未完成的操作锁定。
如果你得到一个“工作拷贝已锁定”的错误,
运行这个命令可以删除无效的锁定,
让你的工作拷贝再次回到可用的状态。
命令语法是svn cleanup [PATH…],如果没有传递路径则使用默认值"."
20.svn提交文件流程
(1)首次提交文件
svn add file
svn commit -m 'msg' file
(2)非首次提交文件
svn commit -m 'second' file
21.git 提交文件流程
git add file #每次提交时都需要add添加
git commit -m 'msg'
git push origin dev
如果你有什么问题,欢迎通过下方公众号联系我;
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h