SVN常用命令与常见问题
1.签出源代码到本地 Checkout
URL of repository:SVN服务器中的代码库地址
Checkout directory:本机存放地址
Checkout Depth:
Fully recursive--全递归:检出完整的目录树,包含所有的文件与子目录
Immediate children--直接子节点,包含文件夹:检出目录,包含其中的文件和子目录,但是不递归展开子目录
Only file children--仅文件子节点:检出指定目录,包含所有文件,但是不检出任何子目录
Only this item--仅此项:只检出目录,不包含其中的文件或子目录
Omit externals:在含有外部项目的引用,而这些引用又不希望同时检出时,才需选中此
HEAD revision:迁出最新版本
Revision:迁出指定版本,根据日志选择版本
2.Updata与Commit
Commit之前一定要保证本地代码是最新的,否则可能造成冲突,Commit的功能不仅仅是上传,会和服务器上面的文件进行对比,如果有人也做了更新,那么先尝试进行merge,若自动merge不成功,会报conflict。
提交的时候写log,如果写错,找到当时提交的版本,右击,change log message
新添加文件或修改文件后,对应的.meta文件一并提交,这个文件记录了一个uid,也记录了对应文件的属性(动画属性,贴图属性)
Show unversioned files:勾选上,显示本地新增项目
Updata的时候可能会产生冲突,SVN解决冲突的方式:
一、提交失败后,直接revert,然后再修改,提交,常见此类做法是提交dll冲突时,先revert,再重新生成dll提交
二、二进制文件冲突的解决,如Prefab,静态数据,各类Assets,贴图(避免这个问题,保证只有一个人在修改)选中冲突文件,show log,找到上次的修改,谁的修改多保留谁的,然后马上把没有的修改重做一次,提交。
三、代码冲突,先use mine,重命名这个文件,更新一下,对比更新,把自己的改动同步到更新的文件中,提交。
3.Add
选中需要add的文件,点击OK,但这样并没有将这个文件提交到SVN服务器,只是将这个文件标记为源代码库中的文件,并将其状态置为修改状态,之后再Commit这个文件一次。
4.Rename
此方法不是直接重命名,二是将该文件或文件夹的名称标记为重命名后名称,之后再Commit这个文件,重命名文件要谨慎使用,安全做法是先删除,再添加
5.Delete
可以直接删除文件或文件夹,之后Commit提交更新到服务器,另一种方法是在要删除的文件上TortoiseSVN=>Delete删除
6.图标说明
绿色对勾:与服务器文件一致,但不一定是最新的
红色圆底感叹号:与服务器文件不一致,自己修改过,或u3d修改过
黄色三角感叹号:冲突文件,需要处理
红色叉:标记为删除的问题,还没提价
蓝色加号:标记为需要添加的文件,还没提交
白色一字:忽略的文件,svn不处理这类文件
7.同步到分支
在主干中根据log找到自己提交的,替换到分支相应的文件。
出现过的问题!!!:
1.忘记添加的部分,add新内容
2.出现别人误提代码,导致没有找全自己的代码。仔细检查一下,少哪些东西出现的问题
3.不要误提别人的代码,提交之前,用beyond compare对比一下,若不是自己的东西,恢复掉
4.不要直接在unity中挂脚本,忘记了安卓ab模式与打包SDK的时候,src下的代码不打包,而是编译成dll
5.多提