Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
d29930c0
提交
d29930c0
authored
9月 08, 2017
作者:
Kevin Atkinson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Eliminate Prefix field from MFS root, use MkdirOpts.
License: MIT Signed-off-by:
Kevin Atkinson
<
k@kevina.org
>
上级
fd7b72fa
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
35 行增加
和
25 行删除
+35
-25
files.go
core/commands/files/files.go
+5
-8
add.go
core/coreunix/add.go
+11
-3
mfs_test.go
mfs/mfs_test.go
+2
-2
ops.go
mfs/ops.go
+17
-9
system.go
mfs/system.go
+0
-3
没有找到文件。
core/commands/files/files.go
浏览文件 @
d29930c0
...
...
@@ -746,15 +746,12 @@ Examples:
return
}
root
:=
n
.
FilesRoot
if
prefix
!=
nil
{
// FIXME: This is ugly and may not be correct either
// -- kevina
newRoot
:=
*
root
root
=
&
newRoot
root
.
Prefix
=
prefix
}
err
=
mfs
.
Mkdir
(
root
,
dirtomake
,
dashp
,
flush
)
err
=
mfs
.
Mkdir
(
root
,
dirtomake
,
mfs
.
MkdirOpts
{
Mkparents
:
dashp
,
Flush
:
flush
,
Prefix
:
prefix
,
})
if
err
!=
nil
{
res
.
SetError
(
err
,
cmds
.
ErrNormal
)
return
...
...
core/coreunix/add.go
浏览文件 @
d29930c0
...
...
@@ -119,7 +119,6 @@ func (adder *Adder) mfsRoot() (*mfs.Root, error) {
rnode
:=
unixfs
.
EmptyDirNode
()
rnode
.
SetPrefix
(
adder
.
Prefix
)
mr
,
err
:=
mfs
.
NewRoot
(
adder
.
ctx
,
adder
.
dagService
,
rnode
,
nil
)
mr
.
Prefix
=
adder
.
Prefix
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -398,7 +397,12 @@ func (adder *Adder) addNode(node node.Node, path string) error {
}
dir
:=
gopath
.
Dir
(
path
)
if
dir
!=
"."
{
if
err
:=
mfs
.
Mkdir
(
mr
,
dir
,
true
,
false
);
err
!=
nil
{
opts
:=
mfs
.
MkdirOpts
{
Mkparents
:
true
,
Flush
:
false
,
Prefix
:
adder
.
Prefix
,
}
if
err
:=
mfs
.
Mkdir
(
mr
,
dir
,
opts
);
err
!=
nil
{
return
err
}
}
...
...
@@ -496,7 +500,11 @@ func (adder *Adder) addDir(dir files.File) error {
if
err
!=
nil
{
return
err
}
err
=
mfs
.
Mkdir
(
mr
,
dir
.
FileName
(),
true
,
false
)
err
=
mfs
.
Mkdir
(
mr
,
dir
.
FileName
(),
mfs
.
MkdirOpts
{
Mkparents
:
true
,
Flush
:
false
,
Prefix
:
adder
.
Prefix
,
})
if
err
!=
nil
{
return
err
}
...
...
mfs/mfs_test.go
浏览文件 @
d29930c0
...
...
@@ -735,7 +735,7 @@ func TestMfsHugeDir(t *testing.T) {
_
,
rt
:=
setupRoot
(
ctx
,
t
)
for
i
:=
0
;
i
<
10000
;
i
++
{
err
:=
Mkdir
(
rt
,
fmt
.
Sprintf
(
"/dir%d"
,
i
),
false
,
false
)
err
:=
Mkdir
(
rt
,
fmt
.
Sprintf
(
"/dir%d"
,
i
),
MkdirOpts
{
Mkparents
:
false
,
Flush
:
false
}
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
@@ -747,7 +747,7 @@ func TestMkdirP(t *testing.T) {
defer
cancel
()
_
,
rt
:=
setupRoot
(
ctx
,
t
)
err
:=
Mkdir
(
rt
,
"/a/b/c/d/e/f"
,
true
,
true
)
err
:=
Mkdir
(
rt
,
"/a/b/c/d/e/f"
,
MkdirOpts
{
Mkparents
:
true
,
Flush
:
true
}
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
mfs/ops.go
浏览文件 @
d29930c0
...
...
@@ -9,6 +9,7 @@ import (
path
"github.com/ipfs/go-ipfs/path"
cid
"gx/ipfs/QmNp85zy9RLrQ5oQD4hPyS39ezrrXpcaa7R4Y9kxdWQLLQ/go-cid"
node
"gx/ipfs/QmPN7cwmpcc4DWXb4KTB9dNAJgjuPY69h3npsMfhRrQL9c/go-ipld-format"
)
...
...
@@ -97,9 +98,16 @@ func PutNode(r *Root, path string, nd node.Node) error {
return
pdir
.
AddChild
(
filename
,
nd
)
}
// MkdirOpts is used by Mkdir
type
MkdirOpts
struct
{
Mkparents
bool
Flush
bool
Prefix
*
cid
.
Prefix
}
// Mkdir creates a directory at 'path' under the directory 'd', creating
// intermediary directories as needed if 'mkparents' is set to true
func
Mkdir
(
r
*
Root
,
pth
string
,
mkparents
bool
,
flush
bool
)
error
{
func
Mkdir
(
r
*
Root
,
pth
string
,
opts
MkdirOpts
)
error
{
if
pth
==
""
{
return
fmt
.
Errorf
(
"no path given to Mkdir"
)
}
...
...
@@ -115,7 +123,7 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error {
if
len
(
parts
)
==
0
{
// this will only happen on 'mkdir /'
if
m
kparents
{
if
opts
.
M
kparents
{
return
nil
}
return
fmt
.
Errorf
(
"cannot create directory '/': Already exists"
)
...
...
@@ -124,13 +132,13 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error {
cur
:=
r
.
GetValue
()
.
(
*
Directory
)
for
i
,
d
:=
range
parts
[
:
len
(
parts
)
-
1
]
{
fsn
,
err
:=
cur
.
Child
(
d
)
if
err
==
os
.
ErrNotExist
&&
m
kparents
{
if
err
==
os
.
ErrNotExist
&&
opts
.
M
kparents
{
mkd
,
err
:=
cur
.
Mkdir
(
d
)
if
err
!=
nil
{
return
err
}
if
r
.
Prefix
!=
nil
{
mkd
.
SetPrefix
(
r
.
Prefix
)
if
opts
.
Prefix
!=
nil
{
mkd
.
SetPrefix
(
opts
.
Prefix
)
}
fsn
=
mkd
}
else
if
err
!=
nil
{
...
...
@@ -146,15 +154,15 @@ func Mkdir(r *Root, pth string, mkparents bool, flush bool) error {
final
,
err
:=
cur
.
Mkdir
(
parts
[
len
(
parts
)
-
1
])
if
err
!=
nil
{
if
!
m
kparents
||
err
!=
os
.
ErrExist
||
final
==
nil
{
if
!
opts
.
M
kparents
||
err
!=
os
.
ErrExist
||
final
==
nil
{
return
err
}
}
if
r
.
Prefix
!=
nil
{
final
.
SetPrefix
(
r
.
Prefix
)
if
opts
.
Prefix
!=
nil
{
final
.
SetPrefix
(
opts
.
Prefix
)
}
if
f
lush
{
if
opts
.
F
lush
{
err
:=
final
.
Flush
()
if
err
!=
nil
{
return
err
...
...
mfs/system.go
浏览文件 @
d29930c0
...
...
@@ -61,9 +61,6 @@ type Root struct {
dserv
dag
.
DAGService
Type
string
// Prefix to use for any children created
Prefix
*
cid
.
Prefix
}
type
PubFunc
func
(
context
.
Context
,
*
cid
.
Cid
)
error
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论