2010年4月 归档
SVN 树冲突和目录丢失问题(4)
4月23日
前面《SVN 树冲突和目录丢失问题(2)》中介绍的冲突解决机制,是“你死我活”(vice versa)式的冲突合并,在实际环境中,可能会有“你中有我,我中有你”式的合并。
- 主线和分支的同名目录中的内容都需要保留
- 分支中同名的目录包含多次提交,需要合并后保留分支的提交历史
如果你确实有这种需要,那么看过来。
SVN 树冲突和目录丢失问题(3)
4月23日
昨天在《SVN 树冲突和目录丢失问题(1)》中重现 yzw遇到的“更新导致树冲突”,实际上可以有更简单的重现方法。
大概的方法是:
- 将主线 trunk 更新到老的版本,该老的版本尚不包含 somedir 的提交
- 然后从 branches/0.x 分支合并到主线
- 提交会引发过时错误
- 执行 svn 更新
- 更新引发树冲突
具体的操作是:
SVN 树冲突和目录丢失问题(2)
4月22日
前面的博文《SVN 树冲突和目录丢失问题(1)》,介绍了重现 update 导致树冲突的重现过程。那么应该如何解决树冲突,以及如何找回丢失目录呢?首先我们需要了解:
什么是树冲突?
首先关于树冲突的概念,最好的参考是:SVN BOOK的有关树冲突的章节。
- 平时我们说的冲突,是因为对同一文件的不同修改造成的冲突。
- 树冲突,指的是由于目录(文件)树的改变,造成内容修改修改不能匹配在同一对象(目录/文件)上
- 例如:由于在一个分支中修改的目录和文件,在另外的分支出现了改名的操作。
- 或者像 yzw 的例子,因为两个分支同时增加了一个同名的目录,导致了树冲突。
树冲突的解决,首先要说的是要最好使用 svn 1.6 的客户端。因为 svn 1.5 的客户端对树冲突的处理不好,甚至根本发现不了树冲突,很容易忽略潜在的冲突,出现意想不到的结果。
SVN BOOK 中举了一个本地修改,远程重命名的例子。
例如 svn 1.5 处理这种本地修改/远程文件改名的情况,可能会出现如下结果:
- 发现远程改名,则检查本地文件是否包含修改,若不包含修改直接删除。
- 结果因为远程改名的文件,本地包含修改,因此不删除,而是保留该文件,但是文件的状态变为未受版本控制状态。
- 本地会显示一个新增文件,实际上是本地修改文件的原始(修改前)版本重命名后的文件。
- 这时,如果不太细心(谁那有那么细心?),就会丢失本地的改动。
对于 svn 1.5 最困难的是发现冲突,当然解决冲突也要靠手工比较完成:将本地文件改动在重命名后文件中再次改动一次!
对于 svn1.6 来说,引入了树冲突的概念,看似复杂度增加了,实际上是解决了两个问题:
- 识别冲突的问题:
将本地修改的文件标记为树冲突 - 改动合并的问题:
将本地修改合并到远程改名后的文件中。因为远程改名后的文件来自于本地修改的原始文件
当然对于远程重命名的例子,还要你最终的决定权还是在于你自己:
- 是否接受远程的文件重命名操作?
- 你需要手动将树冲突的状态予以解决:本地文件删除即接受远程重命名;
- 或者将远程添加的文件删除即不允许重命名。
- 对于前一种状况(即接受远程重命名),本地改动 SVN 1. 6的客户端已经自动合并到远程改名后的文件中了。
那么对于 yzw 的情况呢?
阅读全部内容 »
SVN 树冲突和目录丢失问题(1)
4月22日
临下班了,一个老朋友 (之后用yzw代称) 在 MSN 上呼我。说他的 SVN 遇到问题了:
- 在执行分支合并时,一个目录发生了树冲突
- 直接在硬盘上将该目录删除
- 之后执行 svn update 该目录不能检出
- 不知道树冲突为何物,也不知道目录怎么变成了一团糟
好吧,谁让他公司的 SVN 是我给部署的呢?让他(yzw)执行 svn status 命令,看看显示什么信息,然后我在本地建立一个模型,争取重现并解决他的问题。
Windows下安装Redmine的常见问题
4月20日
一、异常一
Mysql::Error: query: not connected: CREATE TABLE 'schema_migrations' ('version varchar(255) NOT NULL) ENGINE=InnoDB出现这种情况是你没有在ruby的运行环境下,添加MySQl动态链接库 libmySQL.dll
解决方法:
- 下载libmySQL.dll http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll
- 将下载后的libmySQL.dll文件复制到 Ruby/bin目录下(即你安装rubyinstaller的目录)
二、异常二
The bundled mysql.rb driver has been removed from Ruby 2.2.
出现这种情况是在rails2.2之后已经经mysql的驱动从核心框架中删除, 需要单独安装
解决方法:
执行
gem install mysql
从 CoSign 看开源软件本地化(4)
4月13日
上文中我们提到,仍旧困扰我们的问题是认证因子的错误提示信息没有本地化。
什么是认证因子呢?
- 认证因子是一些独立的程序或脚本,位于 /opt/cosign/factor 目录下
- 认证因子对登录CGI传递的参数(如:用户名/口令,邀请码等)进行认证,认证成功返回0,认证失败返回1。
- 认证失败同时在标准错误(stderr)中输出错误信息。而这些错误信息被登录 CGI 捕获并显示给客户
- 认证因子可以级联,形成所谓双因子认证或多因子认证。例如:口令+指纹识别,口令+虹膜验证 都是非常典型的双因子认证。不过目前还没有客户要求实施这么复杂的认证方式。 ;-)
- 认证因子运行在独立的空间下,无法获取 HTTP 环境,就是说不知道用户的语种选择,所以只能说官话。“英文”?
从上面的介绍我们可以看出来认证因子的本地化,之前的方法都无效。只有从核心实现本地化一种办法可选。
阅读全部内容 »
Apt 级联缓存以及 apt-cacher-ng 的一个 Bug
4月13日
今天在配置 APT 级联代理时遇到了麻烦,最终定位了 apt-cacher-ng 的一个 Bug。关于群英汇是如何使用 apt 代理服务器有效的进行软件升级管理以及级联代理应该如何设置,本文做了简要的描述。

最新评论