comparison tests/test-largefiles-update.t @ 22096:61e526585b20

largefiles: restore R status of removed largefiles correctly at "hg rollback" Before this patch, removed or forgotten largefiles aren't treated as removed ("R") after "hg rollback". Removed ones are treated as missing ("!") and forgotten ones are treated as clean ("C") unexpectedly. "overriderollback" uses "normallookup" to restore status in lfdirstate for largefiles other than ones not added in rollback-ed revision, but this isn't correct for removed (or forgotten) largefiles. This patch uses "lfutil.synclfdirstate" to restore "R" status of removed (or forgotten) largefiles correctly at "hg rollback". This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, lfdirstate should be rollback-ed as a part of transaction, as same as dirstate.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Mon, 11 Aug 2014 22:29:43 +0900
parents 0cb34b3991f8
children 7d1eac06ab2b
comparison
equal deleted inserted replaced
22095:cb62d77c7a01 22096:61e526585b20
97 $ cat large1 97 $ cat large1
98 large1 in #1 98 large1 in #1
99 $ cat .hglf/large1 99 $ cat .hglf/large1
100 58e24f733a964da346e2407a2bee99d9001184f5 100 58e24f733a964da346e2407a2bee99d9001184f5
101 101
102 Test that "hg rollback" restores status of largefiles correctly
103
104 $ hg update -C -q
105 $ hg remove large1
106 $ hg forget large2
107 $ echo largeX > largeX
108 $ hg add --large largeX
109 $ hg commit -m 'will be rollback-ed soon'
110 $ hg status -A large1
111 large1: No such file or directory
112 $ hg status -A large2
113 ? large2
114 $ hg status -A largeX
115 C largeX
116 $ hg rollback
117 repository tip rolled back to revision 3 (undo commit)
118 working directory now based on revision 3
119 $ hg status -A large1
120 R large1
121 $ hg status -A large2
122 R large2
123 $ hg status -A largeX
124 A largeX
125
102 $ cd .. 126 $ cd ..