largefiles: update should only create a .orig backup of a largefile once
authorMads Kiilerich <madski@unity3d.com>
Thu, 18 Apr 2013 18:56:18 +0200
changeset 21083 20b0c49c032c
parent 21082 0d67fccc0d43
child 21084 70252bdfd39c
largefiles: update should only create a .orig backup of a largefile once A .orig of a standin after the update do that a .orig of the actual largefile is created. The .orig standin was however never removed again and the largefile .orig was thus overwritten again and again. The fix: remove the standin .orig when it is used.
hgext/largefiles/lfcommands.py
tests/test-largefiles.t
--- a/hgext/largefiles/lfcommands.py	Mon Apr 07 02:12:28 2014 +0200
+++ b/hgext/largefiles/lfcommands.py	Thu Apr 18 18:56:18 2013 +0200
@@ -447,6 +447,7 @@
                 if (os.path.exists(absstandin + '.orig') and
                     os.path.exists(abslfile)):
                     shutil.copyfile(abslfile, abslfile + '.orig')
+                    util.unlinkpath(absstandin + '.orig')
                 expecthash = lfutil.readstandin(repo, lfile)
                 if (expecthash != '' and
                     (not os.path.exists(abslfile) or
--- a/tests/test-largefiles.t	Mon Apr 07 02:12:28 2014 +0200
+++ b/tests/test-largefiles.t	Thu Apr 18 18:56:18 2013 +0200
@@ -1111,6 +1111,12 @@
 
   $ echo mistake > sub2/large7
   $ hg revert sub2/large7
+  $ cat sub2/large7
+  large7
+  $ cat sub2/large7.orig
+  mistake
+  $ test ! -f .hglf/sub2/large7.orig
+
   $ hg -q update --clean -r null
   $ hg update --clean
   getting changed largefiles
@@ -1128,18 +1134,16 @@
   large7
   $ cat sub2/large7.orig
   mistake
-  $ cat .hglf/sub2/large7.orig
-  9dbfb2c79b1c40981b258c3efa1b10b03f18ad31
+  $ test ! -f .hglf/sub2/large7.orig
 
-demonstrate misfeature: .orig file is overwritten on every update -C,
-also when clean:
+verify that largefile .orig file no longer is overwritten on every update -C:
   $ hg update --clean
   getting changed largefiles
   0 largefiles updated, 0 removed
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cat sub2/large7.orig
-  large7
-  $ rm sub2/large7.orig .hglf/sub2/large7.orig
+  mistake
+  $ rm sub2/large7.orig
 
 Now "update check" is happy.
   $ hg update --check 8