@@ -104,39 +104,40 @@ def parse_tags(self, data):
104
104
105
105
@property
106
106
def branches (self ):
107
- retcode , stdout , err = self .run ('git' , 'branch' , '-a' )
107
+ # Only show remote branches
108
+ retcode , stdout , err = self .run ('git' , 'branch' , '-r' )
108
109
# error (or no tags found)
109
110
if retcode != 0 :
110
111
return []
111
112
return self .parse_branches (stdout )
112
113
113
114
def parse_branches (self , data ):
114
115
"""
115
- Parse output of git branch -a, eg:
116
- develop
117
- master
118
- * release/2.0.0
119
- rtd-jonas
120
- remotes/origin/2.0.X
121
- remotes/origin/HEAD -> origin/master
122
- remotes/origin/develop
123
- remotes/origin/master
124
- remotes/origin/release/2.0.0
125
- remotes/origin/release/2.1.0
116
+ Parse output of git branch -r, eg:
117
+ origin/2.0.X
118
+ origin/HEAD -> origin/master
119
+ origin/develop
120
+ origin/master
121
+ origin/release/2.0.0
122
+ origin/release/2.1.0
126
123
"""
127
124
clean_branches = []
128
125
raw_branches = csv .reader (StringIO (data ), delimiter = ' ' )
129
126
for branch in raw_branches :
130
127
branch = filter (lambda f : f != '' and f != '*' , branch )
131
- branch = branch [0 ]
132
- if branch .startswith ('remotes/origin/' ):
133
- slug = branch [15 :].replace ('/' , '-' )
134
- if slug in ['HEAD' , self .fallback_branch ]:
135
- continue
136
- clean_branches .append (VCSVersion (self , branch , slug ))
137
- else :
138
- slug = branch .replace ('/' , '-' )
139
- clean_branches .append (VCSVersion (self , branch , slug ))
128
+ # Handle empty branches
129
+ if len (branch ):
130
+ branch = branch [0 ]
131
+ if branch .startswith ('origin/' ):
132
+ cut_len = len ('origin/' )
133
+ slug = branch [cut_len :].replace ('/' , '-' )
134
+ if slug in ['HEAD' , self .fallback_branch ]:
135
+ continue
136
+ clean_branches .append (VCSVersion (self , branch , slug ))
137
+ else :
138
+ # Believe this is dead code.
139
+ slug = branch .replace ('/' , '-' )
140
+ clean_branches .append (VCSVersion (self , branch , slug ))
140
141
return clean_branches
141
142
142
143
def checkout (self , identifier = None ):
0 commit comments