[PATCH] Updated patch to add remote destination support with suggestions from
Sean Meiners
sean.meiners at linspire.com
Tue Jun 20 18:31:05 UTC 2006
# HG changeset patch
# User smeiners at slick.sd.linspire.com
# Node ID 6d436edb97de895b7954ea273224bd2b71aba6be
# Parent a6cd9514f2bc94508ec0f13336ef5977de4cc013
Updated patch to add remote destination support with suggestions from
Bryan O'Sullivan.
Changed option to update local hgrc to be off by default when the destination is remote. I'm hoping this will make it less contentious.
diff -r a6cd9514f2bc -r 6d436edb97de mercurial/commands.py
--- a/mercurial/commands.py Mon Jun 19 16:50:52 2006 -0700
+++ b/mercurial/commands.py Tue Jun 20 11:23:10 2006 -0700
@@ -882,31 +882,26 @@ def clone(ui, source, dest=None, **opts)
ui.setconfig("ui", "remotecmd", opts['remotecmd'])
source = ui.expandpath(source)
- srcRepo = hg.repository(ui, source)
-
- destRepo = None
+ src_repo = hg.repository(ui, source)
+
+ dest_repo = None
try:
- destRepo = hg.repository(ui, dest)
+ dest_repo = hg.repository(ui, dest)
+ raise util.Abort(_("destination '%s' already exists." % dest))
except hg.RepoError:
- pass
-
- if destRepo:
- error = _("destination '%s' already exists." % dest)
- raise util.Abort(error)
-
- destRepo = hg.repository(ui, dest, create=1)
+ dest_repo = hg.repository(ui, dest, create=1)
destPath = None
d = None
- if destRepo.dev() != -1
+ if dest_repo.dev() != -1
destPath = os.path.realpath(dest)
d = Dircleanup(destPath)
-
+
abspath = source
- srcRepo = hg.repository(ui, source)
+ src_repo = hg.repository(ui, source)
copy = False
- if srcRepo.dev() != -1 and destRepo.dev() != -1:
+ if src_repo.dev() != -1 and dest_repo.dev() != -1:
abspath = os.path.abspath(source)
if not opts['pull'] and not opts['rev']:
copy = True
@@ -917,7 +912,7 @@ def clone(ui, source, dest=None, **opts)
# can end up with extra data in the cloned revlogs that's
# not pointed to by changesets, thus causing verify to
# fail
- l1 = srcRepo.lock()
+ l1 = src_repo.lock()
except lock.LockException:
copy = False
@@ -939,52 +934,55 @@ def clone(ui, source, dest=None, **opts)
else:
revs = None
if opts['rev']:
- if not srcRepo.local():
+ if not src_repo.local():
error = _("clone -r not supported yet for remote repositories.")
raise util.Abort(error)
else:
- revs = [srcRepo.lookup(rev) for rev in opts['rev']]
-
- if destRepo.dev() != -1:
- destRepo.pull(srcRepo, heads = revs)
- elif srcRepo.dev() != -1:
- srcRepo.push(destRepo, revs = revs)
+ revs = [src_repo.lookup(rev) for rev in opts['rev']]
+
+ if dest_repo.dev() != -1:
+ dest_repo.pull(src_repo, heads = revs)
+ elif src_repo.dev() != -1:
+ src_repo.push(dest_repo, revs = revs)
else:
error = _("clone from remote to remote not supported.")
raise util.Abort(error)
- if destRepo.dev() != -1:
- if not opts['nohgrc']:
- f = destRepo.opener("hgrc", "w", text=True)
- f.write("[paths]\n")
- f.write("default = %s\n" % abspath)
- f.close()
+ if dest_repo.dev() != -1:
+ f = dest_repo.opener("hgrc", "w", text=True)
+ f.write("[paths]\n")
+ f.write("default = %s\n" % abspath)
+ f.close()
if not opts['noupdate']:
- update(destRepo.ui, destRepo)
-
- elif srcRepo.dev() != -1:
- if not opts['nohgrc']:
+ update(dest_repo.ui, dest_repo)
+
+ elif src_repo.dev() != -1:
+ if opts['update_hgrc']:
inPaths = False
+ defaultFound = False
groupRE = re.compile(r'^\s*\[([^\]]+)\].*')
defaultRE = re.compile(r'^\s*default\s*=.*')
lines = []
- f = srcRepo.opener("hgrc", "r", text=True)
+ f = src_repo.opener("hgrc", "r", text=True)
for line in f:
match = groupRE.match(line)
if match:
if match.group(1) == 'paths':
inPaths = True
else:
+ if inPaths and not defaultFound:
+ lines.append( 'default = %s\n' % dest )
inPaths = False
elif inPaths:
if defaultRE.match(line):
lines.append( 'default = %s\n' % dest )
+ defaultFound = True
continue
lines.append(line)
f.close()
-
- f = srcRepo.opener("hgrc", "w", text=True)
+
+ f = src_repo.opener("hgrc", "w", text=True)
for line in lines:
f.write(line)
f.close()
@@ -2879,7 +2877,7 @@ table = {
_('a changeset you would like to have after cloning')),
('', 'pull', None, _('use pull protocol to copy metadata')),
('e', 'ssh', '', _('specify ssh command to use')),
- ('n', 'nohgrc', None, _('do not update local hgrc file')),
+ ('u', 'update-hgrc', None, _('update local hgrc file to point to the remote repo')),
('', 'remotecmd', '',
_('specify hg command to run on the remote side'))],
_('hg clone [OPTION]... SOURCE [DEST]')),
diff -r a6cd9514f2bc -r 6d436edb97de mercurial/sshrepo.py
--- a/mercurial/sshrepo.py Mon Jun 19 16:50:52 2006 -0700
+++ b/mercurial/sshrepo.py Tue Jun 20 11:23:10 2006 -0700
@@ -44,10 +44,10 @@ class sshrepository(remoterepository):
ui.note('running %s\n' % cmd)
res = os.system(cmd)
if res != 0:
- raise hg.RepoError(_("Could not create remote repo"))
+ raise hg.RepoError(_("could not create remote repo"))
self.validate_repo(ui, sshcmd, args, remotecmd)
-
+
def validate_repo(self, ui, sshcmd, args, remotecmd):
cmd = '%s %s "%s -R %s serve --stdio"'
cmd = cmd % (sshcmd, args, remotecmd, self.path)
More information about the Mercurial
mailing list