view tests/test-convert-datesort.t @ 35168:b175e54c1103 stable

largefiles: pay attention to dropped standin files when updating largefiles Previously, the largefile for a dropped standin would be deleted here, and then restored from the cache. This had the effect of clobbering uncommitted changes if a revert caused the file to be forgotten, which is not what happens with a normal file. Now the removal and update is skipped for dropped largefiles, and the corresponding standin is deleted from disk. This was noticed when working on issue5738 because the forgotten standin files were left behind, and that changes the behavior of the next rename to that directory. My first attempt was to cleanup the standins before calling this. That failed, because this function deletes the largefile if the corresponding standin is missing. This function is called by the revert command, merge (and therefore update), and patch, via the scmutil.marktouched() override. So it should be pretty narrow in scope. I didn't mark issue5738 as fixed because the move related issues can still happen if the main tree and the .hglf subtree get out of sync somehow. I don't see an easy fix for that, but that should be an edge case. If whoever queues this thinks it is good enough to close out the bug and can cram it into the summary, go for it.
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 12 Nov 2017 23:45:14 -0500
parents 701df761aa94
children
line wrap: on
line source


  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > convert=
  > EOF
  $ hg init t
  $ cd t
  $ echo a >> a
  $ hg ci -Am a0 -d '1 0'
  adding a
  $ hg branch brancha
  marked working directory as branch brancha
  (branches are permanent and global, did you want a bookmark?)
  $ echo a >> a
  $ hg ci -m a1 -d '2 0'
  $ echo a >> a
  $ hg ci -m a2 -d '3 0'
  $ echo a >> a
  $ hg ci -m a3 -d '4 0'
  $ hg up -C 0
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg branch branchb
  marked working directory as branch branchb
  $ echo b >> b
  $ hg ci -Am b0 -d '6 0'
  adding b
  $ hg up -C brancha
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo a >> a
  $ hg ci -m a4 -d '5 0'
  $ echo a >> a
  $ hg ci -m a5 -d '7 0'
  $ echo a >> a
  $ hg ci -m a6 -d '8 0'
  $ hg up -C branchb
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo b >> b
  $ hg ci -m b1 -d '9 0'
  $ hg up -C 0
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo c >> c
  $ hg branch branchc
  marked working directory as branch branchc
  $ hg ci -Am c0 -d '10 0'
  adding c
  $ hg up -C brancha
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ hg ci --close-branch -m a7x -d '11 0'
  $ hg up -C branchb
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg ci --close-branch -m b2x -d '12 0'
  $ hg up -C branchc
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ hg merge branchb
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg ci -m c1 -d '13 0'
  $ cd ..

convert with datesort

  $ hg convert --datesort t t-datesort
  initializing destination t-datesort repository
  scanning source...
  sorting...
  converting...
  12 a0
  11 a1
  10 a2
  9 a3
  8 a4
  7 b0
  6 a5
  5 a6
  4 b1
  3 c0
  2 a7x
  1 b2x
  0 c1

graph converted repo

  $ hg -R t-datesort log -G --template '{rev} "{desc}"\n'
  o    12 "c1"
  |\
  | _  11 "b2x"
  | |
  | | _  10 "a7x"
  | | |
  o | |  9 "c0"
  | | |
  | o |  8 "b1"
  | | |
  | | o  7 "a6"
  | | |
  | | o  6 "a5"
  | | |
  | o |  5 "b0"
  |/ /
  | o  4 "a4"
  | |
  | o  3 "a3"
  | |
  | o  2 "a2"
  | |
  | o  1 "a1"
  |/
  o  0 "a0"
  

convert with datesort (default mode)

  $ hg convert t t-sourcesort
  initializing destination t-sourcesort repository
  scanning source...
  sorting...
  converting...
  12 a0
  11 a1
  10 a2
  9 a3
  8 b0
  7 a4
  6 a5
  5 a6
  4 b1
  3 c0
  2 a7x
  1 b2x
  0 c1

graph converted repo

  $ hg -R t-sourcesort log -G --template '{rev} "{desc}"\n'
  o    12 "c1"
  |\
  | _  11 "b2x"
  | |
  | | _  10 "a7x"
  | | |
  o | |  9 "c0"
  | | |
  | o |  8 "b1"
  | | |
  | | o  7 "a6"
  | | |
  | | o  6 "a5"
  | | |
  | | o  5 "a4"
  | | |
  | o |  4 "b0"
  |/ /
  | o  3 "a3"
  | |
  | o  2 "a2"
  | |
  | o  1 "a1"
  |/
  o  0 "a0"
  

convert with closesort

  $ hg convert --closesort t t-closesort
  initializing destination t-closesort repository
  scanning source...
  sorting...
  converting...
  12 a0
  11 a1
  10 a2
  9 a3
  8 b0
  7 a4
  6 a5
  5 a6
  4 a7x
  3 b1
  2 b2x
  1 c0
  0 c1

graph converted repo

  $ hg -R t-closesort log -G --template '{rev} "{desc}"\n'
  o    12 "c1"
  |\
  | o  11 "c0"
  | |
  _ |  10 "b2x"
  | |
  o |  9 "b1"
  | |
  | | _  8 "a7x"
  | | |
  | | o  7 "a6"
  | | |
  | | o  6 "a5"
  | | |
  | | o  5 "a4"
  | | |
  o | |  4 "b0"
  |/ /
  | o  3 "a3"
  | |
  | o  2 "a2"
  | |
  | o  1 "a1"
  |/
  o  0 "a0"