mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
ec0ae429ed
The value of the dirstate date field cannot be used in tests and we thus have to use debugdirstate with --nodate. It is however still very helpful to be able to see whether the date field has been set or still is unset. The absence of that information made it hard to debug some largefile dirstate issues. This change _could_ make the test suite more unstable ... but that would be places where the test suite or the code should be made more stable. (Note: 'unset' with the magic negative sizes is reliable. 'unset' for normal sizes would probably not be reliable, but there is no such occurrences in the test suite and it should thus be reliable.) This output wastes more horizontal space in the --nodate output, but it also makes things simpler that the output format always is the same. It is just a debug command so let's keep it simple.
115 lines
2.1 KiB
Perl
115 lines
2.1 KiB
Perl
$ hg init
|
|
|
|
$ echo foo > foo
|
|
$ echo bar > bar
|
|
$ hg ci -qAm 'add foo bar'
|
|
|
|
$ echo foo2 >> foo
|
|
$ echo bleh > bar
|
|
$ hg ci -m 'change foo bar'
|
|
|
|
$ hg up -qC 0
|
|
$ hg mv foo foo1
|
|
$ echo foo1 > foo1
|
|
$ hg cat foo >> foo1
|
|
$ hg ci -m 'mv foo foo1'
|
|
created new head
|
|
|
|
$ hg merge
|
|
merging foo1 and foo to foo1
|
|
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
|
|
$ hg debugstate --nodates
|
|
m 0 -2 unset bar
|
|
m 0 -2 unset foo1
|
|
copy: foo -> foo1
|
|
|
|
$ hg st -q
|
|
M bar
|
|
M foo1
|
|
|
|
|
|
Removing foo1 and bar:
|
|
|
|
$ cp foo1 F
|
|
$ cp bar B
|
|
$ hg rm -f foo1 bar
|
|
|
|
$ hg debugstate --nodates
|
|
r 0 -1 set bar
|
|
r 0 -1 set foo1
|
|
copy: foo -> foo1
|
|
|
|
$ hg st -qC
|
|
R bar
|
|
R foo1
|
|
|
|
|
|
Re-adding foo1 and bar:
|
|
|
|
$ cp F foo1
|
|
$ cp B bar
|
|
$ hg add -v foo1 bar
|
|
adding bar
|
|
adding foo1
|
|
|
|
$ hg debugstate --nodates
|
|
n 0 -2 unset bar
|
|
n 0 -2 unset foo1
|
|
copy: foo -> foo1
|
|
|
|
$ hg st -qC
|
|
M bar
|
|
M foo1
|
|
foo
|
|
|
|
|
|
Reverting foo1 and bar:
|
|
|
|
$ hg revert -vr . foo1 bar
|
|
saving current version of bar as bar.orig
|
|
reverting bar
|
|
saving current version of foo1 as foo1.orig
|
|
reverting foo1
|
|
|
|
$ hg debugstate --nodates
|
|
n 0 -2 unset bar
|
|
n 0 -2 unset foo1
|
|
copy: foo -> foo1
|
|
|
|
$ hg st -qC
|
|
M bar
|
|
M foo1
|
|
foo
|
|
|
|
$ hg diff
|
|
|
|
Merge should not overwrite local file that is untracked after remove
|
|
|
|
$ rm *
|
|
$ hg up -qC
|
|
$ hg rm bar
|
|
$ hg ci -m 'remove bar'
|
|
$ echo 'memories of buried pirate treasure' > bar
|
|
$ hg merge
|
|
bar: untracked file differs
|
|
abort: untracked files in working directory differ from files in requested revision
|
|
[255]
|
|
$ cat bar
|
|
memories of buried pirate treasure
|
|
|
|
Those who use force will lose
|
|
|
|
$ hg merge -f
|
|
remote changed bar which local deleted
|
|
use (c)hanged version or leave (d)eleted? c
|
|
merging foo1 and foo to foo1
|
|
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
$ cat bar
|
|
bleh
|
|
$ hg st
|
|
M bar
|
|
M foo1
|