Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徐晓伟工作室
gitlab-go
提交
a81e49d1
G
gitlab-go
项目概览
徐晓伟工作室
/
gitlab-go
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-go
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a81e49d1
编写于
12月 17, 2023
作者:
徐晓伟
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
导出: 自动跳过已存在的文件夹
上级
f9915231
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
37 addition
and
6 deletion
+37
-6
README.md
README.md
+1
-0
constant/common.go
constant/common.go
+1
-0
flag/flag.go
flag/flag.go
+8
-0
mix/export_all.go
mix/export_all.go
+26
-5
mix/mix_export.go
mix/mix_export.go
+1
-1
未找到文件。
README.md
浏览文件 @
a81e49d1
...
...
@@ -582,6 +582,7 @@ COPYRIGHT:
--export-folder value 导出文件夹
--skip-project-path value [ --skip-project-path value ] 跳过项目路径
--skip-project-wiki-path value [ --skip-project-wiki-path value ] 跳过项目wiki路径
--auto-skip-exist-folder 自动跳过已存在的文件夹 (default: false)
--help, -h show help
```
...
...
constant/common.go
浏览文件 @
a81e49d1
...
...
@@ -29,4 +29,5 @@ const (
ExportFolder
=
"export-folder"
SkipProjectPath
=
"skip-project-path"
SkipProjectWikiPath
=
"skip-project-wiki-path"
AutoSkipExistFolder
=
"auto-skip-exist-folder"
)
flag/flag.go
浏览文件 @
a81e49d1
...
...
@@ -233,3 +233,11 @@ func SkipProjectWikiPath() cli.Flag {
Usage
:
"跳过项目wiki路径"
,
}
}
func
AutoSkipExistFolder
()
cli
.
Flag
{
return
&
cli
.
BoolFlag
{
Name
:
constant
.
AutoSkipExistFolder
,
Usage
:
"自动跳过已存在的文件夹"
,
Value
:
false
,
}
}
mix/export_all.go
浏览文件 @
a81e49d1
...
...
@@ -24,7 +24,7 @@ func ExportAll() *cli.Command {
"1. git 仓库
\n
"
+
"2. wiki 仓库"
,
Flags
:
append
(
flag
.
CommonTokenRequired
(),
flag
.
Owned
(
true
),
flag
.
ExportFolder
(
true
),
flag
.
SkipProjectPath
(),
flag
.
SkipProjectWikiPath
()),
flag
.
ExportFolder
(
true
),
flag
.
SkipProjectPath
(),
flag
.
SkipProjectWikiPath
()
,
flag
.
AutoSkipExistFolder
()
),
Action
:
func
(
context
*
cli
.
Context
)
error
{
var
baseUrl
=
context
.
String
(
constant
.
BaseUrl
)
...
...
@@ -33,6 +33,7 @@ func ExportAll() *cli.Command {
var
exportFolder
=
context
.
String
(
constant
.
ExportFolder
)
var
skipProjectPaths
=
context
.
StringSlice
(
constant
.
SkipProjectPath
)
var
skipProjectWikiPaths
=
context
.
StringSlice
(
constant
.
SkipProjectWikiPath
)
var
autoSkipExistFolder
=
context
.
Bool
(
constant
.
AutoSkipExistFolder
)
baseURL
,
err
:=
url
.
Parse
(
baseUrl
)
if
err
!=
nil
{
...
...
@@ -61,7 +62,7 @@ func ExportAll() *cli.Command {
for
index
,
project
:=
range
projectList
{
log
.
Printf
(
"Project Index: %d, WebURL: %s"
,
index
,
project
.
WebURL
)
err
=
Repository
(
exportFolder
,
host
,
token
,
project
,
skipProjectPaths
)
err
=
Repository
(
autoSkipExistFolder
,
exportFolder
,
host
,
token
,
project
,
skipProjectPaths
)
if
err
!=
nil
{
return
err
}
...
...
@@ -70,7 +71,7 @@ func ExportAll() *cli.Command {
for
index
,
project
:=
range
projectList
{
log
.
Printf
(
"Project wiki Index: %d, WebURL: %s"
,
index
,
project
.
WebURL
)
err
=
Wiki
(
exportFolder
,
host
,
token
,
project
,
skipProjectWikiPaths
)
err
=
Wiki
(
autoSkipExistFolder
,
exportFolder
,
host
,
token
,
project
,
skipProjectWikiPaths
)
if
err
!=
nil
{
return
err
}
...
...
@@ -83,7 +84,7 @@ func ExportAll() *cli.Command {
}
}
func
Repository
(
exportFolder
string
,
host
string
,
token
string
,
project
*
gitlab
.
Project
,
skipProjectPaths
[]
string
)
error
{
func
Repository
(
autoSkipExistFolder
bool
,
exportFolder
string
,
host
string
,
token
string
,
project
*
gitlab
.
Project
,
skipProjectPaths
[]
string
)
error
{
c
:=
contains
(
skipProjectPaths
,
project
.
PathWithNamespace
)
if
c
{
...
...
@@ -92,6 +93,16 @@ func Repository(exportFolder string, host string, token string, project *gitlab.
}
gitPath
:=
filepath
.
Join
(
exportFolder
,
"repository"
,
host
,
project
.
PathWithNamespace
)
if
autoSkipExistFolder
{
_
,
err
:=
os
.
Stat
(
gitPath
)
if
os
.
IsNotExist
(
err
)
{
}
else
{
log
.
Printf
(
"已启用自动跳过已存在的文件夹:%s
\n
"
,
gitPath
)
return
nil
}
}
err
:=
os
.
MkdirAll
(
gitPath
,
os
.
ModePerm
)
if
err
!=
nil
{
return
err
...
...
@@ -123,7 +134,7 @@ func Repository(exportFolder string, host string, token string, project *gitlab.
return
nil
}
func
Wiki
(
exportFolder
string
,
host
string
,
token
string
,
project
*
gitlab
.
Project
,
skipProjectWikiPaths
[]
string
)
error
{
func
Wiki
(
autoSkipExistFolder
bool
,
exportFolder
string
,
host
string
,
token
string
,
project
*
gitlab
.
Project
,
skipProjectWikiPaths
[]
string
)
error
{
c
:=
contains
(
skipProjectWikiPaths
,
project
.
PathWithNamespace
)
if
c
{
...
...
@@ -132,6 +143,16 @@ func Wiki(exportFolder string, host string, token string, project *gitlab.Projec
}
wikiPath
:=
filepath
.
Join
(
exportFolder
,
"wiki"
,
host
,
project
.
PathWithNamespace
+
".wiki"
)
if
autoSkipExistFolder
{
_
,
err
:=
os
.
Stat
(
wikiPath
)
if
os
.
IsNotExist
(
err
)
{
}
else
{
log
.
Printf
(
"已启用自动跳过已存在的文件夹:%s
\n
"
,
wikiPath
)
return
nil
}
}
err
:=
os
.
MkdirAll
(
wikiPath
,
os
.
ModePerm
)
if
err
!=
nil
{
return
err
...
...
mix/mix_export.go
浏览文件 @
a81e49d1
...
...
@@ -11,7 +11,7 @@ func Export() *cli.Command {
Name
:
"mix-export"
,
Usage
:
"导出(混合命令,多接口命令)"
,
Flags
:
append
(
flag
.
Common
(),
flag
.
Owned
(
false
),
flag
.
ExportFolder
(
false
),
flag
.
SkipProjectPath
(),
flag
.
SkipProjectWikiPath
()),
flag
.
ExportFolder
(
false
),
flag
.
SkipProjectPath
(),
flag
.
SkipProjectWikiPath
()
,
flag
.
AutoSkipExistFolder
()
),
Subcommands
:
[]
*
cli
.
Command
{
ExportAll
(),
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录