tests/test-merge6.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Wed, 14 Oct 2015 02:40:04 +0900
changeset 26630 3111b45a2bbf
parent 16913 f2719b387380
child 33286 2428e8ec0793
permissions -rw-r--r--
parsers: make pack_dirstate take now in integer for consistency On recent OS, 'stat.st_mtime' has a double precision floating point value to represent nano seconds, but it is not wide enough for actual file timestamp: nowadays, only 52 - 32 = 20 bit width is available for decimal places in sec. Therefore, casting it to 'int' may cause unexpected result. See also changeset 13272104bb07 fixing issue4836 for detail. For example, changed file A may be treated as "clean" unexpectedly in steps below. "rounded now" is the value gotten by rounding via 'int(st.st_mtime)' or so. ---------------------+--------------------+------------------------ "now" | | timestamp of A (time_t) float rounded time_t| action | FS dirstate ------ ------- ------+--------------------+-------- --------------- N+.nnn N N | | --- --- | update file A | N | dirstate.normal(A) | N N+.999 N+1 N | | | dirstate.write() | N (*1) | : | | change file A | N | : | N+1.00 N+1 N+1 | | | "hg status" (*2) | N N ------ ------- ------+--------------------+-------- --------------- Timestamp N of A in dirstate isn't dropped at (*1), because "rounded now" is N+1 at that time, even if 'st_mtime' in 'time_t' is still N. Then, file A is unexpectedly treated as "clean" at (*2) in this case. For consistent handling of 'stat.st_mtime', this patch makes 'pack_dirstate()' take 'now' argument not in floating point but in integer. This patch makes 'PyArg_ParseTuple()' in 'pack_dirstate()' use format 'i' (= checking type mismatch or overflow), even though it is ensured that 'now' is in the range of 32bit signed integer by masking with '_rangemask' (= 0x7fffffff) on caller side. It should be cheaper enough than packing itself, and useful to detect that legacy code invokes 'pack_dirstate()' with 'now' in floating point value.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     1
  $ cat <<EOF > merge
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     2
  > import sys, os
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     3
  > print "merging for", os.path.basename(sys.argv[1])
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     4
  > EOF
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     5
  $ HGMERGE="python ../merge"; export HGMERGE
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
     6
13956
ffb5c09ba822 tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents: 12156
diff changeset
     7
  $ hg init A1
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     8
  $ cd A1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
     9
  $ echo This is file foo1 > foo
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    10
  $ echo This is file bar1 > bar
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    11
  $ hg add foo bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11979
diff changeset
    12
  $ hg commit -m "commit text"
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
    13
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    14
  $ cd ..
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    15
  $ hg clone A1 B1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    16
  updating to branch default
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    17
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
    18
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    19
  $ cd A1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    20
  $ rm bar
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    21
  $ hg remove bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11979
diff changeset
    22
  $ hg commit -m "commit test"
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    23
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    24
  $ cd ../B1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    25
  $ echo This is file foo22 > foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11979
diff changeset
    26
  $ hg commit -m "commit test"
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
    27
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    28
  $ cd ..
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    29
  $ hg clone A1 A2
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    30
  updating to branch default
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    31
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    32
  $ hg clone B1 B2
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    33
  updating to branch default
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    34
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
    35
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    36
  $ cd A1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    37
  $ hg pull ../B1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    38
  pulling from ../B1
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    39
  searching for changes
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    40
  adding changesets
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    41
  adding manifests
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    42
  adding file changes
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    43
  added 1 changesets with 1 changes to 1 files (+1 heads)
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    44
  (run 'hg heads' to see heads, 'hg merge' to merge)
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    45
  $ hg merge
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    46
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    47
  (branch merge, don't forget to commit)
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11979
diff changeset
    48
  $ hg commit -m "commit test"
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    49
bar should remain deleted.
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    50
  $ hg manifest --debug
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    51
  f9b0e817f6a48de3564c6b2957687c5e7297c5a0 644   foo
616
d45d1c90032e Fix zombie files in merge
maf46@burn.cl.cam.ac.uk
parents:
diff changeset
    52
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    53
  $ cd ../B2
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    54
  $ hg pull ../A2
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    55
  pulling from ../A2
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    56
  searching for changes
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    57
  adding changesets
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    58
  adding manifests
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    59
  adding file changes
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    60
  added 1 changesets with 0 changes to 0 files (+1 heads)
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    61
  (run 'hg heads' to see heads, 'hg merge' to merge)
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    62
  $ hg merge
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    63
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    64
  (branch merge, don't forget to commit)
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11979
diff changeset
    65
  $ hg commit -m "commit test"
11979
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    66
bar should remain deleted.
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    67
  $ hg manifest --debug
39fb1e4c079f tests: unify test-merge6
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 4295
diff changeset
    68
  f9b0e817f6a48de3564c6b2957687c5e7297c5a0 644   foo
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    69
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    70
  $ cd ..