Mac上最好用的SVN客户端,源码管理工具
SVN(Subversion)上的专业名词:
repository:仓库,贮藏室,SVN上的源码存储地址
working copy:工作副本,本地的源码备份地址
下图为连接SVN的参数:
下图为从repository下载到workingCopy:
下图为cornerstone操作页面:
revert:恢复到上一个版本
update:获取SVN上最近的源码
commit:提交workingCopy上的代码(commit之前必须update)
merge:不同版本源码合并(下文会深入说明)
log:每个版本的change及提交时的文本说明
TimeLine:版本上传的时间轴(不常用)
注意事项1:增删资源文件时需要注意,先要在workingCopy进行增删 (删除文件夹必须在working copy上删除,不能在本地直接删除)
1:未增删状态
2:增删后的状态
注意事项2:额外增加了不需要的资源文件时,可直接remove不需要的资源文件
注意事项3:项目文件冲突,项目无法运行时,在下图project.pbxproj文件中改正冲突项
搜索关键字为:>>>> 或 mine
Tag Branch Trunk:
Trunk:主分支,用于新模块开发,当模块开发完成需要修改,就用Branch
Branch:分支,并行开发(针对于Trunk)主要用于修改Bug
Tag:作为milestone(里程碑),标记为发布版本,或可用版本,通常为只读(不可修改),一旦发现有Bug,建立branch分支
本质上:tag,branch都是copy 实际应用也没有什么不同,不过branch多是动态的,而tag是静态的(只读)
merge(合并)
Branch分支结束bugFix之后需要并入tag,或者trunk,这时候就需要使用merge
首先选择需要合并的分支:
选择BugFix后的分支:
merge change:
最后commit workingCopy, 完成整个合并流程
SVN中revert与update的区别
假设当前最新的版本是6,但是,最新的一次提交不是你想要的,也就是想把版本为6的修改干掉
下面来看看如何分辨用revert和update来实现。
1、使用revert
保证本地copy为最新版本,即版本6.
将本地copyrevert到版本5.
将本地copy commit。
2、使用update
将本地copy update到版本5.
这个时候是没办法直接提交的,因为你的修改不是在最新的版本(6)上进行的。
需要把版本5做个备份,然后check out版本6.
通过文件比较工具将版本6的本地copy修改为与版本5的本地copy一致。
然后将版本6的本地copy提交。
可见,revert与update的本质区别是,
revert是在本地copy原来版本的基础上进行的修改,若原来本地copy的版本为最新,可以直接commit;
update只是将本地copy更新到一个指定的版本,若更新到的不是最新版本,不能进行commit。
使用时遇到的坑
1:项目回滚指定版本:workingCopy项目 按shift - 右键文件夹 - 可以将项目回滚到指定版本
2:SVN缓存 命令:删除路径下.svn文件
sudo find /Users/justfly/Documents/workspace/justSVN/ -name ".svn" -exec rm -r {} \;
3:Relocate
如果服务器上改了原始的某个目录的路径,
3.1:首先新建REPOSITORIES,然后在WORKING COPIES上右键Relocate To,新建的目录,重新定位。,
3.2:当然也可以直接修改REPOSITORIES的URL,然后change WORKING COPIES上的定位