Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
d54bc061
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d54bc061
编写于
9月 24, 2014
作者:
N
Nicolas De Loof
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'JENKINS-24825'
上级
b2bb5889
8975b0e0
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
51 addition
and
1 deletion
+51
-1
changelog.html
changelog.html
+3
-0
core/src/main/java/hudson/model/AbstractItem.java
core/src/main/java/hudson/model/AbstractItem.java
+16
-0
core/src/main/java/hudson/model/Items.java
core/src/main/java/hudson/model/Items.java
+1
-1
core/src/main/java/hudson/model/Job.java
core/src/main/java/hudson/model/Job.java
+14
-0
test/src/test/java/hudson/model/ItemsTest.java
test/src/test/java/hudson/model/ItemsTest.java
+17
-0
未找到文件。
changelog.html
浏览文件 @
d54bc061
...
...
@@ -94,6 +94,9 @@ Upcoming changes</a>
<li
class=
bug
>
umask setting on Debian did not work.
(
<a
href=
"https://github.com/jenkinsci/jenkins/pull/1397"
>
pull 1397
</a>
)
<li
class=
bug
>
handle job move when buildDir is configured to a custom location.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-24825"
>
issue 24825
</a>
)
</ul>
</div>
<!--=END=-->
<h3><a
name=
v1.581
>
What's new in 1.581
</a>
(2014/09/21)
</h3>
...
...
core/src/main/java/hudson/model/AbstractItem.java
浏览文件 @
d54bc061
...
...
@@ -42,6 +42,7 @@ import hudson.util.AlternativeUiTextProvider;
import
hudson.util.AlternativeUiTextProvider.Message
;
import
hudson.util.AtomicFileWriter
;
import
hudson.util.IOUtils
;
import
jenkins.model.DirectlyModifiableTopLevelItemGroup
;
import
jenkins.model.Jenkins
;
import
org.apache.tools.ant.taskdefs.Copy
;
import
org.apache.tools.ant.types.FileSet
;
...
...
@@ -312,6 +313,20 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
}
/**
* Notify this item it's been moved to another location, replaced by newItem (might be the same object, but not guaranteed).
* This method is executed <em>after</em> the item root directory has been moved to it's new location.
* <p>
* Derived classes can override this method to add some specific behavior on move, but have to call parent method
* so the item is actually setup within it's new parent.
*
* @see hudson.model.Items#move(AbstractItem, jenkins.model.DirectlyModifiableTopLevelItemGroup)
*/
public
void
movedTo
(
DirectlyModifiableTopLevelItemGroup
destination
,
AbstractItem
newItem
,
File
destDir
)
throws
IOException
{
newItem
.
onLoad
(
destination
,
name
);
}
/**
* Gets all the jobs that this {@link Item} contains as descendants.
*/
...
...
@@ -696,4 +711,5 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
* Replaceable pronoun of that points to a job. Defaults to "Job"/"Project" depending on the context.
*/
public
static
final
Message
<
AbstractItem
>
PRONOUN
=
new
Message
<
AbstractItem
>();
}
core/src/main/java/hudson/model/Items.java
浏览文件 @
d54bc061
...
...
@@ -381,7 +381,7 @@ public class Items {
FileUtils
.
moveDirectory
(
item
.
getRootDir
(),
destDir
);
oldParent
.
remove
(
item
);
I
newItem
=
destination
.
add
(
item
,
name
);
newItem
.
onLoad
(
destination
,
name
);
item
.
movedTo
(
destination
,
newItem
,
destDir
);
ItemListener
.
fireLocationChange
(
newItem
,
oldFullName
);
return
newItem
;
}
...
...
core/src/main/java/hudson/model/Job.java
浏览文件 @
d54bc061
...
...
@@ -63,6 +63,7 @@ import hudson.widgets.HistoryWidget;
import
hudson.widgets.HistoryWidget.Adapter
;
import
hudson.widgets.Widget
;
import
jenkins.model.BuildDiscarder
;
import
jenkins.model.DirectlyModifiableTopLevelItemGroup
;
import
jenkins.model.Jenkins
;
import
jenkins.model.ProjectNamingStrategy
;
import
jenkins.security.HexStringConfidentialKey
;
...
...
@@ -70,6 +71,7 @@ import jenkins.util.io.OnMaster;
import
net.sf.json.JSONException
;
import
net.sf.json.JSONObject
;
import
org.apache.commons.io.FileUtils
;
import
org.jfree.chart.ChartFactory
;
import
org.jfree.chart.JFreeChart
;
import
org.jfree.chart.axis.CategoryAxis
;
...
...
@@ -628,6 +630,18 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
}
}
@Override
public
void
movedTo
(
DirectlyModifiableTopLevelItemGroup
destination
,
AbstractItem
newItem
,
File
destDir
)
throws
IOException
{
Job
newJob
=
(
Job
)
newItem
;
// Missing covariant parameters type here.
File
oldBuildDir
=
getBuildDir
();
super
.
movedTo
(
destination
,
newItem
,
destDir
);
File
newBuildDir
=
getBuildDir
();
if
(
oldBuildDir
.
isDirectory
()
&&
!
newBuildDir
.
isDirectory
())
{
FileUtils
.
forceMkdir
(
destDir
.
getParentFile
());
FileUtils
.
moveDirectory
(
oldBuildDir
,
newBuildDir
);
}
}
@Override
public
void
delete
()
throws
IOException
,
InterruptedException
{
super
.
delete
();
Util
.
deleteRecursive
(
getBuildDir
());
...
...
test/src/test/java/hudson/model/ItemsTest.java
浏览文件 @
d54bc061
...
...
@@ -24,10 +24,14 @@
package
hudson.model
;
import
java.io.File
;
import
java.util.Arrays
;
import
hudson.Util
;
import
org.junit.Test
;
import
static
org
.
junit
.
Assert
.*;
import
org.junit.Rule
;
import
org.jvnet.hudson.test.Issue
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
org.jvnet.hudson.test.MockFolder
;
...
...
@@ -56,4 +60,17 @@ public class ItemsTest {
assertEquals
(
Arrays
.<
Item
>
asList
(
sub2a
,
sub2ap
,
sub2alpha
,
sub2b
,
sub2bp
,
sub2BRAVO
,
sub2c
,
sub2cp
,
sub2charlie
),
Items
.
getAllItems
(
sub2
,
Item
.
class
));
}
@Issue
(
"JENKINS-24825"
)
@Test
public
void
moveItem
()
throws
Exception
{
File
tmp
=
Util
.
createTempDir
();
r
.
jenkins
.
setRawBuildsDir
(
tmp
.
getAbsolutePath
()+
"/${ITEM_FULL_NAME}"
);
MockFolder
foo
=
r
.
createFolder
(
"foo"
);
MockFolder
bar
=
r
.
createFolder
(
"bar"
);
FreeStyleProject
test
=
foo
.
createProject
(
FreeStyleProject
.
class
,
"test"
);
test
.
scheduleBuild2
(
0
).
get
();
Items
.
move
(
test
,
bar
);
assertFalse
(
new
File
(
tmp
,
"foo/test/1"
).
exists
());
assertTrue
(
new
File
(
tmp
,
"bar/test/1"
).
exists
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录