changeset 22837:2be7d5ebd4d0

config: use the same hgrc for a cloned repo as for an uninitted repo This just copies the same local sample hgrc, except it sets the default path to the repo it was cloned from. This is cut-and-paste from the local sample hgrc, but I think it's acceptable, since the two pieces of code are right next to each other and they're small. There is danger of them going out of synch, but it would complicate the code too much to get rid of this C&P. I also add ui as an import to hg.py, but with demandimport, this should not be a noticeable performance hit.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 06 Oct 2014 16:35:02 -0400
parents 5a831e4e6d7a
children 9a20f53e436f
files mercurial/commands.py mercurial/hg.py mercurial/ui.py tests/test-default-push.t tests/test-hgrc.t tests/test-pull-http.t tests/test-revset-outgoing.t tests/test-url-rev.t
diffstat 8 files changed, 94 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Wed Oct 08 07:45:51 2014 -0400
+++ b/mercurial/commands.py	Mon Oct 06 16:35:02 2014 -0400
@@ -22,6 +22,7 @@
 import random
 import setdiscovery, treediscovery, dagutil, pvec, localrepo
 import phases, obsolete, exchange
+import ui as uimod
 
 table = {}
 
@@ -1558,14 +1559,12 @@
             if os.path.exists(f):
                 break
         else:
-            from ui import samplehgrcs
-
             if opts.get('global'):
-                samplehgrc = samplehgrcs['global']
+                samplehgrc = uimod.samplehgrcs['global']
             elif opts.get('local'):
-                samplehgrc = samplehgrcs['local']
+                samplehgrc = uimod.samplehgrcs['local']
             else:
-                samplehgrc = samplehgrcs['user']
+                samplehgrc = uimod.samplehgrcs['user']
 
             f = paths[0]
             fp = open(f, "w")
--- a/mercurial/hg.py	Wed Oct 08 07:45:51 2014 -0400
+++ b/mercurial/hg.py	Mon Oct 06 16:35:02 2014 -0400
@@ -9,9 +9,11 @@
 from i18n import _
 from lock import release
 from node import nullid
+
 import localrepo, bundlerepo, unionrepo, httppeer, sshpeer, statichttprepo
 import bookmarks, lock, util, extensions, error, node, scmutil, phases, url
 import cmdutil, discovery, repoview, exchange
+import ui as uimod
 import merge as mergemod
 import verify as verifymod
 import errno, os, shutil
@@ -429,18 +431,7 @@
 
         destrepo = destpeer.local()
         if destrepo:
-            template = (
-                '# You may want to set your username here if it is not set\n'
-                "# globally, or this repository requires a different\n"
-                '# username from your usual configuration. If you want to\n'
-                '# set something for all of your repositories on this\n'
-                '# computer, try running the command\n'
-                "# 'hg config --edit --global'\n"
-                '# [ui]\n'
-                '# username = Jane Doe <jdoe@example.com>\n'
-                '[paths]\n'
-                'default = %s\n'
-                )
+            template = uimod.samplehgrcs['cloned']
             fp = destrepo.opener("hgrc", "w", text=True)
             u = util.url(abspath)
             u.passwd = None
--- a/mercurial/ui.py	Wed Oct 08 07:45:51 2014 -0400
+++ b/mercurial/ui.py	Mon Oct 06 16:35:02 2014 -0400
@@ -26,6 +26,23 @@
 # progress =
 # color =""",
 
