changeset 24230:23438bceba04

largefiles: report the source of copied/moved largefiles in status -C Previously, the source was silently skipped because the largefile was in the list of changed files, but the standin was in the copies dictionary. The source is only displayed if the changed file is a key in the copies dictionary.
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 25 Jan 2015 02:45:49 -0500
parents f903689680e6
children cc5b46f5318d
files hgext/largefiles/overrides.py hgext/largefiles/uisetup.py tests/test-subrepo-deep-nested-change.t
diffstat 3 files changed, 32 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py	Sun Mar 08 00:04:03 2015 -0500
+++ b/hgext/largefiles/overrides.py	Sun Jan 25 02:45:49 2015 -0500
@@ -578,6 +578,15 @@
         repo.wwrite(fcd.path(), fco.data(), fco.flags())
     return 0
 
+def copiespathcopies(orig, ctx1, ctx2):
+    copies = orig(ctx1, ctx2)
+    updated = {}
+
+    for k, v in copies.iteritems():
+        updated[lfutil.splitstandin(k) or k] = lfutil.splitstandin(v) or v
+
+    return updated
+
 # Copy first changes the matchers to match standins instead of
 # largefiles.  Then it overrides util.copyfile in that function it
 # checks if the destination largefile already exists. It also keeps a
--- a/hgext/largefiles/uisetup.py	Sun Mar 08 00:04:03 2015 -0500
+++ b/hgext/largefiles/uisetup.py	Sun Jan 25 02:45:49 2015 -0500
@@ -9,7 +9,7 @@
 '''setup for largefiles extension: uisetup'''
 
 from mercurial import archival, cmdutil, commands, extensions, filemerge, hg, \
-    httppeer, merge, scmutil, sshpeer, wireproto, revset, subrepo
+    httppeer, merge, scmutil, sshpeer, wireproto, revset, subrepo, copies
 from mercurial.i18n import _
 from mercurial.hgweb import hgweb_mod, webcommands
 
@@ -37,6 +37,8 @@
     extensions.wrapfunction(cmdutil, 'remove', overrides.cmdutilremove)
     extensions.wrapfunction(cmdutil, 'forget', overrides.cmdutilforget)
 
+    extensions.wrapfunction(copies, 'pathcopies', overrides.copiespathcopies)
+
     # Subrepos call status function
     entry = extensions.wrapcommand(commands.table, 'status',
                                    overrides.overridestatus)
--- a/tests/test-subrepo-deep-nested-change.t	Sun Mar 08 00:04:03 2015 -0500
+++ b/tests/test-subrepo-deep-nested-change.t	Sun Jan 25 02:45:49 2015 -0500
@@ -419,4 +419,24 @@
   A a.dat
   A a.txt
 
+  $ hg ci -m "add a.*"
+  $ hg mv a.dat b.dat
+  $ hg mv foo/bar/abc foo/bar/def
+  $ hg status -C
+  A b.dat
+    a.dat
+  A foo/bar/def
+    foo/bar/abc
+  R a.dat
+  R foo/bar/abc
+
+  $ hg ci -m "move large and normal"
+  $ hg status -C --rev '.^' --rev .
+  A b.dat
+    a.dat
+  A foo/bar/def
+    foo/bar/abc
+  R a.dat
+  R foo/bar/abc
+
   $ cd ..