@@ -19,29 +19,35 @@ public QueryBranches(string repo)
1919
2020 public List < Models . Branch > Result ( )
2121 {
22- Exec ( ) ;
22+ var branches = new List < Models . Branch > ( ) ;
23+ var rs = ReadToEnd ( ) ;
24+ if ( ! rs . IsSuccess )
25+ return branches ;
2326
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+ }
2634
27- return _branches ;
35+ return branches ;
2836 }
2937
30- protected override void OnReadline ( string line )
38+ private Models . Branch ParseLine ( string line )
3139 {
3240 var parts = line . Split ( '$' ) ;
3341 if ( parts . Length != 5 )
34- return ;
42+ return null ;
3543
3644 var branch = new Models . Branch ( ) ;
3745 var refName = parts [ 0 ] ;
3846 if ( refName . EndsWith ( "/HEAD" , StringComparison . Ordinal ) )
39- return ;
47+ return null ;
4048
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 ) ;
4551
4652 if ( refName . StartsWith ( PREFIX_LOCAL , StringComparison . Ordinal ) )
4753 {
@@ -53,7 +59,7 @@ protected override void OnReadline(string line)
5359 var name = refName . Substring ( PREFIX_REMOTE . Length ) ;
5460 var shortNameIdx = name . IndexOf ( '/' , StringComparison . Ordinal ) ;
5561 if ( shortNameIdx < 0 )
56- return ;
62+ return null ;
5763
5864 branch . Remote = name . Substring ( 0 , shortNameIdx ) ;
5965 branch . Name = name . Substring ( branch . Remote . Length + 1 ) ;
@@ -71,14 +77,11 @@ protected override void OnReadline(string line)
7177 branch . Upstream = parts [ 3 ] ;
7278
7379 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 ( ) ;
7581 else
7682 branch . TrackStatus = new Models . BranchTrackStatus ( ) ;
7783
78- _branches . Add ( branch ) ;
84+ return branch ;
7985 }
80-
81- private readonly List < Models . Branch > _branches = new List < Models . Branch > ( ) ;
82- private List < Models . Branch > _needQueryTrackStatus = new List < Models . Branch > ( ) ;
8386 }
8487}
0 commit comments