tests/test-convert-authormap.t
author Idan Kamara <idankk86@gmail.com>
Sun, 16 Dec 2012 23:13:02 +0200
changeset 18309 cfeab932cff7
parent 16948 a0cbbf78c31a
child 35393 4441705b7111
permissions -rw-r--r--
localrepo: don't refresh filecache entries that aren't in __dict__ We call invalidate to remove properties from __dict__ because they're possibly outdated and we'd like to check for a new version. Next time the property is accessed the filecache mechanism checks the current stat info with the one recorded at the last time the property was read, if they're different it recreates the property. Previously we refreshed the stat info on all properties in the filecache when the lock is released, including properties that are missing from __dict__. This is a problem because: l = repo.lock() repo.P # stat info S for P is recorded in _filecache <changes are made to repo.P indirectly, e.g. underlying file is replaced> # P's new stat info = S' l.release() # filecache refreshes, records S' as P's stat info At this point our filecache contains P with stat info S', but P's version is from S, which is outdated. The above happens during _rollback and strip. Currently we're wiping the filecache and forcing everything to reload from scratch which works but isn't the right solution.


  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > convert=
  > EOF

Prepare orig repo

  $ hg init orig
  $ cd orig
  $ echo foo > foo
  $ HGUSER='user name' hg ci -qAm 'foo'
  $ cd ..

Explicit --authors

  $ cat > authormap.txt <<EOF
  > user name = Long User Name
  > 
  > # comment
  > this line is ignored
  > EOF
  $ hg convert --authors authormap.txt orig new
  initializing destination new repository
  ignoring bad line in author map file authormap.txt: this line is ignored
  scanning source...
  sorting...
  converting...
  0 foo
  writing author map file $TESTTMP/new/.hg/authormap (glob)
  $ cat new/.hg/authormap
  user name=Long User Name
  $ hg -Rnew log
  changeset:   0:d89716e88087
  tag:         tip
  user:        Long User Name
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     foo
  
  $ rm -rf new

Implicit .hg/authormap

  $ hg init new
  $ mv authormap.txt new/.hg/authormap
  $ hg convert orig new
  ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored (glob)
  scanning source...
  sorting...
  converting...
  0 foo
  $ hg -Rnew log
  changeset:   0:d89716e88087
  tag:         tip
  user:        Long User Name
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     foo