svn状态与常见错误 | 您所在的位置:网站首页 › svn状态conflicted › svn状态与常见错误 |
TortoiseSVN 1.6.16是最后一个目录独立管理自身cache的svn版本(每个目录下都有一个隐藏的.svn文件夹) 之后的版本会则会根目录上统一进行管理(只有根目录下有一个隐藏的.svn文件夹) 各个目录独立管理自己cache会有很多好处: ① 各个目录相互独立,互相不受影响 ② 目录下出现难以处理的svn错误时,可通过删除目录重新拉取来暴力解决 由于svn默认对.a和.so文件设置了过滤:对某个目录add时,不会将该目录下的.a、.so文件add,必须再手动一个一个的add进去 Global ignore pattern: *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store 该设置记录在注册表以下键值(HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany\global-ignores)中: 注:Global ignore pattern设置是全局有效的,会作用于本机所有svn的Working Copy ---------------------------------------------------------------------------------------------------------- 服务器:Repository 本地: Local 或 Working Copy == 状态== Updated 文件a或目录A在服务器和本地均受控,本地未做过任何修改且版本较老,执行svn更新时,使用服务器版本覆盖该文件或目录 Added 文件a或目录A在服务器受控、本地不存在且不受控,执行svn更新时,使用服务器版本新建该文件或目录 Deleted 文件a或目录A在本地受控且存在,但在服务器已被删除,执行svn更新时,删除本地该文件或目录; 若执行svn更新文件或目录依然存在,将文件或目录Revert掉即可(按照从上到下的顺序,先Revert目录,然后再Revert掉目录下的文件) Versioned 文件a或目录A在服务器受控、本地不受控,但本地存在一个与服务器一致的文件或目录,执行svn更新时,则该文件或目录的状态会变为Versioned Restored 文件a或目录A受控,本地的版本号已为最新,但却在本地被删除了,执行svn更新时,则该文件或目录的状态会变为Restored External 外部引用链接 注:在TGame目录下右键菜单 TortoiseSVN - Properities,即可看到externals所指向的具体路径 该路径可以为相对路径、也可以为绝对URL。 Missing 1. 文件a或目录A受控,在本地被删除了,则其状态在本地则为Missing 可以通过执行svn更新,从服务器重新拉取文件a或目录A 2. 有一种情况:即使执行update也不能从服务器拉得Missing掉的文件a或目录A 当服务器存在文件a和文件a(或目录A和目录a) -- 注:linux操作系统下的文件目录名是区分大小写的 然而windows上,是不允许同一文件夹中存在2个仅仅大小写不同的文件(或目录) 正是由于操作系统之间的差异,如果本地已经有a.txt的版本信息,在windows上提交仅大小写不同的A.txt文件时,会弹出如下警告: 解决办法1: ① 删除服务器上所有仅大小写不同的文件(或目录): 打开Repository Browser,然后选择这些文件(或目录),进行Delete删除 注:删除前记得备份一下 ② 通知所有的客户端,本地执行update ③ 最后,上传目标文件(或目录)即可 解决办法2: ① 删除服务器上一个仅大小写不同的文件(或目录) 打开Repository Browser,然后选择该文件(或目录),进行Delete删除 ② 在本地执行update时,会出现“Can't open file 系统找不到文件的错误” 此时需要,新建一个与服务器同名的文件(或目录),然后执行svn -- delete 注:删除前记得备份一下;这一步主要是为了清除本地的有问题的缓存 ③ 最后,上传目标文件(或目录)即可 Merged 文件a在服务器和本地均受控,本地做过修改且版本较老,执行svn更新时,使用服务器版本覆盖该文件能自动合并修改(注:本地修改与服务器修改不在同一地方) Conflicted 1. 文件a受控,在本地有修改(mine);当其服务器版本(118)比本地(112)新,执行update不能被svn智能Merged处理时,则文件a的状态在本地则为Conflicted a.txta.txt.minea.txt.r112a.txt.r118 可以在update列表中,选中红色处于冲突状态的文件a,在弹出的右键菜单中进行冲突处理: 若已经关掉了update列表,可以在commit列表中按照上述方法进行冲突处理; 或者执行revert,将本地的修改直接丢弃掉,使用服务器的修改 Resolved conflicted解决后,状态会变成Resolved。 Tree conflict 1. 本地文件a原来受控,在本地有修改,当其被服务器删除,执行update时,则文件a的状态在本地则为Tree conflict 可以在commit列表执行revert,将其Text status由added(+),tree conflict变为non-versioned,tree conflict,然后执行delete,将本地文件a删除掉 2. 本地目录A原来受控,在本地目录A中的文件有修改,当其被服务器删除,执行update时,则目录A的状态在本地则为Tree conflict 可以在commit列表对A中的所有修改文件执行revert,然后对目录A执行Undo Add,最后将目录A删除掉
更多状态请参考:http://svnbook.red-bean.com/en/1.8/svn.ref.svn.c.status.html == svn1.6.16 本地cache文件说明 == -- 以Weapon_SCAR_ClipIn.wav(音频二进制文件)和Weapon_SCAR_ClipIn.wav.meta(文本文件)文件为例 entries中文件信息块: all-wcprops中的一个文件的信息块: 注:FF为换页符(16进制:0x0C),CR为回车符(16进制:0x0D),LF为换行符(16进制:0x0A) prop-base目录 -- 二进制文件配置信息 如:Weapon_SCAR_ClipIn.wav.svn-base text-base目录 -- 文件配置信息 如:Weapon_SCAR_ClipIn.wav.svn-base(其内容为二进制) Weapon_SCAR_ClipIn.wav.meta.svn-base(其内容为文本) 关闭TSvnCache.exe高cpu占用 |
CopyRight 2018-2019 实验室设备网 版权所有 |