Skip to content

Commit 37eb7a0

Browse files
committed
Merge branch fix/issues/108 into devel
2 parents a0f52e6 + 605f21c commit 37eb7a0

File tree

6 files changed

+19
-16
lines changed

6 files changed

+19
-16
lines changed

git_repo/repo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
{self} [--path=<path>] [-v...] <target> clone <user>/<repo> [<repo> [<branch>]]
1616
{self} [--path=<path>] [-v...] <target> add <user>/<repo> [<name>] [--tracking=<branch>] [-a]
1717
{self} [--path=<path>] [-v...] <target> request (list|ls)
18-
{self} [--path=<path>] [-v...] <target> request fetch <request>
18+
{self} [--path=<path>] [-v...] <target> request fetch <request> [-f]
1919
{self} [--path=<path>] [-v...] <target> request create <title> [--message=<message>]
2020
{self} [--path=<path>] [-v...] <target> request create <local_branch> <title> [--message=<message>]
2121
{self} [--path=<path>] [-v...] <target> request create <remote_branch> <local_branch> <title> [--message=<message>]
2222
{self} [--path=<path>] [-v...] <target> request <user>/<repo> (list|ls)
23-
{self} [--path=<path>] [-v...] <target> request <user>/<repo> fetch <request>
23+
{self} [--path=<path>] [-v...] <target> request <user>/<repo> fetch <request> [-f]
2424
{self} [--path=<path>] [-v...] <target> request <user>/<repo> create <title> [--branch=<remote>] [--message=<message>]
2525
{self} [--path=<path>] [-v...] <target> request <user>/<repo> create <local_branch> <title> [--branch=<remote>] [--message=<message>]
2626
{self} [--path=<path>] [-v...] <target> request <user>/<repo> create <remote_branch> <local_branch> <title> [--branch=<remote>] [--message=<message>]
@@ -428,7 +428,7 @@ def do_request_create(self):
428428
@register_action('request', 'fetch')
429429
def do_request_fetch(self):
430430
service = self.get_service()
431-
new_branch = service.request_fetch(self.user_name, self.repo_name, self.request)
431+
new_branch = service.request_fetch(self.user_name, self.repo_name, self.request, force=self.force)
432432
log.info('Successfully fetched request id `{}` of `{}` into `{}`!'.format(
433433
self.request,
434434
self.repo_slug,

git_repo/services/ext/github.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ def request_list(self, user, repo):
283283
for pull in repository.iter_pulls():
284284
yield ( str(pull.number), pull.title, pull.links['html'] )
285285

286-
def request_fetch(self, user, repo, request, pull=False):
286+
def request_fetch(self, user, repo, request, pull=False, force=False):
287287
if pull:
288288
raise NotImplementedError('Pull operation on requests for merge are not yet supported')
289289
try:
@@ -293,7 +293,8 @@ def request_fetch(self, user, repo, request, pull=False):
293293
self.fetch(
294294
remote,
295295
'pull/{}/head'.format(request),
296-
local_branch_name
296+
local_branch_name,
297+
force=force
297298
)
298299
return local_branch_name
299300
else:

git_repo/services/ext/gitlab.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def request_list(self, user, repo):
307307
)
308308
)
309309

310-
def request_fetch(self, user, repo, request, pull=False):
310+
def request_fetch(self, user, repo, request, pull=False, force=False):
311311
if pull:
312312
raise NotImplementedError('Pull operation on requests for merge are not yet supported')
313313
try:
@@ -317,7 +317,8 @@ def request_fetch(self, user, repo, request, pull=False):
317317
self.fetch(
318318
remote,
319319
'merge_requests/{}/head'.format(request),
320-
local_branch_name
320+
local_branch_name,
321+
force
321322
)
322323
return local_branch_name
323324
else:

git_repo/services/service.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,15 @@ def pull(self, remote, branch=None):
216216
remote.pull(progress=pb)
217217
print()
218218

