comparison tests/test-largefiles-update.t @ 22097:7d1eac06ab2b

largefiles: drop orphan entries from lfdristat at "hg rollback" Before this patch, newly added (but not yet committed) largefiles aren't treated as unknown ("?") after "hg rollback". After "hg rollback", lfdirstate still contains "A" status entries for such largefiles, even though corresponding entries for standins are already dropped from dirstate. Such "orphan" entries in lfdirstate prevent unknown (large)files in the working directory from being listed up in "unknown" list. The code path in "if working" route of "lfilesrepo.status" below drops largefiles tracked in lfdirstate from "unknown" list: lfiles = set(lfdirstate._map) # Unknown files result[4] = set(result[4]).difference(lfiles) This patch drops orphan entries from lfdristate 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 61e526585b20
children 2fb3c1c0b4ef
comparison
equal deleted inserted replaced
22096:61e526585b20 22097:7d1eac06ab2b
105 $ hg remove large1 105 $ hg remove large1
106 $ hg forget large2 106 $ hg forget large2
107 $ echo largeX > largeX 107 $ echo largeX > largeX
108 $ hg add --large largeX 108 $ hg add --large largeX
109 $ hg commit -m 'will be rollback-ed soon' 109 $ hg commit -m 'will be rollback-ed soon'
110 $ echo largeY > largeY
111 $ hg add --large largeY
110 $ hg status -A large1 112 $ hg status -A large1
111 large1: No such file or directory 113 large1: No such file or directory
112 $ hg status -A large2 114 $ hg status -A large2
113 ? large2 115 ? large2
114 $ hg status -A largeX 116 $ hg status -A largeX
115 C largeX 117 C largeX
118 $ hg status -A largeY
119 A largeY
116 $ hg rollback 120 $ hg rollback
117 repository tip rolled back to revision 3 (undo commit) 121 repository tip rolled back to revision 3 (undo commit)
118 working directory now based on revision 3 122 working directory now based on revision 3
119 $ hg status -A large1 123 $ hg status -A large1
120 R large1 124 R large1
121 $ hg status -A large2 125 $ hg status -A large2
122 R large2 126 R large2
123 $ hg status -A largeX 127 $ hg status -A largeX
124 A largeX 128 A largeX
129 $ hg status -A largeY
130 ? largeY
125 131
126 $ cd .. 132 $ cd ..