Skip to content

Commit 1ad46ed

Browse files
committed
Omit repo param from being passed to some Hg, Git and Bld methods (method consistency)
Use scm.update() routine for when checking out a revision during import/add (post scm.clone())
1 parent 707e1cb commit 1ad46ed

File tree

1 file changed

+67
-80
lines changed

1 file changed

+67
-80
lines changed

mbed/mbed.py

Lines changed: 67 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def init(path, url):
233233
with cd(path):
234234
Bld.seturl(url)
235235

236-
def clone(url, path=None, rev=None, depth=None, protocol=None):
236+
def clone(url, path=None, depth=None, protocol=None):
237237
m = Bld.isurl(url)
238238
if not m:
239239
raise ProcessException(1, "Not an mbed library build URL")
@@ -244,7 +244,21 @@ def clone(url, path=None, rev=None, depth=None, protocol=None):
244244
except Exception as e:
245245
error(e[1], e[0])
246246

247-
def dlunzip(url, rev):
247+
def add(dest):
248+
return True
249+
250+
def remove(dest):
251+
if os.path.isfile(dest):
252+
os.remove(dest)
253+
return True
254+
255+
def commit():
256+
error("mbed library builds do not support committing")
257+
258+
def publish(all=None):
259+
return False
260+
261+
def fetch(url, rev):
248262
tmp_file = '.rev-' + rev + '.zip'
249263
arch_dir = 'mbed-' + rev
250264
try:
@@ -267,54 +281,38 @@ def dlunzip(url, rev):
267281
rmtree_readonly(arch_dir)
268282
raise Exception(128, "An error occurred while unpacking mbed library archive \"%s\" in \"%s\"" % (tmp_file, os.getcwd()))
269283

270-
def add(dest):
271-
return True
272-
273-
def remove(dest):
274-
if os.path.isfile(dest):
275-
os.remove(dest)
276-
return True
277-
278-
def commit():
279-
error("mbed library builds do not support committing")
280-
281-
def publish(repo, all=None):
282-
error("mbed library builds do not support pushing")
283-
284-
def fetch(repo):
285-
error("mbed library builds do not support pushing")
286-
287-
def checkout(repo, rev, clean=False):
284+
def checkout(rev):
288285
url = Bld.geturl()
289286
m = Bld.isurl(url)
290287
if not m:
291288
raise ProcessException(1, "Not an mbed library build URL")
292289
return False
293290

291+
log("Checkout \"%s\" in %s" % (rev, os.path.basename(os.getcwd())))
294292
arch_url = m.group(1) + '/archive/' + rev + '.zip'
295293
arch_dir = m.group(7) + '-' + rev
296-
297294
try:
298295
if not os.path.exists(arch_dir):
299-
Bld.dlunzip(arch_url, rev)
296+
Bld.fetch(arch_url, rev)
300297
except Exception as e:
301298
if os.path.exists(arch_dir):
302299
rmtree_readonly(arch_dir)
303300
error(e[1], e[0])
304301
Bld.seturl(url+'/'+rev)
305302

306-
def update(repo, rev=None, clean=False):
307-
m = Bld.isurl(repo.url)
303+
def update(rev=None, clean=False, is_local=False):
304+
url = Bld.geturl()
305+
m = Bld.isurl(url)
308306
rev = Hg.remoteid(m.group(1), rev)
309307
if not rev:
310308
error("Unable to fetch late mbed library revision")
311309

312-
if rev != repo.rev:
310+
if rev != Bld.getrev():
313311
log("Cleaning up library build folder")
314312
for fl in os.listdir('.'):
315313
if not fl.startswith('.'):
316314
os.remove(fl) if os.path.isfile(fl) else shutil.rmtree(fl)
317-
return Bld.checkout(repo, rev)
315+
return Bld.checkout(rev)
318316

319317
def status():
320318
return False
@@ -384,14 +382,8 @@ def isurl(url):
384382
def init(path=None):
385383
popen([hg_cmd, 'init'] + ([path] if path else []) + (['-v'] if verbose else ['-q']))
386384

387-
def clone(url, name=None, rev=None, depth=None, protocol=None):
385+
def clone(url, name=None, depth=None, protocol=None):
388386
popen([hg_cmd, 'clone', formaturl(url, protocol), name] + (['-v'] if verbose else ['-q']))
389-
if rev:
390-
with cd(name):
391-
try:
392-
Hg.checkout(None, rev)
393-
except ProcessException:
394-
error("Unable to update to revision \"%s\"" % rev, 1)
395387

396388
def add(dest):
397389
log("Adding reference \"%s\"" % dest)
@@ -414,24 +406,27 @@ def remove(dest):
414406
def commit():
415407
popen([hg_cmd, 'commit'] + (['-v'] if verbose else ['-q']))
416408

417-
def publish(repo, all=None):
409+
def publish(all=None):
418410
popen([hg_cmd, 'push'] + (['--new-branch'] if all else []) + (['-v'] if verbose else ['-q']))
419411

420-
def fetch(repo):
421-
log("Pulling remote repository \"%s\" to local \"%s\"" % (repo.url, repo.name))
412+
def fetch():
413+
log("Fetching revisions from remote repository to \"%s\"" % os.path.basename(os.getcwd()))
422414
popen([hg_cmd, 'pull'] + (['-v'] if verbose else ['-q']))
423415

424-
def checkout(repo, rev, clean=False):
425-
if not rev:
426-
return False
427-
if repo:
428-
log("Checkout \"%s\" to %s" % (repo.name, repo.revtype(rev, True)))
429-
popen([hg_cmd, 'update'] + (['-r', rev] if rev else []) + (['-C'] if clean else []) + (['-v'] if verbose else ['-q']))
416+
def discard():
417+
log("Discarding local changes in \"%s\"" % os.path.basename(os.getcwd()))
418+
popen([hg_cmd, 'update', '-C'] + (['-v'] if verbose else ['-q']))
430419

431-
def update(repo, rev=None, clean=False):
432-
if not repo.is_local:
433-
Hg.fetch(repo)
434-
Hg.checkout(repo, rev, clean)
420+
def checkout(rev):
421+
log("Checkout \"%s\" in %s" % (rev, os.path.basename(os.getcwd())))
422+
popen([hg_cmd, 'update'] + (['-r', rev] if rev else []) + (['-v'] if verbose else ['-q']))
423+
424+
def update(rev=None, clean=False, is_local=False):
425+
if clean:
426+
Hg.discard()
427+
if not is_local:
428+
Hg.fetch()
429+
Hg.checkout(rev)
435430

436431
def status():
437432
return pquery([hg_cmd, 'status'] + (['-v'] if verbose else ['-q']))
@@ -563,14 +558,8 @@ def isurl(url):
563558
def init(path=None):
564559
popen([git_cmd, 'init'] + ([path] if path else []) + ([] if verbose else ['-q']))
565560

566-
def clone(url, name=None, rev=None, depth=None, protocol=None):
561+
def clone(url, name=None, depth=None, protocol=None):
567562
popen([git_cmd, 'clone', formaturl(url, protocol), name] + (['--depth', depth] if depth else []) + (['-v'] if verbose else ['-q']))
568-
if rev:
569-
with cd(name):
570-
try:
571-
Git.checkout(None, rev)
572-
except ProcessException:
573-
error("Unable to update to revision \"%s\"" % rev, 1)
574563

575564
def add(dest):
576565
log("Adding reference "+dest)
@@ -593,11 +582,7 @@ def remove(dest):
593582
def commit():
594583
popen([git_cmd, 'commit', '-a'] + (['-v'] if verbose else ['-q']))
595584

596-
def merge(repo, dest):
597-
log("Merging \"%s\" with \"%s\"" % (repo.name, dest))
598-
popen([git_cmd, 'merge', dest] + (['-v'] if verbose else ['-q']))
599-
600-
def publish(repo, all=None):
585+
def publish(all=None):
601586
if all:
602587
popen([git_cmd, 'push', '--all'] + (['-v'] if verbose else ['-q']))
603588
else:
@@ -606,27 +591,28 @@ def publish(repo, all=None):
606591
if remote and branch:
607592
popen([git_cmd, 'push', remote, branch] + (['-v'] if verbose else ['-q']))
608593
else:
609-
err = "Unable to publish outgoing changes for \"%s\" in \"%s\".\n" % (repo.name, repo.path)
594+
err = "Unable to publish outgoing changes for \"%s\" in \"%s\".\n" % (os.path.basename(os.getcwd()), os.getcwd())
610595
if not remote:
611596
error(err+"The local repository is not associated with a remote one.", 1)
612597
if not branch:
613598
error(err+"Working set is not on a branch.", 1)
614599

615-
def fetch(repo):
616-
log("Fetching remote repository \"%s\" to local \"%s\"" % (repo.url, repo.name))
600+
def fetch():
601+
log("Fetching revisions from remote repository to \"%s\"" % os.path.basename(os.getcwd()))
617602
popen([git_cmd, 'fetch', '--all'] + (['-v'] if verbose else ['-q']))
618603

619-
def discard(repo):
620-
log("Discarding local changes in \"%s\"" % repo.name)
604+
def discard():
605+
log("Discarding local changes in \"%s\"" % os.path.basename(os.getcwd()))
621606
popen([git_cmd, 'reset', 'HEAD'] + ([] if verbose else ['-q'])) # unmarks files for commit
622607
popen([git_cmd, 'checkout', '.'] + ([] if verbose else ['-q'])) # undo modified files
623608
popen([git_cmd, 'clean', '-fdq'] + ([] if verbose else ['-q'])) # cleans up untracked files and folders
624609

625-
def checkout(repo, rev, clean=False):
626-
if not rev:
627-
return False
628-
if repo:
629-
log("Checkout \"%s\" to %s" % (repo.name, repo.revtype(rev, True)))
610+
def merge(dest):
611+
log("Merging \"%s\" with \"%s\"" % (os.path.basename(os.getcwd()), dest))
612+
popen([git_cmd, 'merge', dest] + (['-v'] if verbose else ['-q']))
613+
614+
def checkout(rev):
615+
log("Checkout \"%s\" in %s" % (rev, os.path.basename(os.getcwd())))
630616
popen([git_cmd, 'checkout', rev] + ([] if verbose else ['-q']))
631617
if Git.isdetached(): # try to find associated refs to avoid detached state
632618
refs = Git.getrefs(rev)
@@ -636,20 +622,20 @@ def checkout(repo, rev, clean=False):
636622
popen([git_cmd, 'checkout', branch] + ([] if verbose else ['-q']))
637623
break
638624

639-
def update(repo, rev=None, clean=False):
625+
def update(rev=None, clean=False, is_local=False):
640626
if clean:
641-
Git.discard(repo)
642-
if not repo.is_local:
643-
Git.fetch(repo)
627+
Git.discard()
628+
if not is_local:
629+
Git.fetch()
644630
if rev:
645-
Git.checkout(repo, rev, clean)
631+
Git.checkout(rev)
646632
else:
647633
remote = Git.getremote()
648634
branch = Git.getbranch()
649635
if remote and branch:
650-
Git.merge(repo, '%s/%s' % (remote, branch))
636+
Git.merge('%s/%s' % (remote, branch))
651637
else:
652-
err = "Unable to update \"%s\" in \"%s\".\n" % (repo.name, repo.path)
638+
err = "Unable to update \"%s\" in \"%s\".\n" % (os.path.basename(os.getcwd()), os.getcwd())
653639
if not remote:
654640
log(err+"The local repository is not associated with a remote one.")
655641
if not branch:
@@ -1347,9 +1333,9 @@ def import_(url, path=None, ignore=False, depth=None, protocol=None, top=True):
13471333
scm.clone(repo.url, repo.path, depth=depth, protocol=protocol)
13481334
with cd(repo.path):
13491335
try:
1350-
scm.checkout(repo, repo.rev, True)
1336+
scm.update(repo.rev, True)
13511337
except ProcessException as e:
1352-
err = "Unable to checkout \"%s\" to %s" % (repo.name, repo.revtype(repo.rev, True))
1338+
err = "Unable to update \"%s\" to %s" % (repo.name, repo.revtype(repo.rev, True))
13531339
if depth:
13541340
err = err + ("\nThe --depth option might prevent fetching the whole revision tree and checking out %s." % (repo.revtype(repo.rev, True)))
13551341
warning(err) if ignore else error(err, e[0])
@@ -1358,7 +1344,8 @@ def import_(url, path=None, ignore=False, depth=None, protocol=None, top=True):
13581344
if os.path.isdir(repo.path):
13591345
rmtree_readonly(repo.path)
13601346
else:
1361-
error("Unable to clone repository (%s)" % url, 1)
1347+
err = "Unable to clone repository (%s)" % url
1348+
warning(err) if ignore else error(err, e[0])
13621349

13631350
repo.sync()
13641351

@@ -1464,7 +1451,7 @@ def publish(all=None, top=True):
14641451
outgoing = repo.scm.outgoing()
14651452
if outgoing > 0:
14661453
action("Pushing local repository \"%s\" to remote \"%s\"" % (repo.name, repo.url))
1467-
repo.scm.publish(repo, all)
1454+
repo.scm.publish(all)
14681455
except ProcessException as e:
14691456
if e[0] != 1:
14701457
raise e
@@ -1502,7 +1489,7 @@ def update(rev=None, clean=False, force=False, ignore=False, top=True, depth=Non
15021489
repo.revtype(rev, True)))
15031490

15041491
try:
1505-
repo.scm.update(repo, rev, clean)
1492+
repo.scm.update(rev, clean, repo.is_local)
15061493
except ProcessException as e:
15071494
err = "Unable to update \"%s\" to %s" % (repo.name, repo.revtype(rev, True))
15081495
if depth:

0 commit comments

Comments
 (0)