219-
def fetch(self, remote, remote_branch, local_branch):
219+
def fetch(self, remote, remote_branch, local_branch, force=False):
220220
'''Pull a repository
221221
:param remote: git-remote instance
222222
:param branch: name of the branch to pull
223223
'''
224224
pb = ProgressBar()
225225
pb.setup(self.name)
226-
remote.fetch(':'.join([remote_branch, local_branch]), progress=pb)
226+
remote.fetch(':'.join([remote_branch, local_branch]),
227+
update_head_ok=True, force=force, progress=pb)
227228
print()
228229

229230
def clone(self, user, repo, branch='master', rw=True):
@@ -420,7 +421,7 @@ def request_list(self, user, repo): #pragma: no cover
420421
'''
421422
raise NotImplementedError
422423

423-
def request_fetch(self, user, repo, request, pull=False): #pragma: no cover
424+
def request_fetch(self, user, repo, request, pull=False, force=False): #pragma: no cover
424425
'''Fetches given request as a branch, and switch if pull is true
425426
426427
:param repo: name of the repository to create

tests/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ def action_request_fetch(self, namespace, repository, request, pull=False, fail=
661661
with self.mockup_git(namespace, repository):
662662
self.set_mock_popen_commands([
663663
('git version', b'git version 2.8.0', b'', 0),
664-
('git fetch --progress -v {0} {2}/{1}/head:{3}/{1}'.format(
664+
('git fetch --progress --update-head-ok -v {0} {2}/{1}/head:{3}/{1}'.format(
665665
self.service.name,
666666
request,
667667
remote_branch,

tests/integration/test_main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def test_request_fetch__request(self, capsys, caplog):
366366
args={'<request>': '42'})
367367
out, err = capsys.readouterr()
368368
assert ('guyzmo', 'git-repo', '42') == seen_args
369-
assert {} == extra_args
369+
assert {'force': False} == extra_args
370370
assert out == ''
371371
assert 'Successfully fetched request id `42` of `guyzmo/git-repo` into `pr/42`!' in caplog.text
372372

@@ -378,7 +378,7 @@ def test_request_fetch__request(self, capsys, caplog):
378378
# seen_args, extra_args = self.main_request_fetch(rc=0, args={'<request>': '42'})
379379
# out, err = capsys.readouterr()
380380
# assert ('guyzmo', 'git-repo', '42') == seen_args
381-
# assert {} == extra_args
381+
# assert {'force': False} == extra_args
382382
# assert out == ''
383383
# assert 'Successfully fetched request id `42` of `guyzmo/git-repo` into `pr/42`!' in caplog.text
384384

@@ -389,7 +389,7 @@ def test_request_fetch__request__no_repo_slug__https(self, capsys, caplog):
389389
seen_args, extra_args = self.main_request_fetch(rc=0, args={'<request>': '42'})
390390
out, err = capsys.readouterr()
391391
assert ('guyzmo', 'git-repo', '42') == seen_args
392-
assert {} == extra_args
392+
assert {'force': False} == extra_args
393393
assert out == ''
394394
assert 'Successfully fetched request id `42` of `guyzmo/git-repo` into `pr/42`!' in caplog.text
395395

@@ -400,7 +400,7 @@ def test_request_fetch__bad_request(self, capsys, caplog):
400400
args={'<request>': 'bad', '--verbose': 0})
401401
out, err = capsys.readouterr()
402402
assert ('guyzmo', 'git-repo', 'bad') == seen_args
403-
assert {} == extra_args
403+
assert {'force': False} == extra_args
404404
assert out == ''
405405
assert 'Fatal error: bad request for merge!' in caplog.text
406406

@@ -554,7 +554,7 @@ def test_request_fetch__no_repo_slug(self, capsys, caplog):
554554
args={'<request>': '42'})
555555
out, err = capsys.readouterr()
556556
assert ('guyzmo', 'git-repo', '42') == seen_args
557-
assert {} == extra_args
557+
assert {'force': False} == extra_args
558558
assert out == ''
559559
assert 'Successfully fetched request id `42` of `guyzmo/git-repo` into `pr/42`!' in caplog.text
560560

0 commit comments

Comments
 (0)