Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
d5c368dd
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,发现更多精彩内容 >>
提交
d5c368dd
编写于
4月 19, 2014
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pull-714'
上级
2bfc2bb1
20347431
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
2 deletion
+37
-2
core/src/main/java/hudson/FilePath.java
core/src/main/java/hudson/FilePath.java
+8
-2
core/src/test/java/hudson/FilePathTest.java
core/src/test/java/hudson/FilePathTest.java
+29
-0
未找到文件。
core/src/main/java/hudson/FilePath.java
浏览文件 @
d5c368dd
...
...
@@ -1766,14 +1766,20 @@ public final class FilePath implements Serializable {
act
(
new
FileCallable
<
Void
>()
{
private
static
final
long
serialVersionUID
=
1L
;
public
Void
invoke
(
File
f
,
VirtualChannel
channel
)
throws
IOException
{
// JENKINS-16846: if f.getName() is the same as one of the files/directories in f,
// then the rename op will fail
File
tmp
=
new
File
(
f
.
getAbsolutePath
()+
".__rename"
);
if
(!
f
.
renameTo
(
tmp
))
throw
new
IOException
(
"Failed to rename "
+
f
+
" to "
+
tmp
);
File
t
=
new
File
(
target
.
getRemote
());
for
(
File
child
:
f
.
listFiles
())
{
for
(
File
child
:
tmp
.
listFiles
())
{
File
target
=
new
File
(
t
,
child
.
getName
());
if
(!
child
.
renameTo
(
target
))
throw
new
IOException
(
"Failed to rename "
+
child
+
" to "
+
target
);
}
f
.
delete
();
tmp
.
delete
();
return
null
;
}
});
...
...
core/src/test/java/hudson/FilePathTest.java
浏览文件 @
d5c368dd
...
...
@@ -618,4 +618,33 @@ public class FilePathTest extends ChannelTestCase {
return
new
ByteArrayInputStream
(
buf
.
toByteArray
());
}
@Bug
(
16846
)
public
void
testMoveAllChildrenTo
()
throws
IOException
,
InterruptedException
{
final
File
tmp
=
Util
.
createTempDir
();
try
{
final
String
dirname
=
"sub"
;
final
File
top
=
new
File
(
tmp
,
"test"
);
final
File
sub
=
new
File
(
top
,
dirname
);
final
File
subsub
=
new
File
(
sub
,
dirname
);
subsub
.
mkdirs
();
final
File
subFile1
=
new
File
(
sub
.
getAbsolutePath
()
+
"/file1.txt"
);
subFile1
.
createNewFile
();
final
File
subFile2
=
new
File
(
subsub
.
getAbsolutePath
()
+
"/file2.txt"
);
subFile2
.
createNewFile
();
final
FilePath
src
=
new
FilePath
(
sub
);
final
FilePath
dst
=
new
FilePath
(
top
);
// test conflict subdir
src
.
moveAllChildrenTo
(
dst
);
}
finally
{
Util
.
deleteRecursive
(
tmp
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录