view tests/test-convert-identity.t @ 43142:beed7ce61681

sidedatacopies: write copies information in sidedata when applicable If the format of the repository indicate it stores copies information into changeset's sidedata, then we actually write that information into sidedata at commit time. It will be put to use in later changesets. Currently, we store all field unconditionally, but that is likely to change in the future for the sake of efficiency. Differential Revision: https://phab.mercurial-scm.org/D6950
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 06 Oct 2019 23:36:51 -0400
parents a2c02877b097
children 6c56277317c2
line wrap: on
line source

Testing that convert.hg.preserve-hash=true can be used to make hg
convert from hg repo to hg repo preserve hashes, even if the
computation of the files list in commits change slightly between hg
versions.

  $ cat <<'EOF' >> "$HGRCPATH"
  > [extensions]
  > convert =
  > EOF
  $ cat <<'EOF' > changefileslist.py
  > from mercurial import (changelog, extensions)
  > def wrap(orig, clog, manifest, files, *args, **kwargs):
  >   return orig(clog, manifest, [b"a"], *args, **kwargs)
  > def extsetup(ui):
  >   extensions.wrapfunction(changelog.changelog, 'add', wrap)
  > EOF

  $ hg init repo
  $ cd repo
  $ echo a > a; hg commit -qAm a
  $ echo b > a; hg commit -qAm b
  $ hg up -qr 0; echo c > c; hg commit -qAm c
  $ hg merge -qr 1
  $ hg commit -m_ --config extensions.x=../changefileslist.py
  $ hg log -r . -T '{node|short} {files|json}\n'
  c085bbe93d59 ["a"]

Now that we have a commit with a files list that's not what the
current hg version would create, check that convert either fixes it or
keeps it depending on config:

  $ hg convert -q . ../convert
  $ hg --cwd ../convert log -r tip -T '{node|short} {files|json}\n'
  b7c4d4bbacd3 []
  $ rm -rf ../convert

  $ hg convert -q . ../convert --config convert.hg.preserve-hash=true
  $ hg --cwd ../convert log -r tip -T '{node|short} {files|json}\n'
  c085bbe93d59 ["a"]
  $ rm -rf ../convert