2015-10-19 11:48:02 +03:00
|
|
|
# enable bundle2 in advance
|
|
|
|
|
|
|
|
$ cat << EOF >> $HGRCPATH
|
|
|
|
> [format]
|
|
|
|
> usegeneraldelta=yes
|
|
|
|
> EOF
|
2012-06-04 23:09:54 +04:00
|
|
|
|
|
|
|
$ mkdir part1
|
|
|
|
$ cd part1
|
|
|
|
|
2010-08-12 17:31:40 +04:00
|
|
|
$ hg init
|
|
|
|
$ echo a > a
|
|
|
|
$ hg add a
|
2010-09-03 01:22:51 +04:00
|
|
|
$ hg commit -m "1"
|
2010-08-12 17:31:40 +04:00
|
|
|
$ hg status
|
|
|
|
$ hg copy a b
|
2011-04-19 14:42:53 +04:00
|
|
|
$ hg --config ui.portablefilenames=abort copy a con.xml
|
2017-07-27 06:47:54 +03:00
|
|
|
abort: filename contains 'con', which is reserved on Windows: con.xml
|
2011-04-19 14:42:53 +04:00
|
|
|
[255]
|
2010-08-12 17:31:40 +04:00
|
|
|
$ hg status
|
|
|
|
A b
|
|
|
|
$ hg sum
|
2010-09-03 01:22:51 +04:00
|
|
|
parent: 0:c19d34741b0a tip
|
2010-08-12 17:31:40 +04:00
|
|
|
1
|
|
|
|
commit: 1 copied
|
2015-05-29 23:23:58 +03:00
|
|
|
phases: 1 draft
|
2010-09-03 01:22:51 +04:00
|
|
|
$ hg --debug commit -m "2"
|
2014-04-18 15:33:20 +04:00
|
|
|
committing files:
|
2010-08-12 17:31:40 +04:00
|
|
|
b
|
|
|
|
b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
|
2014-04-18 15:33:20 +04:00
|
|
|
committing manifest
|
|
|
|
committing changelog
|
2010-09-03 01:22:51 +04:00
|
|
|
committed changeset 1:93580a2c28a50a56f63526fb305067e6fbf739c4
|
2010-08-12 17:31:40 +04:00
|
|
|
|
|
|
|
we should see two history entries
|
|
|
|
|
|
|
|
$ hg history -v
|
2010-09-03 01:22:51 +04:00
|
|
|
changeset: 1:93580a2c28a5
|
2010-08-12 17:31:40 +04:00
|
|
|
tag: tip
|
|
|
|
user: test
|
2010-09-03 01:22:51 +04:00
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
2010-08-12 17:31:40 +04:00
|
|
|
files: b
|
|
|
|
description:
|
|
|
|
2
|
|
|
|
|
|
|
|
|
2010-09-03 01:22:51 +04:00
|
|
|
changeset: 0:c19d34741b0a
|
2010-08-12 17:31:40 +04:00
|
|
|
user: test
|
2010-09-03 01:22:51 +04:00
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
2010-08-12 17:31:40 +04:00
|
|
|
files: a
|
|
|
|
description:
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
we should see one log entry for a
|
|
|
|
|
|
|
|
$ hg log a
|
2010-09-03 01:22:51 +04:00
|
|
|
changeset: 0:c19d34741b0a
|
2010-08-12 17:31:40 +04:00
|
|
|
user: test
|
2010-09-03 01:22:51 +04:00
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
2010-08-12 17:31:40 +04:00
|
|
|
summary: 1
|
|
|
|
|
|
|
|
|
|
|
|
this should show a revision linked to changeset 0
|
|
|
|
|
2011-05-04 15:37:41 +04:00
|
|
|
$ hg debugindex a
|
2012-07-12 02:03:10 +04:00
|
|
|
rev offset length ..... linkrev nodeid p1 p2 (re)
|
|
|
|
0 0 3 ..... 0 b789fdd96dc2 000000000000 000000000000 (re)
|
2010-08-12 17:31:40 +04:00
|
|
|
|
|
|
|
we should see one log entry for b
|
|
|
|
|
|
|
|
$ hg log b
|
2010-09-03 01:22:51 +04:00
|
|
|
changeset: 1:93580a2c28a5
|
2010-08-12 17:31:40 +04:00
|
|
|
tag: tip
|
|
|
|
user: test
|
2010-09-03 01:22:51 +04:00
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
2010-08-12 17:31:40 +04:00
|
|
|
summary: 2
|
|
|
|
|
|
|
|
|
|
|
|
this should show a revision linked to changeset 1
|
|
|
|
|
2011-05-04 15:37:41 +04:00
|
|
|
$ hg debugindex b
|
2012-07-12 02:03:10 +04:00
|
|
|
rev offset length ..... linkrev nodeid p1 p2 (re)
|
|
|
|
0 0 65 ..... 1 37d9b5d994ea 000000000000 000000000000 (re)
|
2010-08-12 17:31:40 +04:00
|
|
|
|
|
|
|
this should show the rename information in the metadata
|
|
|
|
|
2011-05-04 15:37:41 +04:00
|
|
|
$ hg debugdata b 0 | head -3 | tail -2
|
2010-08-12 17:31:40 +04:00
|
|
|
copy: a
|
|
|
|
copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
|
|
|
|
|
2015-06-08 22:44:30 +03:00
|
|
|
$ md5sum.py .hg/store/data/b.i
|
2015-10-19 11:48:02 +03:00
|
|
|
44913824c8f5890ae218f9829535922e .hg/store/data/b.i
|
2010-08-12 17:31:40 +04:00
|
|
|
$ hg cat b > bsum
|
2015-06-08 22:44:30 +03:00
|
|
|
$ md5sum.py bsum
|
2010-08-12 17:31:40 +04:00
|
|
|
60b725f10c9c85c70d97880dfe8191b3 bsum
|
|
|
|
$ hg cat a > asum
|
2015-06-08 22:44:30 +03:00
|
|
|
$ md5sum.py asum
|
2010-08-12 17:31:40 +04:00
|
|
|
60b725f10c9c85c70d97880dfe8191b3 asum
|
|
|
|
$ hg verify
|
|
|
|
checking changesets
|
|
|
|
checking manifests
|
|
|
|
crosschecking files in changesets and manifests
|
|
|
|
checking files
|
|
|
|
2 files, 2 changesets, 2 total revisions
|
2012-06-04 23:09:54 +04:00
|
|
|
|
|
|
|
$ 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
|
2015-03-17 16:47:08 +03:00
|
|
|
foo: deleted in working directory
|
2012-06-04 23:09:54 +04:00
|
|
|
foo3 does not exist!
|
|
|
|
$ hg up -qC .
|
|
|
|
|
2012-08-18 00:58:18 +04:00
|
|
|
copy --after to a nonexistent target filename
|
2012-06-04 23:09:54 +04:00
|
|
|
$ 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
|
2012-07-12 02:03:10 +04:00
|
|
|
rev offset length ..... linkrev nodeid p1 p2 (re)
|
|
|
|
0 0 5 ..... 0 2ed2a3912a0b 000000000000 000000000000 (re)
|
2012-06-04 23:09:54 +04:00
|
|
|
$ 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
|
largefiles: revert to lfilesrepo.status() being an unfiltered method
This effectively reverts 9fc565fa1621, which caused some normal file copies to
not be displayed as copies. Other normal file copies could be displayed- the
exact reason isn't clear. This also adds two tests that were failing prior to
this backout, so that this can be sorted out next cycle.
The difference between copy cases that worked and those that didn't seemed to be
in copies.pathcopies(). When largefiles isn't enabled for the changed test, or
lfstatus is not set in the commands.status() override, 'y.ancestor(x) == x'.
That wasn't true otherwise, which fell through to the _chain() method. In this
case, the copy is removed in the criss cross loop.
'y.ancestor(x)' returns a context.changectx type, while 'x' is a lfilesctx type
in the failing case. I tried adding the ancestor method to the lfilesctx class
to change the type of the ancestor context, however the context when printed as
a string then gains a '+'. This points to it being a context.committablectx,
which clearly isn't correct for an ancestor. Possibly the problem is the
lfilesctx needs to subclass context.committablectx in some cases, but
context.changectx in others, within the same invocation? I'm not sure how to
pull that off, and backing out this change is safer during the freeze.
As to the status changing when a path is specified, I haven't looked into it
yet.
2015-01-26 06:55:10 +03:00
|
|
|
|
2012-06-04 23:09:54 +04:00
|
|
|
$ hg commit -m3
|
|
|
|
|
|
|
|
should show no parents for tip
|
|
|
|
$ hg debugindex bar
|
2012-07-12 02:03:10 +04:00
|
|
|
rev offset length ..... linkrev nodeid p1 p2 (re)
|
|
|
|
0 0 69 ..... 1 7711d36246cc 000000000000 000000000000 (re)
|
|
|
|
1 69 6 ..... 2 bdf70a2b8d03 7711d36246cc 000000000000 (re)
|
2014-11-12 08:41:12 +03:00
|
|
|
2 75 71 ..... 3 b2558327ea8d 000000000000 000000000000 (re)
|
2012-06-04 23:09:54 +04:00
|
|
|
should match
|
|
|
|
$ hg debugindex foo
|
2012-07-12 02:03:10 +04:00
|
|
|
rev offset length ..... linkrev nodeid p1 p2 (re)
|
|
|
|
0 0 5 ..... 0 2ed2a3912a0b 000000000000 000000000000 (re)
|
|
|
|
1 5 7 ..... 2 dd12c926cf16 2ed2a3912a0b 000000000000 (re)
|
2012-06-04 23:09:54 +04:00
|
|
|
$ 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
|
2016-09-20 00:14:43 +03:00
|
|
|
Trying to copy on top of an existing file fails,
|
|
|
|
$ hg copy -A bar foo
|
2016-09-20 00:15:39 +03:00
|
|
|
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)
|
2012-06-04 23:09:54 +04:00
|
|
|
but it's considered modified after a copy --after --force
|
|
|
|
$ hg copy -Af bar foo
|
|
|
|
$ hg st -AC foo
|
|
|
|
M foo
|
|
|
|
bar
|
2016-09-20 00:15:39 +03:00
|
|
|
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)
|
2012-06-11 03:40:51 +04:00
|
|
|
|
|
|
|
$ cd ..
|