@@ -19,29 +19,35 @@ public QueryBranches(string repo)
19
19
20
20
public List < Models . Branch > Result ( )
21
21
{
22
- Exec ( ) ;
22
+ var branches = new List < Models . Branch > ( ) ;
23
+ var rs = ReadToEnd ( ) ;
24
+ if ( ! rs . IsSuccess )
25
+ return branches ;
23
26
24
- foreach ( var b in _needQueryTrackStatus )
25
- b . TrackStatus = new QueryTrackStatus ( WorkingDirectory , b . Name , b . Upstream ) . Result ( ) ;
27
+ var lines = rs . StdOut . Split ( '\n ' , StringSplitOptions . RemoveEmptyEntries ) ;
28
+ foreach ( var line in lines )
29
+ {
30
+ var b = ParseLine ( line ) ;
31
+ if ( b != null )
32
+ branches . Add ( b ) ;
33
+ }
26
34
27
- return _branches ;
35
+ return branches ;
28
36
}
29
37
30
- protected override void OnReadline ( string line )
38
+ private Models . Branch ParseLine ( string line )
31
39
{
32
40
var parts = line . Split ( '$' ) ;
33
41
if ( parts . Length != 5 )
34
- return ;
42
+ return null ;
35
43
36
44
var branch = new Models . Branch ( ) ;
37
45
var refName = parts [ 0 ] ;
38
46
if ( refName . EndsWith ( "/HEAD" , StringComparison . Ordinal ) )
39
- return ;
47
+ return null ;
40
48
41
- if ( refName . StartsWith ( PREFIX_DETACHED_AT , StringComparison . Ordinal ) || refName . StartsWith ( PREFIX_DETACHED_FROM , StringComparison . Ordinal ) )
42
- {
43
- branch . IsDetachedHead = true ;
44
- }
49
+ branch . IsDetachedHead = refName . StartsWith ( PREFIX_DETACHED_AT , StringComparison . Ordinal ) ||
50
+ refName . StartsWith ( PREFIX_DETACHED_FROM , StringComparison . Ordinal ) ;
45
51
46
52
if ( refName . StartsWith ( PREFIX_LOCAL , StringComparison . Ordinal ) )
47
53
{
@@ -53,7 +59,7 @@ protected override void OnReadline(string line)
53
59
var name = refName . Substring ( PREFIX_REMOTE . Length ) ;
54
60
var shortNameIdx = name . IndexOf ( '/' , StringComparison . Ordinal ) ;
55
61
if ( shortNameIdx < 0 )
56
- return ;
62
+ return null ;
57
63
58
64
branch . Remote = name . Substring ( 0 , shortNameIdx ) ;
59
65
branch . Name = name . Substring ( branch . Remote . Length + 1 ) ;
@@ -71,14 +77,11 @@ protected override void OnReadline(string line)
71
77
branch . Upstream = parts [ 3 ] ;
72
78
73
79
if ( branch . IsLocal && ! string . IsNullOrEmpty ( parts [ 4 ] ) && ! parts [ 4 ] . Equals ( "=" , StringComparison . Ordinal ) )
74
- _needQueryTrackStatus . Add ( branch ) ;
80
+ branch . TrackStatus = new QueryTrackStatus ( WorkingDirectory , branch . Name , branch . Upstream ) . Result ( ) ;
75
81
else
76
82
branch . TrackStatus = new Models . BranchTrackStatus ( ) ;
77
83
78
- _branches . Add ( branch ) ;
84
+ return branch ;
79
85
}
80
-
81
- private readonly List < Models . Branch > _branches = new List < Models . Branch > ( ) ;
82
- private List < Models . Branch > _needQueryTrackStatus = new List < Models . Branch > ( ) ;
83
86
}
84
87
}
0 commit comments