[PATCH 7 of 8] clone: add --abandoned flag
Martin Geisler
mg at lazybytes.net
Wed Jun 1 11:42:53 CDT 2011
# HG changeset patch
# User Martin Geisler <mg at lazybytes.net>
# Date 1306946445 -7200
# Node ID ff0d35c68b063db94e29809ac52281f099b9e365
# Parent 756c1fbbecb6fe8ef798f8063ee95b738d47f8b7
clone: add --abandoned flag
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -967,6 +967,8 @@
('u', 'updaterev', '', _('revision, tag or branch to check out'), _('REV')),
('r', 'rev', [], _('include the specified changeset'), _('REV')),
('b', 'branch', [], _('clone only the specified branch'), _('BRANCH')),
+ ('', 'abandoned', False, _('include abandoned changesets'
+ '(default for local clones)')),
('', 'pull', None, _('use pull protocol to copy metadata')),
('', 'uncompressed', None, _('use uncompressed transfer (fast over LAN)')),
] + remoteopts,
@@ -1043,7 +1045,8 @@
stream=opts.get('uncompressed'),
rev=opts.get('rev'),
update=opts.get('updaterev') or not opts.get('noupdate'),
- branch=opts.get('branch'))
+ branch=opts.get('branch'),
+ abandoned=opts.get('abandoned'))
return r is None
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -170,7 +170,7 @@
_update(r, uprev)
def clone(ui, source, dest=None, pull=False, rev=None, update=True,
- stream=False, branch=None):
+ stream=False, branch=None, abandoned=False):
"""Make a copy of an existing repository.
Create a copy of an existing repository in a new directory. The
@@ -325,9 +325,10 @@
revs = [srcrepo.lookup(r) for r in rev]
checkout = revs[0]
if destrepo.local():
- destrepo.clone(srcrepo, heads=revs, stream=stream)
+ destrepo.clone(srcrepo, heads=revs, stream=stream,
+ abandoned=abandoned)
elif srcrepo.local():
- srcrepo.push(destrepo, revs=revs)
+ srcrepo.push(destrepo, revs=revs, abandoned=abandoned)
else:
raise util.Abort(_("clone from remote to remote not supported"))
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -2010,7 +2010,7 @@
finally:
lock.release()
- def clone(self, remote, heads=[], stream=False):
+ def clone(self, remote, heads=[], stream=False, abandoned=False):
'''clone remote repository.
keyword arguments:
@@ -2036,7 +2036,7 @@
# if we support it, stream in and adjust our requirements
if not streamreqs - self.supportedformats:
return self.stream_in(remote, streamreqs)
- return self.pull(remote, heads)
+ return self.pull(remote, heads, abandoned=abandoned)
def pushkey(self, namespace, key, old, new):
self.hook('prepushkey', throw=True, namespace=namespace, key=key,
diff --git a/tests/test-abandoned.t b/tests/test-abandoned.t
--- a/tests/test-abandoned.t
+++ b/tests/test-abandoned.t
@@ -411,11 +411,62 @@
0 54dbcd775ef0 init
$ hg rollback -q
+hg clone
+========
+
+ $ cd ..
+ $ hg clone repo hardlink-clone
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R hardlink-clone log --abandoned
+ 2 339976ff5010 abandoned
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
+ $ rm -r hardlink-clone
+
+ $ hg clone --pull repo pull-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R pull-clone log --abandoned
+ 0 54dbcd775ef0 init
+ $ rm -r pull-clone
+
+ $ hg clone ssh://user@dummy/repo ssh-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R ssh-clone log --abandoned
+ 0 54dbcd775ef0 init
+ $ rm -r ssh-clone
+
+ $ hg clone --abandoned ssh://user@dummy/repo full-ssh-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 2 changes to 2 files
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R full-ssh-clone log --abandoned
+ 2 339976ff5010 abandoned
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
+ $ rm -r full-ssh-clone
+
################################################################
Create non-abandoned child changeset y on top of the abandoned
changeset x. This makes changeset 2 irrelevant for x.
- $ cd ../repo
+ $ cd repo
$ touch y
$ hg commit -A -m y y
created new head
@@ -730,3 +781,56 @@
1 0b00c28422ee x
0 54dbcd775ef0 init
$ hg rollback -q
+
+hg clone
+========
+
+ $ cd ..
+ $ hg clone repo hardlink-clone
+ updating to branch default
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R hardlink-clone log --abandoned
+ 3 4936e3be10e0 y
+ 2 339976ff5010 abandoned
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
+
+ $ hg clone --pull repo pull-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 3 changes to 3 files
+ updating to branch default
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R pull-clone log --abandoned
+ 2 4936e3be10e0 y
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
+
+ $ hg clone ssh://user@dummy/repo ssh-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 3 changes to 3 files
+ updating to branch default
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R ssh-clone log --abandoned
+ 2 4936e3be10e0 y
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
+
+ $ hg clone --abandoned ssh://user@dummy/repo full-ssh-clone
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 3 changes to 3 files (+1 heads)
+ updating to branch default
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R full-ssh-clone log --abandoned
+ 3 4936e3be10e0 y
+ 2 339976ff5010 abandoned
+ 1 0b00c28422ee x
+ 0 54dbcd775ef0 init
diff --git a/tests/test-debugcomplete.t b/tests/test-debugcomplete.t
--- a/tests/test-debugcomplete.t
+++ b/tests/test-debugcomplete.t
@@ -189,7 +189,7 @@
$ hg debugcommands
add: include, exclude, subrepos, dry-run
annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, include, exclude
- clone: noupdate, updaterev, rev, branch, pull, uncompressed, ssh, remotecmd, insecure
+ clone: noupdate, updaterev, rev, branch, abandoned, pull, uncompressed, ssh, remotecmd, insecure
commit: addremove, close-branch, include, exclude, message, logfile, date, user
diff: rev, change, text, git, nodates, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, include, exclude, subrepos
export: output, switch-parent, rev, text, git, nodates
More information about the Mercurial-devel
mailing list