SVN 如何更新整个目录
SVN 有时会遇到更新整个目录的情况, 比如依赖的某个库有了新版本, 需要更新. 这个时候的处理可能需要注意一些问题.(直接跳到最后看结论)
举个例子:

根文件是 test, 里面用 externals 属性外链了一个 ext, ext 下面有一个 str 的文件夹, 这就是我们要更新的库了.
现在 str 的版本要更新, 怎么操作?
直接的想法:
在 ext 目录:
svn del str
将新版本拷贝过来:
svn add str
提交, 搞定.
ext里看log:

看起来也OK.
不过这样的做法, 如果其他 SVN 用户改过这个被替换的文件夹, 却没来及提交的话, 就可能会有些问题.
下面模拟一下上面这种情况下, 用户可能的操作流程.看看问题在哪里(结论在最后).
用户口 A 先修改一些文件, 没提交:


用户 B 用Delete+add方式更新的整个目录.这时用户 A up 了整个目录.
会产生冲突.

因为前面用的是delete, 这时,其实是很难resolve的.比如试试resolve一下, 只有文件夹信息, 没有对应文件的修改信息:

这里很难把自己的修改,与 SVN 服务器上的修改 Merge 起来.
那来试试 revert 吧.把冲突的文件 revert 总可以吧?
直接在顶层目录操作, revert!!!

结果却是无法revert
:

再次在顶层目录 update 整个目录:
然后进入 str 目录, 发现 CFastString.h, CFastString.cpp 都已经是没有修改的, 而且是最新的. 因为更不到东西了嘛

那这回直接 resolved 吧 :!.

resove完成~~

再次更新所有文件, 没有错误了.似乎一切正常了.
直到发现: str 目录下的文件一直是最旧的版本,而且死活 up 不下来最新的版本
如果提交,还会把 SVN 服务器上替换好的版本再次替换回来


什么地方出错了呢?
原因是: 当本地有修改的时候, svn 客户端无法完成 str 目录的替换操作. str 目录一直是删除前的那个.
在那个目录里, up 到最新也是 str 删除前的最新.所以 str 里的文件一直无法获得 svn 服务器上的最新版本. 即使服务器上有同名的 str 目录.
要注意的地方主要有:
1. 尽量改文件, 不改目录.
如果要更新某个库, 尽量不要 delete+add. 可以把旧版本的目录清空, 新版本的文件复制进来, 用TortoiseSVN 的 GUI 提交.
GUI里可以勾选missing的文件, SVN会自动删除. 这样可以把对目录的修改限制在比较小的范围. 让文件的log尽量连续.
2. 如果遇到别人使用 Delete+add更新某个目录, 自己如果修改过那个目录, 可以有两种方法避免上面的问题:
A. 删掉整个目录, 重新up.
B. 注意只可以在被 delete/add 的目录上层, 或者更上层的目录revert
SVN 如何更新整个目录的更多相关文章
- 解决svn更新项目目录时“Error:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted”的报错问题
今天在IDEA更新项目目录时,发现报错“Error:svn: E155037: Previous operation has not finished; run 'cleanup' if it was ...
- windows,linux下SVN实现自动更新WEB目录
通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...
- [转]svn 回退/更新/取消至某个版本命令详解
1. 取消Add/Delete 取消文件 svn revert 文件名 取消目录 svn revert --depth=infinity 目录名 2. 回退版本 方法1: 用svn merge 1) ...
- svn自动更新
果对svn不熟悉,当svn上面有更新时,想看到实时效果,就得去web目录手动更新,比较麻烦 其它svn有一个自动更新的功能 利用 hook 在svn 仓库目录下面有一个hook目录 在post-c ...
- svn 回退/更新/取消至某个版本命令详解
1. 取消Add/Delete 取消文件 svn revert 文件名 取消目录 svn revert --depth=infinity 目录名 2. 回退版本 方法1: 用svn merge 1) ...
- svn 回退/更新/取消至某个版本命令详解【转】
转自:http://www.cnblogs.com/mfryf/p/4654110.html 1. 取消Add/Delete 取消文件 svn revert 文件名 取消目录 svn revert - ...
- SVN自动更新-win平台
把项目给外包做,他们天天整个ftp传来传去,上传一次还要到处翻View和Controller,还有漏传的情况,简直low到不行.看不下去了,就准备整个svn.虽然svn解决了上传的问题,但是自动发布还 ...
- svn自动更新服务器最新代码
1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin --svn安装目录(作者使用时TortoiseSVN客户端,其 ...
- linux 下svn同步更新钩子
svn服务器搭建:https://www.linuxidc.com/Linux/2017-05/144254.htm SVN版本库中的一个项目:/svn/repositories/test/ 网站目录 ...
随机推荐
- nodejs request-promise 请求返回中文乱码
nodejs request-promise 请求返回中文乱码 解决方法: 具体步骤如下: 1. 引用iconv-lite 进行转码. 2. 请求时要写参数:encoding:null 3. 对bod ...
- linux环境变量 export命令详解
由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引发的问题 1.${HOME}:首先, HOME 是个变量 ...
- codeforces103E Buying Sets
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- vector的坑——C++primer练习6.33总结
说来惭愧,一道简单的对vector递归的题目写了一个多小时,最后还是请教了大神才改出来. 首先贴上原代码: void return_vector(vector<int>::iterator ...
- 轻量级 HTTP(s) 代理 TinyProxy
J CentOS 下安装 TinyProxy yum install -y tinyproxy 启动.停止.重启 # 启动service tinyproxy start# 停止service ti ...
- flutter自定义View(CustomPainter) 之 canvas的方法总结
画布canvas 画布是一个矩形区域,我们可以控制其每一像素来绘制我们想要的内容 canvas 拥有多种绘制点.线.路径.矩形.圆形.以及添加图像的方法,结合这些方法我们可以绘制出千变万化的画面. 虽 ...
- Memory Manager surface area changes in SQL Server 2012
here were various changes to memory related DMVs, DBCC memory status, and Perfmon counters in SQL Se ...
- ASP.NET 4.5 MVC 4 无法运行在Windows2008的IIS7.0上显示404的解决方案
需要在web.config下加上这个 <system.webServer> <modules runAllManagedModulesForAllRequests="tru ...
- S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则
注:以下图片均来自<如何向妻子解释OOD>译文链接:http://www.cnblogs.com/niyw/archive/2011/01/25/1940603.html < ...
- 1004: [HNOI2008]Cards burnside定理
https://www.lydsy.com/JudgeOnline/problem.php?id=1004 输入数据保证任意多次洗牌都可用这 m种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使 ...