@@ -199,7 +199,17 @@ def pull(self, remote, branch=None):
199
199
remote .pull (progress = pb )
200
200
print ()
201
201
202
- def clone (self , user , repo , branch = 'master' ):
202
+ def fetch (self , remote , remote_branch , local_branch ):
203
+ '''Pull a repository
204
+ :param remote: git-remote instance
205
+ :param branch: name of the branch to pull
206
+ '''
207
+ pb = ProgressBar ()
208
+ pb .setup (self .name )
209
+ remote .fetch (':' .join ([remote_branch , local_branch ]), progress = pb )
210
+ print ()
211
+
212
+ def clone (self , user , repo , branch = 'master' , rw = True ):
203
213
'''Clones a new repository
204
214
205
215
:param user: namespace of the repository
@@ -212,10 +222,10 @@ def clone(self, user, repo, branch='master'):
212
222
'''
213
223
log .info ('Cloning {}…' .format (repo ))
214
224
215
- remote = self .add (user = user , repo = repo , tracking = True )
225
+ remote = self .add (user = user , repo = repo , tracking = True , rw = rw )
216
226
self .pull (remote , branch )
217
227
218
- def add (self , repo , user = None , name = None , tracking = False , alone = False ):
228
+ def add (self , repo , user = None , name = None , tracking = False , alone = False , rw = True ):
219
229
'''Adding repository as remote
220
230
221
231
:param repo: Name slug of the repository to add
@@ -252,16 +262,16 @@ def add(self, repo, user=None, name=None, tracking=False, alone=False):
252
262
if not alone :
253
263
# if remote all does not exists
254
264
if not all_remote :
255
- self .repository .create_remote ('all' , self .format_path (repo , user , rw = True ))
265
+ self .repository .create_remote ('all' , self .format_path (repo , user , rw = rw ))
256
266
else :
257
267
url = self .format_path (repo , user , rw = True )
258
268
# check if url not already in remote all
259
269
if url not in all_remote .list :
260
- all_remote .set_url (url = self .format_path (repo , user , rw = True ), add = True )
270
+ all_remote .set_url (url = self .format_path (repo , user , rw = rw ), add = True )
261
271
262
272
# adding "self" as the tracking remote
263
273
if tracking :
264
- remote = self .repository .create_remote (name , self .format_path (repo , user , rw = True ))
274
+ remote = self .repository .create_remote (name , self .format_path (repo , user , rw = rw ))
265
275
# lookup tracking branch (usually master)
266
276
for branch in self .repository .branches :
267
277
if tracking == branch .name :
@@ -270,7 +280,7 @@ def add(self, repo, user=None, name=None, tracking=False, alone=False):
270
280
break
271
281
return remote
272
282
else :
273
- return self .repository .create_remote (name , self .format_path (repo , user , rw = True ))
283
+ return self .repository .create_remote (name , self .format_path (repo , user , rw = rw ))
274
284
275
285
def open (self , user = None , repo = None ):
276
286
'''Open the URL of a repository in the user's browser'''
@@ -332,7 +342,6 @@ def gist_clone(self, gist): #pragma: no cover
332
342
'''
333
343
raise NotImplementedError
334
344
335
-
336
345
def gist_create (self , gist_path , secret = False ): #pragma: no cover
337
346
'''Pushes a new gist
338
347
@@ -347,6 +356,25 @@ def gist_delete(self, gist_path, secret=False): #pragma: no cover
347
356
'''
348
357
raise NotImplementedError
349
358
359
+ def request_list (self , user , repo ): #pragma: no cover
360
+ '''Lists all available request for merging code
361
+ sent to the remote repository
362
+
363
+ :param repo: name of the repository to create
364
+
365
+ Meant to be implemented by subclasses
366
+ '''
367
+ raise NotImplementedError
368
+
369
+ def request_fetch (self , user , repo , request , pull = False ): #pragma: no cover
370
+ '''Fetches given request as a branch, and switch if pull is true
371
+
372
+ :param repo: name of the repository to create
373
+
374
+ Meant to be implemented by subclasses
375
+ '''
376
+ raise NotImplementedError
377
+
350
378
@property
351
379
def user (self ): #pragma: no cover
352
380
raise NotImplementedError
0 commit comments