svn使用遇到的commit问题 xxx remains in tree-conflict

在使用SVN提交时遇到tree-conflict问题,由于文件名大小写及删除操作导致。尝试通过命令行解决,包括svn cleanup、update和commit,但问题依然存在。最终通过删除本地工程,从服务器获取新工程并成功提交。此外,还提到了对不想提交的文件进行SVN配置忽略的步骤。

由于需要改图片资源,于是我用新的图片资源直接覆盖旧的。结果在xcode中看到有的资源是感叹号(表示没有加入到svn Repository),原因是由于我的文件名大小写造成的,svn是区别大小写的。于是我就把svn server上的文件删了,然后接着我又在本地upload,结果就造成了冲突了,(此时xcode工程目录里的该文件我也移除了reference, 所以不能用xcode来解决冲突)。这时候只有用命令行了。在这儿我做一个记录,以备忘记

svn remove --force filename  
svn resolve --accept=working  filename  
svn commit  

网上有个哥们说 xcode的svn不好用,有时候还是得靠command

确实不好用。


今天使用svn提交的时候遇到的问题:

由于在本地删除了一个文件,提交的时候报错误:xxx remains in tree-conflict

在网上搜了一下,可能是因为删除了本地的文件,但是文件的某些信息还有残留,所以报错。但是那个哥们是eclipse里面的svn,他的解决方法是:

在删除的文件在svn中标记为已解决,查找了xcode,发现一个菜单mark as resloved,但是是灰色的,无法使用。

commit的时候,删掉的文件后面显示一个感叹号,


结果在群力问了几个朋友,有建议删除服务器上面的文件,然后clean svn,使用工具scplugin,用这个提交的话会比较简单。

由于xcode4.5的svn要装个Command Line Tools才能用命令行,所以安装Command Line Tools了,然后运行shell

先svn cleanup ~/workcode/iExchangeCollection/iExchange3\ Team/TradingConsole.Mobile/TradingConsole.IOS/iExchangeTab/

然后svn update ~/workcode/iExchangeCollection/iExchange3\ Team/TradingConsole.Mobile/TradingConsole.IOS/iExchangeTab/

这个时候删除的那个文件应该就彻底删除了

然后svn commit ~/workcode/iExchangeCollection/iExchange3\ Team/TradingConsole.Mobile/TradingConsole.IOS/iExchangeTab/

结果还是报错xxx.png remains in tree-conflict,然后在xcode中commit,发现感叹号的那个文件没有了,那应该是删除的那个文件的冲突解决了,但是现在又报一张图片remains in tree-conflict,然后在shell里面使用上面哥们的方法

svn remove --force filename  
svn resolve --accept=working  filename  

结果shell提示没有此文件,但是此文件确实存在,我无语了。

索性把本地的工程删掉了,然后在服务器取了一个新的工程下来,修改,然后commit,发现没有问题了。commit的界面也没有那个感叹号的文件了,应该是彻底删除了,能正常使用了

我觉得应该是在删除了这个文件之后,但是可能没有删除彻底,所以需要cheanup一下,至于后来报的一张图片的冲突就不知道怎么回事了。


svn提交的时候,有些生产的文件是我们不想提交了的

svn配置完后,还得对svn具体设置一下,因为有些文件,我们是不想提交的.

    编辑 ~/.subversion/config 文件 
    注意:如果”.subversion”目录不存在,请运行”svn status”命令,虽然此命令会失败,但是会为你创建所需要的文件. 
    open ~/.subversion/config 打开文件

1. 找到 global-ignores 一行,去掉注释,编辑成

global-ignores = build *~.nib *.so *.pbxuser *.mode *.perspective*

2. 找到 enable-auto-props = yes 把注释去掉,在[auto-props] Section声明以下文本文件

*.mode* = svn:mime-type=text/X-xcode
*.pbxuser = svn:mime-type=text/X-xcode
*.perspective* = svn:mime-type=text/X-xcode
*.pbxproj = svn:mime-type=text/X-xcode

ps:以上内容来自于在XCode中使用SVN,只是其下面的svn配置是针对xcode3.1的.



<think>好的,用户遇到了SVN提交时的树冲突问题,提示“remains in tree-conflict”,需要解决这个问题才能完成提交。根据用户提供的引用资料,我需要综合这些信息,给出解决步骤。 首先,用户提到网上有很多Eclipse的解决方法,但用户使用的是IDEA,所以需要适配IDEA的操作流程。引用[3]中提到使用svn resolved命令可以移除冲突状态,这可能是一个关键步骤。但用户可能已经尝试过删除文件夹、更新和提交,但无效,所以需要更详细的步骤。 接下来,我应该分步骤指导用户处理树冲突。第一步是更新工作副本,确保获取最新版本,避免冲突加剧。然后检查冲突的文件或目录,使用svn status查看具体冲突项。确认冲突后,使用svn resolve命令标记为已解决。可能需要手动解决冲突,比如合并改动或选择保留某个版本。完成解决后,再次提交。 需要注意的是,在IDEA中可能需要通过右键菜单或版本控制工具执行这些操作,用户可能不熟悉命令行,所以应提供图形界面和命令行的两种方法。同时提醒用户备份,避免数据丢失。最后,确认提交是否成功,并总结预防冲突的方法,比如频繁更新和及时提交。 需要确保回答结构清晰,步骤明确,引用相关资料,并在末尾添加相关问题,帮助用户深入理解问题。</think>### SVN树冲突解决方案:解决提交时"remains in tree-conflict"错误 #### 步骤详解 1. **更新工作副本** - 在IDEA中右键项目根目录选择「Subversion」→「Update Directory」或执行命令: ```bash svn update ``` - 确保本地副本与仓库版本同步,可能自动解决部分简单冲突[^3] 2. **定位树冲突文件** - 在IDEA终端执行状态检查: ```bash svn status | grep ^! # 显示被删除的冲突项 svn status | grep ^C # 显示所有冲突项 ``` - 在「Version Control」面板的「Local Changes」选项卡查看红色标记的冲突文件 3. **标记冲突已解决** - 图形界面操作: - 右键冲突文件 → 「Subversion」→ 「Mark Resolved」 - 命令行操作(需精确到具体路径): ```bash svn resolve --accept working <冲突路径> ``` 4. **处理特殊冲突类型** - **文件/目录被错误删除**时: ```bash svn revert <被误删路径> # 恢复本地删除操作 svn update <被误删路径> # 重新获取最新版本 ``` - **需要强制覆盖**时(谨慎使用): ```bash svn resolve --accept theirs-full <冲突路径> ``` 5. **验证并提交** - 再次执行状态检查: ```bash svn status ``` - 确认无冲突标记后执行: ```bash svn commit -m "解决树冲突后的提交" ``` #### 关键原理 树冲突(Tree Conflict)本质是文件/目录结构的版本不一致,常发生在以下场景: - 本地删除的文件在服务器端被修改 - 本地移动的目录在服务器端被删除 - 并行修改文件属性(如svn:ignore) #### 预防措施 1. 提交前必做更新操作:$$ \text{本地版本} \geq \text{仓库版本} $$ 2. 使用「锁定-修改-解锁」模式处理二进制文件 3. 频繁提交小修改,避免长期占用文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值