Mercurial > hg
view tests/test-copy.t @ 39270:37e56607cbb9
lfs: add a progress bar when searching for blobs to upload
The search itself can take an extreme amount of time if there are a lot of
revisions involved. I've got a local repo that took 6 minutes to push 1850
commits, and 60% of that time was spent here (there are ~70K files):
\ 58.1% wrapper.py: extractpointers line 297: pointers = extractpointers(...
| 57.7% wrapper.py: pointersfromctx line 352: for p in pointersfromctx(ct...
| 57.4% wrapper.py: pointerfromctx line 397: p = pointerfromctx(ctx, f, ...
\ 38.7% context.py: __contains__ line 368: if f not in ctx:
| 38.7% util.py: __get__ line 82: return key in self._manifest
| 38.7% context.py: _manifest line 1416: result = self.func(obj)
| 38.7% manifest.py: read line 472: return self._manifestctx.re...
\ 25.6% revlog.py: revision line 1562: text = rl.revision(self._node)
\ 12.8% revlog.py: _chunks line 2217: bins = self._chunks(chain, ...
| 12.0% revlog.py: decompressline 2112: ladd(decomp(buffer(data, ch...
\ 7.8% revlog.py: checkhash line 2232: self.checkhash(text, node, ...
| 7.8% revlog.py: hash line 2315: if node != self.hash(text, ...
| 7.8% revlog.py: hash line 2242: return hash(text, p1, p2)
\ 12.0% manifest.py: __init__ line 1565: self._data = manifestdict(t...
\ 16.8% context.py: filenode line 378: if not _islfs(fctx.filelog(...
| 15.7% util.py: __get__ line 706: return self._filelog
| 14.8% context.py: _filelog line 1416: result = self.func(obj)
| 14.8% localrepo.py: file line 629: return self._repo.file(self...
| 14.8% filelog.py: __init__ line 1134: return filelog.filelog(self...
| 14.5% revlog.py: __init__ line 24: censorable=True)
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 24 Aug 2018 17:45:46 -0400 |
parents | cbc4425e81b5 |
children | cde75233c415 |
line wrap: on
line source
$ mkdir part1 $ cd part1 $ hg init $ echo a > a $ hg add a $ hg commit -m "1" $ hg status $ hg copy a b $ hg --config ui.portablefilenames=abort copy a con.xml abort: filename contains 'con', which is reserved on Windows: con.xml [255] $ hg status A b $ hg sum parent: 0:c19d34741b0a tip 1 branch: default commit: 1 copied update: (current) phases: 1 draft $ hg --debug commit -m "2" committing files: b b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 committing manifest committing changelog updating the branch cache committed changeset 1:93580a2c28a50a56f63526fb305067e6fbf739c4 we should see two history entries $ hg history -v changeset: 1:93580a2c28a5 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 files: b description: 2 changeset: 0:c19d34741b0a user: test date: Thu Jan 01 00:00:00 1970 +0000 files: a description: 1 we should see one log entry for a $ hg log a changeset: 0:c19d34741b0a user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: 1 this should show a revision linked to changeset 0 $ hg debugindex a rev linkrev nodeid p1 p2 0 0 b789fdd96dc2 000000000000 000000000000 we should see one log entry for b $ hg log b changeset: 1:93580a2c28a5 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: 2 this should show a revision linked to changeset 1 $ hg debugindex b rev linkrev nodeid p1 p2 0 1 37d9b5d994ea 000000000000 000000000000 this should show the rename information in the metadata $ hg debugdata b 0 | head -3 | tail -2 copy: a copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 #if reporevlogstore $ md5sum.py .hg/store/data/b.i 44913824c8f5890ae218f9829535922e .hg/store/data/b.i #endif $ hg cat b > bsum $ md5sum.py bsum 60b725f10c9c85c70d97880dfe8191b3 bsum $ hg cat a > asum $ md5sum.py asum 60b725f10c9c85c70d97880dfe8191b3 asum $ hg verify checking changesets checking manifests crosschecking files in changesets and manifests checking files 2 files, 2 changesets, 2 total revisions $ cd .. $ mkdir part2 $ cd part2 $ hg init $ echo foo > foo should fail - foo is not managed $ hg mv foo bar foo: not copying - file is not managed abort: no files to copy [255] $ hg st -A ? foo $ hg add foo dry-run; print a warning that this is not a real copy; foo is added $ hg mv --dry-run foo bar foo has not been committed yet, so no copy data will be stored for bar. $ hg st -A A foo should print a warning that this is not a real copy; bar is added $ hg mv foo bar foo has not been committed yet, so no copy data will be stored for bar. $ hg st -A A bar should print a warning that this is not a real copy; foo is added $ hg cp bar foo bar has not been committed yet, so no copy data will be stored for foo. $ hg rm -f bar $ rm bar $ hg st -A A foo $ hg commit -m1 moving a missing file $ rm foo $ hg mv foo foo3 foo: deleted in working directory foo3 does not exist! $ hg up -qC . copy --after to a nonexistent target filename $ hg cp -A foo dummy foo: not recording copy - dummy does not exist dry-run; should show that foo is clean $ hg copy --dry-run foo bar $ hg st -A C foo should show copy $ hg copy foo bar $ hg st -C A bar foo shouldn't show copy $ hg commit -m2 $ hg st -C should match $ hg debugindex foo rev linkrev nodeid p1 p2 0 0 2ed2a3912a0b 000000000000 000000000000 $ hg debugrename bar bar renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd $ echo bleah > foo $ echo quux > bar $ hg commit -m3 should not be renamed $ hg debugrename bar bar not renamed $ hg copy -f foo bar should show copy $ hg st -C M bar foo XXX: filtering lfilesrepo.status() in 3.3-rc causes the copy source to not be displayed. $ hg st -C --config extensions.largefiles= The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) M bar foo $ hg commit -m3 should show no parents for tip $ hg debugindex bar rev linkrev nodeid p1 p2 0 1 7711d36246cc 000000000000 000000000000 1 2 bdf70a2b8d03 7711d36246cc 000000000000 2 3 b2558327ea8d 000000000000 000000000000 should match $ hg debugindex foo rev linkrev nodeid p1 p2 0 0 2ed2a3912a0b 000000000000 000000000000 1 2 dd12c926cf16 2ed2a3912a0b 000000000000 $ hg debugrename bar bar renamed from foo:dd12c926cf165e3eb4cf87b084955cb617221c17 should show no copies $ hg st -C copy --after on an added file $ cp bar baz $ hg add baz $ hg cp -A bar baz $ hg st -C A baz bar foo was clean: $ hg st -AC foo C foo Trying to copy on top of an existing file fails, $ hg copy -A bar foo foo: not overwriting - file already committed (hg copy --after --force to replace the file by recording a copy) same error without the --after, so the user doesn't have to go through two hints: $ hg copy bar foo foo: not overwriting - file already committed (hg copy --force to replace the file by recording a copy) but it's considered modified after a copy --after --force $ hg copy -Af bar foo $ hg st -AC foo M foo bar The hint for a file that exists but is not in file history doesn't mention --force: $ touch xyzzy $ hg cp bar xyzzy xyzzy: not overwriting - file exists (hg copy --after to record the copy) $ cd ..