Merge branch 'fc/remote-hg' (early part)

* 'fc/remote-hg' (early part):
  remote-hg: update bookmarks when pulling
  remote-hg: don't push fake 'master' bookmark
  remote-hg: disable forced push by default
  remote-hg: fix new branch creation
  remote-hg: add new get_config_bool() helper
  remote-hg: enable track-branches in hg-git mode
  remote-hg: get rid of unused exception checks
  remote-hg: trivial cleanups
This commit is contained in:
Junio C Hamano 2013-05-15 14:58:56 -07:00
commit 0c2b1cf812
2 changed files with 22 additions and 24 deletions

View file

@ -87,6 +87,15 @@ def get_config(config):
output, _ = process.communicate()
return output
def get_config_bool(config, default=False):
value = get_config(config).rstrip('\n')
if value == "true":
return True
elif value == "false":
return False
else:
return default
class Marks:
def __init__(self, path):
@ -327,11 +336,8 @@ def get_repo(url, alias):
myui.setconfig('ui', 'interactive', 'off')
myui.fout = sys.stderr
try:
if get_config('remote-hg.insecure') == 'true\n':
myui.setconfig('web', 'cacerts', '')
except subprocess.CalledProcessError:
pass
if get_config_bool('remote-hg.insecure'):
myui.setconfig('web', 'cacerts', '')
try:
mod = extensions.load(myui, 'hgext.schemes', None)
@ -357,6 +363,9 @@ def get_repo(url, alias):
die('Repository error')
repo.pull(peer, heads=None, force=True)
rb = peer.listkeys('bookmarks')
bookmarks.updatefromremote(myui, repo, rb, url)
return repo
def rev_to_mark(rev):
@ -538,7 +547,7 @@ def list_head(repo, cur):
g_head = (head, node)
def do_list(parser):
global branches, bmarks, mode, track_branches
global branches, bmarks, track_branches
repo = parser.repo
for bmark, node in bookmarks.listbookmarks(repo).iteritems():
@ -850,7 +859,7 @@ def do_export(parser):
continue
if peer:
parser.repo.push(peer, force=force_push)
parser.repo.push(peer, force=force_push, newbranch=True)
# handle bookmarks
for bmark, node in p_bmarks:
@ -867,7 +876,8 @@ def do_export(parser):
if bmark == 'master' and 'master' not in parser.repo._bookmarks:
# fake bookmark
pass
print "ok %s" % ref
continue
elif bookmarks.pushbookmark(parser.repo, bmark, old, new):
# updated locally
pass
@ -906,20 +916,9 @@ def main(args):
url = args[2]
peer = None
hg_git_compat = False
track_branches = True
force_push = True
try:
if get_config('remote-hg.hg-git-compat') == 'true\n':
hg_git_compat = True
track_branches = False
if get_config('remote-hg.track-branches') == 'false\n':
track_branches = False
if get_config('remote-hg.force-push') == 'false\n':
force_push = False
except subprocess.CalledProcessError:
pass
hg_git_compat = get_config_bool('remote-hg.hg-git-compat')
track_branches = get_config_bool('remote-hg.track-branches', True)
force_push = get_config_bool('remote-hg.force-push')
if hg_git_compat:
mode = 'hg'

View file

@ -102,6 +102,7 @@ setup () {
) >> "$HOME"/.hgrc &&
git config --global receive.denycurrentbranch warn
git config --global remote-hg.hg-git-compat true
git config --global remote-hg.track-branches false
HGEDITOR=/usr/bin/true
@ -455,8 +456,6 @@ test_expect_success 'hg author' '
git_log gitrepo-$x > git-log-$x
done &&
test_cmp git-log-hg git-log-git &&
test_cmp hg-log-hg hg-log-git &&
test_cmp git-log-hg git-log-git
'