作者:朱金灿

来源:http://blog.csdn.net/clever101

现在我的需求是这样的:一个软件需要编译完全版本和基础版本,完全版本的基础功能较多,基础版本只包含了基础功能。有时只需要迅速给用户提供基础版本,这时加入使用hudson来编译完全版本是浪费时间,也不符合快速响应用户需求的目的。最好的办法是在hudson建两个job,一个job负责编译基础版本,另一个job负责编译完全版本,但是我也不想把同一份代码下载到不同的目录。

今天查了一下hudson的svn更新选项,发现直接使用两个job共用一个svn源码目录是有问题的。因为hudson的svn更新选项有下面这些:

Use‘svn update’ as much as possible

第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;

以后更新的时候,不会判断已有文件是否在svn里存在。比如工作目录下的文件123在svn里不存在,那么更新的时候不会删除123。

不会判断工作目录下的文件是否被改动,只会判断svn是否有新版本需要更新。比如工作目录下的文件zzz.txt内容为zzz,svn上的zzz.txt内容为空,如果svn上zzz.txt没有新版本,则在更新的时候不会更新zzz.txt,也就是说如果手动修改了工作目录下的文件,如果此文件在svn上没有出现新版本,就不会更新。一旦svn上的zzz.txt有新版本后就会更新工作目录的zzz.txt,这时工作目录下会生成如下几个文件:zzz.txt、zzz.txt.mine、zzz.txt.r223、zzz.txt.r224,其中zzz.txt.r223为svn上老版本、zzz.txt.r224为svn上新版本、zzz.txt.mine为工作目录上的zzz.txt的副本、zzz.txt记录了文件变化。

svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。但是如上例中的zzz.txt手动修改过,已经和svn上的不一样了,这时将不会被删除。

Alwayscheck out a fresh copy

第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;

每一次更新的时候,都会先清除工作目录下的所有文件,然后重新check-out一份完整的项目到工作目录下。

Emulateclean checkout by first deleting unversioned/ignored files,then ‘svn update’

第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;

以后更新的时候会判断工作目录下的文件是否在svn里存在,如果不存在则删除,如果存在且有新版本则更新。

会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。

svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。

Use‘svn update’ as much as possible,with ‘svn revert’ before update

第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;

以后更新的时候不会判断工作目录下的文件是否在svn里存在。

会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。

svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。

就是说无论你选择哪个svn更新选项,在第一次运行第二个job时,都会把第一个job的工作目录下的文件删除掉的。如何避免这种情况,今天试验了一种做法,就是欺骗hudson,在第一次运行第二个job时,设置源代码下载到一个新的目录(不同于第一个job的工作目录),然后在第二次运行第二个job之前,修改第二个job的工作目录为第一个job的工作目录。

参考文献:

1.jenkins中Check-outStrategy的各选项测试

最新文章

  1. webix前端架构的项目应用
  2. mongodb之使用explain和hint性能分析和优化
  3. centos 6.6编译安装git-2.7.0 最新git编译安装
  4. 前端神器avalonJS入门(二)
  5. win7 IIS7.5配置伪静态
  6. 找不到所需要的ndbm.h头文件
  7. c++11 pod类型(了解)
  8. (原)STL中vector的疑问
  9. Elasticsearch中的相似度模型(原文:Similarity in Elasticsearch)
  10. 转:Socket原理与编程基础
  11. 【Python3爬虫】拉勾网爬虫
  12. maven插件--assembly
  13. Java:Map总结
  14. Windows下MySQL绿色版安装配置与使用
  15. Span<T>和ValueTuple<T>性能是.Net Core非常关键的特性
  16. 如何修改可运行Jar包,如何反编译Jar包
  17. zoj1716简单的二维树状数组
  18. 牛客练习赛7 E 珂朵莉的数列(树状数组+爆long long解决方法)
  19. sqlServer数据库备份与还原——差异备份与还原
  20. MongoDb进阶实践之八 MongoDB的聚合初探

热门文章

  1. CUDA中的归约
  2. PostgreSQL Replication之第八章 与pgbouncer一起工作(5)
  3. vue中Object.defineProperty用法
  4. Java调用Python遇到的一系列问题与解决方案
  5. websocket调试工具
  6. 紫书 习题 10-14 UVa 10886(暴力+数据范围)
  7. PKU 2411 Mondriaan's Dream 状态DP
  8. 二 JDK + mysql + yum + rpm
  9. 转:Mac下搭建svn服务器和XCode配置svn
  10. 封装html代码块到js函数中