##// END OF EJS Templates
largefiles: fix 'deleted' files sometimes persistently appearing with R status...
Mads Kiilerich -
r30191:328545c7 stable
parent child Browse files
Show More
@@ -164,8 +164,8 b' def reposetup(ui, repo):'
164 # files from lfdirstate
164 # files from lfdirstate
165 unsure, s = lfdirstate.status(match, [], False, listclean,
165 unsure, s = lfdirstate.status(match, [], False, listclean,
166 False)
166 False)
167 (modified, added, removed, clean) = (s.modified, s.added,
167 (modified, added, removed, deleted, clean) = (
168 s.removed, s.clean)
168 s.modified, s.added, s.removed, s.deleted, s.clean)
169 if parentworking:
169 if parentworking:
170 for lfile in unsure:
170 for lfile in unsure:
171 standin = lfutil.standin(lfile)
171 standin = lfutil.standin(lfile)
@@ -206,14 +206,18 b' def reposetup(ui, repo):'
206 removed = [lfile for lfile in removed
206 removed = [lfile for lfile in removed
207 if lfutil.standin(lfile) in ctx1]
207 if lfutil.standin(lfile) in ctx1]
208
208
209 # Standins no longer found in lfdirstate has been
209 # Standins no longer found in lfdirstate have been deleted
210 # removed
211 for standin in ctx1.walk(lfutil.getstandinmatcher(self)):
210 for standin in ctx1.walk(lfutil.getstandinmatcher(self)):
212 lfile = lfutil.splitstandin(standin)
211 lfile = lfutil.splitstandin(standin)
213 if not match(lfile):
212 if not match(lfile):
214 continue
213 continue
215 if lfile not in lfdirstate:
214 if lfile not in lfdirstate:
216 removed.append(lfile)
215 deleted.append(lfile)
216 # Sync "largefile has been removed" back to the
217 # standin. Removing a file as a side effect of
218 # running status is gross, but the alternatives (if
219 # any) are worse.
220 self.wvfs.unlink(standin)
217
221
218 # Filter result lists
222 # Filter result lists
219 result = list(result)
223 result = list(result)
@@ -237,7 +241,7 b' def reposetup(ui, repo):'
237 normals = [[fn for fn in filelist
241 normals = [[fn for fn in filelist
238 if not lfutil.isstandin(fn)]
242 if not lfutil.isstandin(fn)]
239 for filelist in result]
243 for filelist in result]
240 lfstatus = (modified, added, removed, s.deleted, [], [],
244 lfstatus = (modified, added, removed, deleted, [], [],
241 clean)
245 clean)
242 result = [sorted(list1 + list2)
246 result = [sorted(list1 + list2)
243 for (list1, list2) in zip(normals, lfstatus)]
247 for (list1, list2) in zip(normals, lfstatus)]
@@ -751,30 +751,22 b' added:'
751 $ hg up -Cr "8" --config extensions.crashupdatelfiles=../crashupdatelfiles.py
751 $ hg up -Cr "8" --config extensions.crashupdatelfiles=../crashupdatelfiles.py
752 [7]
752 [7]
753 Check large1 content and status ... and that update will undo modifications:
753 Check large1 content and status ... and that update will undo modifications:
754 BUG: large is R
755 $ cat large1
754 $ cat large1
756 large1 in #3
755 large1 in #3
757 $ hg st
756 $ hg st
758 M large1
757 M large1
759 R largeX
758 ! largeX
760 $ hg up -Cr .
759 $ hg up -Cr .
761 getting changed largefiles
760 getting changed largefiles
762 1 largefiles updated, 0 removed
761 2 largefiles updated, 0 removed
763 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
762 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
764 $ cat large1
763 $ cat large1
765 manually modified before 'hg transplant --continue'
764 manually modified before 'hg transplant --continue'
766 $ hg st
765 $ hg st
767 R largeX
766 Force largefiles rehashing and check that all changes have been caught by
768 Force largefiles rehashing and check again - which makes it realize that largeX
767 status and update:
769 not has been removed but just doesn't exist:
770 $ rm .hg/largefiles/dirstate
768 $ rm .hg/largefiles/dirstate
771 $ hg st
769 $ hg st
772 ! largeX
773 $ hg up -Cr .
774 getting changed largefiles
775 1 largefiles updated, 0 removed
776 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
777 $ hg st
778
770
779 $ cd ..
771 $ cd ..
780
772
General Comments 0
You need to be logged in to leave comments. Login now