SVN操作

Posted wwwwwwwwwwwwdi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN操作相关的知识,希望对你有一定的参考价值。

这里记录一下一些平时用到的svn指令操作

1. svn log

展示修正的log信息或者路径

eg:
svn log ProjectName/Info.plist
就可以看到info.plist文件的修改历史

2. svn diff

查看两个文件之间的不同

  • 如果直接使用svn diff,则展示当前工作区和服务器端的不同。
  • 如果想要显示特定两个版本的不同,可以用如下写法:
//以下就是展示7504版本和7487版本之间 info.plist文件的变化
svn diff -r 7504:7487 ProjectName/Info.plist

3. svn add

Put files and directories under version control, scheduling
them for addition to repository. They will be added in next commit.
usage: add PATH…

添加文件或者文件夹到SVN

4. svn checkout

Check out a working copy from a repository.
usage: checkout URL[@REV]… [PATH]

5. svn commit

Send changes from your working copy to the repository.
usage: commit [PATH…]


6. svn revert

Restore pristine working copy state (undo local changes).
usage: revert PATH…

回滚到以前的版本

7. svn update

Bring changes from the repository into the working copy.
usage: update [PATH…]

8. svn merge

Merge changes into a working copy.
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the ‘complete’ merge)
2. merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [TARGET_WCPATH]
(the ‘cherry-pick’ merge)
3. merge SOURCE1[@REV1] SOURCE2[@REV2] [TARGET_WCPATH]
(the ‘2-URL’ merge)

notes:

revert命令顾名思义就是对修改过的东西进行回滚操作。一般有2种情况发生时需要用到回滚的操作:

1,修改过的东西没有提交(commit)

这种情况下revert会取消之前的修改

用法:#svn revert [-R] xxx_file_dir

如果需要回滚的是一个目录则加上-R(递归)可选参数

2,改动的东西并且提交了

这种情况下,用svn merge命令来进行回滚。

步骤如下:

1)执行#svn update命令保证工作区文件是最新的,比如最新版本号是20

2)然后找出要回滚的确切版本号:

执行svn log xxx_file_dir

假设根据svn log日志查出要回滚的版本号是10,如果想要更详细的了解情况,可以使用svn diff -r 20:10 [xxx_file_dir]
3)回滚到版本号10:
执行svn merge -r 20:10 xxx_file_dir
 
4)提交回滚:
svn commit -m "注释..." 
提交后版本变成了29
完毕

9. svn export

Create an unversioned copy of a tree.
usage: 1. export [-r REV] URL[@PEGREV] [PATH]
2. export [-r REV] PATH1[@PEGREV] [PATH2]

导出一个不包含版本控制的文件

9. svn upgrade

Upgrade the metadata storage format for a working copy.
usage: upgrade [WCPATH…]
在我们把服务器上的svn 版本号升级以后,在之前的文件下再执行svn命令时,会提示需要执行svn upgrade命令把当前的代码由低版本的svn 上迁移到高版本的svn 上去。
直接执行svn upgrade命令就会把所有的代码按照最新的svn 版本重新更新一遍。之后你操作所有的svn 命令都会正常运行。

10. svn ls

svn列出所有branches下的分支

$ svn ls svn://192.168.0.178/yewu/branches

或者显示详细内容:

svn ls svn://192.168.0.178/yewu/branches --verbose

11. UserInterfaceState.xcuserstate文件冲突

这里要首先介绍一下xcode中一些文件的含义:

首先看下Stack Overflow上关于Xcode project和workspace之间区别的解释

xcshareddata:里边配置一些项目相关的配置,比如scheme,target等等
xcuserdata:用来存放一些xcode相关的配置,里边包含了一个文件UserInterfaceState.xcuserstate,此文件是专门用来记录用户Xcode的一些操作,比如点击了某个类进行编辑,或者在哪打了一个断点什么的。

因此,UserInterfaceState.xcuserstate这个文件变化相当的大,而且,此文件没必要添加到版本控制中
解决办法:
在提交SVN的时候,忽略掉此文件,如果此文件已经添加到SVN上,那么先在删除服务器上删除此文件,然后在Cornerstone的配置中忽略掉它,那么以后再提交的时候,就不会有这个问题了。

参考

https://blog.csdn.net/u014100559/article/details/50539232
https://blog.csdn.net/cbbbc/article/details/52585570
https://www.jianshu.com/p/69b750594d6a
https://stackoverflow.com/questions/21631313/xcode-project-vs-xcode-workspace-differences

以上是关于SVN操作的主要内容,如果未能解决你的问题,请参考以下文章

SVN-权限详细配置

svn clean up命令的使用

02~ 一步一步教你使用 SVN之SVN 的介绍

SVN 与 GIT 详细对比

SVN(TortoiseSVN)详细教程--创建分支合并相互操作

SVN_限制注释长度