On 10/17/2016 05:12 PM, Mads Kiilerich wrote:
# HG changeset patch
# User Mads Kiilerich <mad...@unity3d.com>
# Date 1476717144 -7200
# Mon Oct 17 17:12:24 2016 +0200
# Node ID bba9f6bba98f82f2403aac8dc656569562690472
# Parent 92414d57a05de39864aecc625e775c693d9edb51
largefiles: fix 'deleted' files sometimes persistently appearing with R status
A code snippet that has been around since largefiles was introduced was wrong:
Standins no longer found in lfdirstate has *not* been removed -
they have probably just been deleted ... or not created.
This wrong reporting did that 'up -C' didn't undo the change and didn't sync
the two dirstates.
Instead of reporting such files as removed, propagate the deletion to the
standin file and report the file as deleted.
diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py
--- a/hgext/largefiles/reposetup.py
+++ b/hgext/largefiles/reposetup.py
@@ -164,8 +164,8 @@ def reposetup(ui, repo):
# files from lfdirstate
unsure, s = lfdirstate.status(match, [], False, listclean,
False)
- (modified, added, removed, clean) = (s.modified, s.added,
- s.removed, s.clean)
+ (modified, added, removed, deleted, clean) = (
+ s.modified, s.added, s.removed, s.deleted, s.clean)
if parentworking:
for lfile in unsure:
standin = lfutil.standin(lfile)
@@ -206,14 +206,18 @@ def reposetup(ui, repo):
removed = [lfile for lfile in removed
if lfutil.standin(lfile) in ctx1]
- # Standins no longer found in lfdirstate has been
- # removed
+ # Standins no longer found in lfdirstate have been deleted
for standin in ctx1.walk(lfutil.getstandinmatcher(self)):
lfile = lfutil.splitstandin(standin)
if not match(lfile):
continue
if lfile not in lfdirstate:
- removed.append(lfile)
+ deleted.append(lfile)
+ # Sync "largefile has been removed" back to the
Hmm ... for clarity, this should have been "deleted"
/Mads
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel