Changeset e12087422420…
Parent 1f18453ba26a…
by William Zimrin
Changes to 5 files · Browse files at e12087422420 Showing diff from parent 1f18453ba26a Diff from another changeset...
@@ -16,7 +16,7 @@
'''automatically push large repositories in chunks'''
-from mercurial import cmdutil, commands, hg, extensions
+from mercurial import cmdutil, commands, hg, extensions, exchange
from mercurial.i18n import _
max_push_size = 1000
@@ -47,7 +47,13 @@ fci = discovery.findcommonincoming(repo, other, force=force)
outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=revs, commoninc=fci, force=force)
if not force:
- discovery.checkheads(repo, other, outgoing, fci[2], False)
+ try:
+ discovery.checkheads(repo, other, outgoing, fci[2], False)
+ except TypeError:
+ pushop = exchange.pushoperation(repo, other, newbranch=False)
+ pushop.outgoing = outgoing
+ pushop.remoteheads = fci[2]
+ discovery.checkheads(pushop)
return [True]
except ImportError:
# Mercurial 1.5 and lower
|
@@ -242,9 +242,16 @@ user = ui.prompt('username:')
pw = ui.getpass()
- token = call_api(ui, url, 'Api/1.0/Auth/Login', dict(sUser=user, sPassword=pw))
+ try:
+ token = call_api(ui, url, 'Api/1.0/Auth/Login', dict(sUser=user, sPassword=pw))
+ except APIError as e:
+ if 'BadAuthenticationTFA' in e.errors:
+ ui.write(_('Two-Factor Authentication is enabled for your account\n'))
+ ui.write(_('Please go into your settings page, generate an API key,\n'))
+ ui.write(_('and enter it here (press enter to skip)\n'))
+ token = ui.getpass('token: ')
- if token:
+ if token and token != '':
return token
raise util.Abort(_('authorization failed'))
@@ -569,15 +576,19 @@ for tup in urls:
url = tup[1]
baseurl = get_api_url(url)
- if baseurl is None or baseurl.startswith('ssh:'):
+ if baseurl is None:
continue
+ if baseurl.startswith('ssh:'):
+ apiurl = 'https://' + baseurl[baseurl.find('@') + 1:]
+ else:
+ apiurl = baseurl
tails = get_tails(repo)
- token = get_token(repo.ui, baseurl)
+ token = get_token(repo.ui, apiurl)
# We have an token at this point
params = dict(revTails=tails, token=token)
- related_repos = call_api(repo.ui, baseurl, 'Api/1.0/Repo/Related', params)
+ related_repos = call_api(repo.ui, apiurl, 'Api/1.0/Repo/Related', params)
stripped = baseurl.rstrip('/')
if not stripped.startswith('ssh:'):
stripped += "/Code"
@@ -657,20 +668,13 @@ except urllib2.HTTPError:
raise util.Abort(_('Invalid URL: %s') % url)
- def find_slug(slug, l, attr=None):
- if not l:
- return None
- for candidate in l.get(attr) if attr else l:
- if candidate['sSlug'] == slug or (slug == 'Group' and candidate['sSlug'] == ''):
- return candidate
+ paths = url.split('/')
+ project, group, repo = paths[-3:]
+ repo = call_api(repo.ui, baseurl, 'Api/1.0/Project/%s/Group/%s/Repo/%s' % (project, group, repo), dict(token=token))
+
+ if 'errors' in repo:
return None
- paths = url.split('/')
- kiln_projects = call_api(repo.ui, baseurl, 'Api/1.0/Project/', dict(token=token))
- project, group, repo = paths[-3:]
- project = find_slug(project, kiln_projects)
- group = find_slug(group, project, 'repoGroups')
- repo = find_slug(repo, group, 'repos')
return repo
|
@@ -23,7 +23,10 @@ hgt.hg(['commit', '-m', 'add file'])
hgt.hg(['push'], stdout='''pushing to %s
searching for changes
-remote: kiln: successfully pushed one changeset
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 1 changesets with 1 changes to 1 files
''' % hgt.test_url())
hgt.writefile('n2', 'n2')
hgt.hg(['add', 'n2'])
@@ -32,7 +35,10 @@searching for changes
searching for changes
searching for changes
-remote: kiln: successfully pushed one changeset
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 1 changesets with 1 changes to 1 files
''' % hgt.test_url())
for i in range(3, 25):
hgt.writefile('n%d' % i, 'dummy')
@@ -42,15 +48,30 @@searching for changes
searching for changes
searching for changes
-remote: kiln: successfully pushed one changeset
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 1 changesets with 1 changes to 1 files
searching for changes
-remote: kiln: successfully pushed 2 changesets
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 2 changesets with 2 changes to 2 files
searching for changes
-remote: kiln: successfully pushed 4 changesets
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 4 changesets with 4 changes to 4 files
searching for changes
-remote: kiln: successfully pushed 8 changesets
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 8 changesets with 8 changes to 8 files
searching for changes
-remote: kiln: successfully pushed 7 changesets
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 7 changesets with 7 changes to 7 files
''' % hgt.test_url())
hgt.hg(['pull'], stdout='''pulling from %s
searching for changes
|
@@ -16,7 +16,9 @@ hgt.hg(['logout'])
hgt.hg(['pull'], stdin='\n\n', status=-1,
- stderr='abort: http authorization required for %s' % hgt.test_url())
+ stderr='abort: http authorization required for %s' % hgt.test_url(),
+ stdout='''pulling from %s
+''' % hgt.test_url())
hgt.hg(['pull'], auth=True,
stdout='''pulling from %s
@@ -31,4 +33,6 @@hgt.hg(['logout'])
hgt.hg(['pull'], stdin='\n\n', status=-1,
- stderr='abort: http authorization required for %s' % hgt.test_url())
+ stderr='abort: http authorization required for %s' % hgt.test_url(),
+ stdout='''pulling from %s
+''' % hgt.test_url())
|
@@ -24,7 +24,10 @@ hgt.hg(['commit', '-m', 'add file'])
hgt.hg(['push'], stdout='''pushing to %s
searching for changes
-remote: kiln: successfully pushed one changeset
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 1 changesets with 1 changes to 1 files
''' % hgt.test_url())
testbranch = hgt.createtestbranch(token, ixParent)
hgt.hg(['kiln', '-t'], '''The following Kiln targets are available for this repository:
@@ -43,7 +46,10 @@''' % (hgt.test_url(), hgt.test_branch_url()))
hgt.hg(['push'], stdout='''pushing to %s
searching for changes
-remote: kiln: successfully pushed one changeset
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 1 changesets with 1 changes to 1 files
''' % hgt.test_url())
hgt.writefile('n3', 'n3')
hgt.hg(['add', 'n3'])
@@ -66,7 +72,10 @@
hgt.hg(['push', 'TestBranch'], stdout='''pushing to %s
searching for changes
-remote: kiln: successfully pushed 2 changesets
+remote: adding changesets
+remote: adding manifests
+remote: adding file changes
+remote: added 2 changesets with 2 changes to 2 files
''' % hgt.test_branch_url())
os.chdir('..')
hgt.hg(['clone', hgt.test_url(), 'repo2'], log=False,
|
Loading...