changeset 17342:471f30d360ea stable

clone: don't fail with --update for non-local clones (issue3578) This was broken by 5884812686f7 due to lack of test coverage. This adds a test and fixes the defect.
author Augie Fackler <raf@durin42.com>
date Wed, 08 Aug 2012 10:04:02 -0500
parents 96189d60d810
children e560ecb755fe
files mercurial/hg.py tests/test-http.t
diffstat 2 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hg.py	Mon Aug 06 12:03:07 2012 -0500
+++ b/mercurial/hg.py	Wed Aug 08 10:04:02 2012 -0500
@@ -398,7 +398,7 @@
 
             if update:
                 if update is not True:
-                    checkout = srcrepo.lookup(update)
+                    checkout = srcpeer.lookup(update)
                 for test in (checkout, 'default', 'tip'):
                     if test is None:
                         continue
--- a/tests/test-http.t	Mon Aug 06 12:03:07 2012 -0500
+++ b/tests/test-http.t	Wed Aug 08 10:04:02 2012 -0500
@@ -77,6 +77,24 @@
   adding bar
   $ cd ..
 
+clone over http with --update
+
+  $ hg clone http://localhost:$HGPORT1/ updated --update 0
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 5 changes to 5 files
+  updating to branch default
+  4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg log -r . -R updated
+  changeset:   0:8b6053c928fe
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     1
+  
+  $ rm -rf updated
+
 incoming via HTTP
 
   $ hg clone http://localhost:$HGPORT1/ --rev 0 partial
@@ -129,7 +147,7 @@
   >     if not auth:
   >         raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, 'who',
   >                 [('WWW-Authenticate', 'Basic Realm="mercurial"')])
-  >     if base64.b64decode(auth.split()[1]).split(':', 1) != ['user', 'pass']: 
+  >     if base64.b64decode(auth.split()[1]).split(':', 1) != ['user', 'pass']:
   >         raise common.ErrorResponse(common.HTTP_FORBIDDEN, 'no')
   > def extsetup():
   >     common.permhooks.insert(0, perform_authentication)
@@ -138,24 +156,24 @@
   >    --config server.preferuncompressed=True
   $ cat pid >> $DAEMON_PIDS
 
-  $ hg id http://localhost:$HGPORT2/  
+  $ hg id http://localhost:$HGPORT2/
   abort: http authorization required
   [255]
-  $ hg id http://user@localhost:$HGPORT2/ 
+  $ hg id http://user@localhost:$HGPORT2/
   abort: http authorization required
   [255]
   $ hg id http://user:pass@localhost:$HGPORT2/
   5fed3813f7f5
-  $ echo '[auth]' >> .hg/hgrc 
+  $ echo '[auth]' >> .hg/hgrc
   $ echo 'l.schemes=http' >> .hg/hgrc
   $ echo 'l.prefix=lo' >> .hg/hgrc
   $ echo 'l.username=user' >> .hg/hgrc
   $ echo 'l.password=pass' >> .hg/hgrc
-  $ hg id http://localhost:$HGPORT2/ 
+  $ hg id http://localhost:$HGPORT2/
   5fed3813f7f5
-  $ hg id http://localhost:$HGPORT2/  
+  $ hg id http://localhost:$HGPORT2/
   5fed3813f7f5
-  $ hg id http://user@localhost:$HGPORT2/ 
+  $ hg id http://user@localhost:$HGPORT2/
   5fed3813f7f5
   $ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1
   streaming all changes
@@ -164,7 +182,7 @@
   updating to branch default
   5 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-  $ hg id http://user2@localhost:$HGPORT2/ 
+  $ hg id http://user2@localhost:$HGPORT2/
   abort: http authorization required
   [255]
   $ hg id http://user:pass2@localhost:$HGPORT2/