Mercurial > hg
changeset 5280:11e1e574da02
convert: mercurial_source: also search for copies in modified files
There are some corner cases where we may have a copy in a file that
isn't in the added list:
- the result of a hg copy --after --force
- after a merge across a (local) rename
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 01 Sep 2007 02:49:18 -0300 |
parents | 2dbd750b3ddd |
children | a176f9c8b26e |
files | hgext/convert/hg.py tests/test-convert-hg-source tests/test-convert-hg-source.out |
diffstat | 3 files changed, 55 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/hg.py Sat Sep 01 02:49:18 2007 -0300 +++ b/hgext/convert/hg.py Sat Sep 01 02:49:18 2007 -0300 @@ -187,12 +187,11 @@ m, a, r = self.repo.status(ctx.parents()[0].node(), ctx.node())[:3] changes = [(name, rev) for name in m + a + r] changes.sort() - return (changes, self.getcopies(ctx)) + return (changes, self.getcopies(ctx, m + a)) - def getcopies(self, ctx): - added = self.repo.status(ctx.parents()[0].node(), ctx.node())[1] + def getcopies(self, ctx, files): copies = {} - for name in added: + for name in files: try: copies[name] = ctx.filectx(name).renamed()[0] except TypeError:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-hg-source Sat Sep 01 02:49:18 2007 -0300 @@ -0,0 +1,33 @@ +#!/bin/sh + +echo "[extensions]" >> $HGRCPATH +echo "hgext.convert=" >> $HGRCPATH + +hg init orig +cd orig + +echo foo > foo +echo bar > bar +hg ci -qAm 'add foo bar' -d '0 0' + +echo >> foo +hg ci -m 'change foo' + +hg up -qC 0 +hg copy --after --force foo bar +hg copy foo baz +hg ci -m 'make bar and baz copies of foo' -d '1 0' + +hg merge +hg ci -m 'merge local copy' -d '2 0' + +hg up -C 1 +hg merge 2 +hg ci -m 'merge remote copy' -d '3 0' + +cd .. +hg convert --datesort orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' +cd new +hg out ../orig + +true
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-hg-source.out Sat Sep 01 02:49:18 2007 -0300 @@ -0,0 +1,19 @@ +merging baz and foo +1 files updated, 1 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +1 files updated, 0 files merged, 1 files removed, 0 files unresolved +merging foo and baz +1 files updated, 1 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +initializing destination new repository +scanning source... +sorting... +converting... +4 add foo bar +3 change foo +2 make bar and baz copies of foo +1 merge local copy +0 merge remote copy +comparing with ../orig +searching for changes +no changes found