+    'cloned':
+"""# example repository config (see "hg help config" for more info)
+[paths]
+default = %s
+
+# path aliases to other clones of this repo in URLs or filesystem paths
+# (see "hg help config.paths" for more info)
+#
+# default-push = ssh://jdoe@example.net/hg/jdoes-fork
+# my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+# my-clone     = /home/jdoe/jdoes-clone
+
+[ui]
+# name and email (local to this repository, optional), e.g.
+# username = Jane Doe <jdoe@example.com>
+""",
+
     'local':
 """# example repository config (see "hg help config" for more info)
 [paths]
--- a/tests/test-default-push.t	Wed Oct 08 07:45:51 2014 -0400
+++ b/tests/test-default-push.t	Mon Oct 06 16:35:02 2014 -0400
@@ -37,6 +37,7 @@
 
 Push should push to 'default-push' when set:
 
+  $ echo '[paths]' >> b/.hg/hgrc
   $ echo 'default-push = ../c' >> b/.hg/hgrc
   $ hg --cwd b push
   pushing to $TESTTMP/c (glob)
@@ -45,4 +46,3 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-
--- a/tests/test-hgrc.t	Wed Oct 08 07:45:51 2014 -0400
+++ b/tests/test-hgrc.t	Mon Oct 06 16:35:02 2014 -0400
@@ -28,16 +28,20 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd foobar
   $ cat .hg/hgrc
-  # You may want to set your username here if it is not set
-  # globally, or this repository requires a different
-  # username from your usual configuration. If you want to
-  # set something for all of your repositories on this
-  # computer, try running the command
-  # 'hg config --edit --global'
-  # [ui]
+  # example repository config (see "hg help config" for more info)
+  [paths]
+  default = $TESTTMP/foo%bar
+  
+  # path aliases to other clones of this repo in URLs or filesystem paths
+  # (see "hg help config.paths" for more info)
+  #
+  # default-push = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-clone     = /home/jdoe/jdoes-clone
+  
+  [ui]
+  # name and email (local to this repository, optional), e.g.
   # username = Jane Doe <jdoe@example.com>
-  [paths]
-  default = $TESTTMP/foo%bar (glob)
   $ hg paths
   default = $TESTTMP/foo%bar (glob)
   $ hg showconfig
--- a/tests/test-pull-http.t	Wed Oct 08 07:45:51 2014 -0400
+++ b/tests/test-pull-http.t	Mon Oct 06 16:35:02 2014 -0400
@@ -26,16 +26,20 @@
   updating to branch default
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cat test3/.hg/hgrc
-  # You may want to set your username here if it is not set
-  # globally, or this repository requires a different
-  # username from your usual configuration. If you want to
-  # set something for all of your repositories on this
-  # computer, try running the command
-  # 'hg config --edit --global'
-  # [ui]
-  # username = Jane Doe <jdoe@example.com>
+  # example repository config (see "hg help config" for more info)
   [paths]
   default = http://foo@localhost:$HGPORT/
+  
+  # path aliases to other clones of this repo in URLs or filesystem paths
+  # (see "hg help config.paths" for more info)
+  #
+  # default-push = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-clone     = /home/jdoe/jdoes-clone
+  
+  [ui]
+  # name and email (local to this repository, optional), e.g.
+  # username = Jane Doe <jdoe@example.com>
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
 
 expect error, cloning not allowed
--- a/tests/test-revset-outgoing.t	Wed Oct 08 07:45:51 2014 -0400
+++ b/tests/test-revset-outgoing.t	Mon Oct 06 16:35:02 2014 -0400
@@ -36,16 +36,20 @@
 
   $ cd b
   $ cat .hg/hgrc
-  # You may want to set your username here if it is not set
-  # globally, or this repository requires a different
-  # username from your usual configuration. If you want to
-  # set something for all of your repositories on this
-  # computer, try running the command
-  # 'hg config --edit --global'
-  # [ui]
+  # example repository config (see "hg help config" for more info)
+  [paths]
+  default = $TESTTMP/a#stable
+  
+  # path aliases to other clones of this repo in URLs or filesystem paths
+  # (see "hg help config.paths" for more info)
+  #
+  # default-push = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-clone     = /home/jdoe/jdoes-clone
+  
+  [ui]
+  # name and email (local to this repository, optional), e.g.
   # username = Jane Doe <jdoe@example.com>
-  [paths]
-  default = $TESTTMP/a#stable (glob)
 
   $ echo red >> a
   $ hg ci -qm3
@@ -84,24 +88,29 @@
   $ echo "green = ../a#default" >> .hg/hgrc
 
   $ cat .hg/hgrc
-  # You may want to set your username here if it is not set
-  # globally, or this repository requires a different
-  # username from your usual configuration. If you want to
-  # set something for all of your repositories on this
-  # computer, try running the command
-  # 'hg config --edit --global'
-  # [ui]
+  # example repository config (see "hg help config" for more info)
+  [paths]
+  default = $TESTTMP/a#stable
+  
+  # path aliases to other clones of this repo in URLs or filesystem paths
+  # (see "hg help config.paths" for more info)
+  #
+  # default-push = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-clone     = /home/jdoe/jdoes-clone
+  
+  [ui]
+  # name and email (local to this repository, optional), e.g.
   # username = Jane Doe <jdoe@example.com>
-  [paths]
-  default = $TESTTMP/a#stable (glob)
   green = ../a#default
 
   $ hg tout green
-  comparing with $TESTTMP/a (glob)
-  searching for changes
-  3:f0461977a3db: '4' 
+  comparing with green
+  abort: repository green not found!
+  [255]
 
   $ hg tlog -r 'outgoing("green")'
-  3:f0461977a3db: '4' 
+  abort: repository green not found!
+  [255]
 
   $ cd ..
--- a/tests/test-url-rev.t	Wed Oct 08 07:45:51 2014 -0400
+++ b/tests/test-url-rev.t	Mon Oct 06 16:35:02 2014 -0400
@@ -41,16 +41,20 @@
   summary:     change a
   
   $ cat clone/.hg/hgrc
-  # You may want to set your username here if it is not set
-  # globally, or this repository requires a different
-  # username from your usual configuration. If you want to
-  # set something for all of your repositories on this
-  # computer, try running the command
-  # 'hg config --edit --global'
-  # [ui]
+  # example repository config (see "hg help config" for more info)
+  [paths]
+  default = $TESTTMP/repo#foo
+  
+  # path aliases to other clones of this repo in URLs or filesystem paths
+  # (see "hg help config.paths" for more info)
+  #
+  # default-push = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-fork      = ssh://jdoe@example.net/hg/jdoes-fork
+  # my-clone     = /home/jdoe/jdoes-clone
+  
+  [ui]
+  # name and email (local to this repository, optional), e.g.
   # username = Jane Doe <jdoe@example.com>
-  [paths]
-  default = $TESTTMP/repo#foo (glob)
 
 Changing original repo: