Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Jpom
Commits
6c69f572
Commit
6c69f572
authored
3 years ago
by
bwcx_jzy
Browse files
Options
Download
Email Patches
Plain Diff
获取仓库分支方式修改
parent
2ec403d0
2.6.x
v2.6.4
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CHANGELOG.md
+1
-0
CHANGELOG.md
modules/server/src/main/java/io/jpom/util/GitUtil.java
+38
-16
modules/server/src/main/java/io/jpom/util/GitUtil.java
with
39 additions
and
16 deletions
+39
-16
CHANGELOG.md
+
1
-
0
View file @
6c69f572
...
...
@@ -12,6 +12,7 @@
1.
【server】构建触发器新增延迟执行参数(感谢@Steve.Liu)
2.
【server】数据库字段类型超大的 varchar 改为 CLOB(感谢@Alex)
3.
【server】获取仓库分支方式修改(避免大仓库执行时间太长)
------
...
...
This diff is collapsed.
Click to expand it.
modules/server/src/main/java/io/jpom/util/GitUtil.java
+
38
-
16
View file @
6c69f572
package
io.jpom.util
;
import
cn.hutool.core.collection.CollStreamUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.util.StrUtil
;
...
...
@@ -21,10 +23,8 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* git工具
...
...
@@ -124,17 +124,39 @@ public class GitUtil {
* @throws IOException IO
*/
private
static
List
<
String
>
branchList
(
String
url
,
File
file
,
CredentialsProvider
credentialsProvider
,
PrintWriter
printWriter
)
throws
GitAPIException
,
IOException
{
try
(
Git
git
=
initGit
(
url
,
null
,
file
,
credentialsProvider
,
printWriter
))
{
//
List
<
Ref
>
list
=
git
.
branchList
().
setListMode
(
ListBranchCommand
.
ListMode
.
REMOTE
).
call
();
List
<
String
>
all
=
new
ArrayList
<>(
list
.
size
());
list
.
forEach
(
ref
->
{
String
name
=
ref
.
getName
();
if
(
name
.
startsWith
(
Constants
.
R_REMOTES
+
Constants
.
DEFAULT_REMOTE_NAME
))
{
all
.
add
(
name
.
substring
((
Constants
.
R_REMOTES
+
Constants
.
DEFAULT_REMOTE_NAME
).
length
()
+
1
));
}
});
return
all
;
try
{
LsRemoteCommand
lsRemoteCommand
=
Git
.
lsRemoteRepository
()
.
setRemote
(
url
).
setCredentialsProvider
(
credentialsProvider
);
//
Collection
<
Ref
>
call
=
lsRemoteCommand
.
setHeads
(
true
)
.
setTags
(
true
)
.
call
();
if
(
CollUtil
.
isEmpty
(
call
))
{
return
null
;
}
Map
<
String
,
List
<
Ref
>>
refMap
=
CollStreamUtil
.
groupByKey
(
call
,
ref
->
{
String
name
=
ref
.
getName
();
if
(
name
.
startsWith
(
Constants
.
R_TAGS
))
{
return
Constants
.
R_TAGS
;
}
else
if
(
name
.
startsWith
(
Constants
.
R_HEADS
))
{
return
Constants
.
R_HEADS
;
}
return
null
;
});
// branch list
List
<
Ref
>
branchListRef
=
refMap
.
get
(
Constants
.
R_HEADS
);
if
(
branchListRef
==
null
)
{
return
null
;
}
return
branchListRef
.
stream
().
map
(
ref
->
{
String
name
=
ref
.
getName
();
if
(
name
.
startsWith
(
Constants
.
R_HEADS
))
{
return
name
.
substring
((
Constants
.
R_HEADS
).
length
());
}
return
null
;
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
}
catch
(
TransportException
t
)
{
checkTransportException
(
t
);
throw
t
;
...
...
@@ -148,7 +170,7 @@ public class GitUtil {
File
gitFile
=
FileUtil
.
file
(
file
,
"gitTemp"
,
tempId
);
try
{
List
<
String
>
list
=
branchList
(
url
,
gitFile
,
new
UsernamePasswordCredentialsProvider
(
userName
,
userPwd
),
printWriter
);
if
(
list
.
isEmpty
())
{
if
(
CollUtil
.
isEmpty
(
list
))
{
throw
new
JpomRuntimeException
(
"该仓库还没有任何分支"
);
}
return
list
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help