# HG changeset patch # User Dirkjan Ochtman # Date 1222254609 -7200 # Node ID f82938c87b92fb9165a194984737b393eee5e1e6 # Parent e51c0f41f271f4f216de6b6a5835a083d124f26f clone: honor -r even when pulling named branches diff -r e51c0f41f271 -r f82938c87b92 mercurial/hg.py --- a/mercurial/hg.py Sat Sep 20 15:00:58 2008 +0200 +++ b/mercurial/hg.py Wed Sep 24 13:10:09 2008 +0200 @@ -20,10 +20,11 @@ '''parse url#branch, returning url, branch + revs''' if '#' not in url: - return url, (revs or None), None + return url, (revs or None), revs and revs[-1] or None - url, rev = url.split('#', 1) - return url, revs + [rev], rev + url, branch = url.split('#', 1) + checkout = revs and revs[-1] or branch + return url, revs + [branch], checkout schemes = { 'bundle': bundlerepo, @@ -110,7 +111,7 @@ else: src_repo = source origsource = source = src_repo.url() - checkout = None + checkout = rev and rev[-1] or None if dest is None: dest = defaultdest(source) @@ -245,12 +246,13 @@ if update: dest_repo.ui.status(_("updating working directory\n")) - if not checkout: + for test in (checkout, 'default', 'tip'): try: - checkout = dest_repo.lookup("default") + uprev = dest_repo.lookup(test) + break except: - checkout = dest_repo.changelog.tip() - _update(dest_repo, checkout) + continue + _update(dest_repo, uprev) return src_repo, dest_repo finally: diff -r e51c0f41f271 -r f82938c87b92 tests/test-issue1306 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-issue1306 Wed Sep 24 13:10:09 2008 +0200 @@ -0,0 +1,23 @@ +echo % initialize remote repo with branches +hg init remote +cd remote +echo a > a +hg ci -Ama +hg branch br +hg ci -Amb +echo c > c +hg ci -Amc +hg log + +cd .. +echo % try cloning -r branch +hg clone -rbr remote local1 +hg -R local1 parents + +echo % try cloning -rother clone#branch +hg clone -r0 remote#br local2 +hg -R local2 parents + +echo % try cloning -r1 clone#branch +hg clone -r1 remote#br local3 +hg -R local3 parents diff -r e51c0f41f271 -r f82938c87b92 tests/test-issue1306.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-issue1306.out Wed Sep 24 13:10:09 2008 +0200 @@ -0,0 +1,64 @@ +% initialize remote repo with branches +adding a +marked working directory as branch br +adding c +changeset: 2:1630aed6ed2b +branch: br +tag: tip +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: c + +changeset: 1:234f53e6c5ff +branch: br +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: b + +changeset: 0:cb9a9f314b8b +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: a + +% try cloning -r branch +requesting all changes +adding changesets +adding manifests +adding file changes +added 3 changesets with 2 changes to 2 files +updating working directory +2 files updated, 0 files merged, 0 files removed, 0 files unresolved +changeset: 2:1630aed6ed2b +branch: br +tag: tip +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: c + +% try cloning -rother clone#branch +requesting all changes +adding changesets +adding manifests +adding file changes +added 3 changesets with 2 changes to 2 files +updating working directory +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +changeset: 0:cb9a9f314b8b +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: a + +% try cloning -r1 clone#branch +requesting all changes +adding changesets +adding manifests +adding file changes +added 3 changesets with 2 changes to 2 files +updating working directory +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +changeset: 1:234f53e6c5ff +branch: br +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: b + diff -r e51c0f41f271 -r f82938c87b92 tests/test-url-rev.out --- a/tests/test-url-rev.out Sat Sep 20 15:00:58 2008 +0200 +++ b/tests/test-url-rev.out Wed Sep 24 13:10:09 2008 +0200 @@ -109,11 +109,12 @@ 1:cd2a86ecc814 % pull -u -r otherrev url#rev updates to rev % parents -changeset: 2:faba9097cad4 -branch: foo +changeset: 3:4cd725637392 +tag: tip +parent: 0:1f0dee641bb7 user: test date: Thu Jan 01 00:00:00 1970 +0000 -summary: new head of branch foo +summary: add bar % heads changeset: 3:4cd725637392