view tests/test-phase-archived.t @ 50440:3a2df812e1c7

pull: add --remote-hidden option and pass it through peer creation This option will allow to pull changesets that are hidden on the remote. This is useful when looking into a changeset’s evolution history, resolving evolution instability or mirroring a repository. The option is best effort and will only affect the pull when it can. The option will be ignored when it cannot be honored. Support for each type of peer is yet to be implemented. They currently all warn about lack of support. The warning code will get removed as peers gain support for this option. The option is still experimental, so we will have freedom to update the UI or implementation before it graduates out of experimental. Based on a changeset by Pierre-Yves David, which added the option.
author Manuel Jacob <me@manueljacob.de>
date Thu, 04 Apr 2019 18:07:30 +0200
parents 385a4f8056e5
children
line wrap: on
line source

=========================================================
Test features and behaviors related to the archived phase
=========================================================

  $ cat << EOF >> $HGRCPATH
  > [format]
  > exp-archived-phase=yes
  > [extensions]
  > strip=
  > [experimental]
  > EOF

  $ hg init repo
  $ cd repo
  $ echo  root > a
  $ hg add a
  $ hg ci -m 'root'

Test that bundle can unarchive a changeset
------------------------------------------

  $ echo foo >> a
  $ hg st
  M a
  $ hg ci -m 'unbundletesting'
  $ hg log -G
  @  changeset:   1:883aadbbf309
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  o  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  
  $ hg strip --soft --rev '.'
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/883aadbbf309-efc55adc-backup.hg
  $ hg log -G
  @  changeset:   0:c1863a3840c6
     tag:         tip
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  
  $ hg log -G --hidden
  o  changeset:   1:883aadbbf309
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  @  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  
  $ hg unbundle .hg/strip-backup/883aadbbf309-efc55adc-backup.hg
  adding changesets
  adding manifests
  adding file changes
  added 0 changesets with 0 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log -G
  o  changeset:   1:883aadbbf309
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  @  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  

Test that history rewriting command can use the archived phase when allowed to
------------------------------------------------------------------------------

  $ hg up 'desc(unbundletesting)'
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo bar >> a
  $ hg commit --amend --config experimental.cleanup-as-archived=yes
  $ hg log -G
  @  changeset:   2:d1e73e428f29
  |  tag:         tip
  |  parent:      0:c1863a3840c6
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  o  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  
  $ hg log -G --hidden
  @  changeset:   2:d1e73e428f29
  |  tag:         tip
  |  parent:      0:c1863a3840c6
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  | o  changeset:   1:883aadbbf309
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     unbundletesting
  |
  o  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  
  $ ls -1 .hg/strip-backup/
  883aadbbf309-efc55adc-amend.hg
  883aadbbf309-efc55adc-backup.hg
  $ hg unbundle .hg/strip-backup/883aadbbf309*amend.hg
  adding changesets
  adding manifests
  adding file changes
  added 0 changesets with 0 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log -G
  @  changeset:   2:d1e73e428f29
  |  tag:         tip
  |  parent:      0:c1863a3840c6
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     unbundletesting
  |
  | o  changeset:   1:883aadbbf309
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     unbundletesting
  |
  o  changeset:   0:c1863a3840c6
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     root
  

Test that a strip will preserve unrelated changeset archived
------------------------------------------------------------

prepare a suitable tree

  $ echo foo > bar
  $ hg add bar
  $ hg commit -m 'some more commit'
  $ hg log -G --hidden -T '{rev} {node|short} [{phase}] {desc|firstline}\n'
  @  3 f90bf4e57854 [draft] some more commit
  |
  o  2 d1e73e428f29 [draft] unbundletesting
  |
  | o  1 883aadbbf309 [draft] unbundletesting
  |/
  o  0 c1863a3840c6 [draft] root
  
  $ hg strip --soft --rev '.'
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/f90bf4e57854-56b37ff2-backup.hg
  $ hg log -G --hidden -T '{rev} {node|short} [{phase}] {desc|firstline}\n'
  o  3 f90bf4e57854 [archived] some more commit
  |
  @  2 d1e73e428f29 [draft] unbundletesting
  |
  | o  1 883aadbbf309 [draft] unbundletesting
  |/
  o  0 c1863a3840c6 [draft] root
  


Strips the other (lower rev-num) head

  $ hg strip --rev 'min(head() and not .)'
  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/883aadbbf309-efc55adc-backup.hg

The archived changeset should still be hidden

  $ hg log -G -T '{rev} {node|short} [{phase}] {desc|firstline}\n'
  @  1 d1e73e428f29 [draft] unbundletesting
  |
  o  0 c1863a3840c6 [draft] root
  

It may still be around:

  $ hg log --hidden -G -T '{rev} {node|short} [{phase}] {desc|firstline}\n'
  o  2 f90bf4e57854 [archived] some more commit
  |
  @  1 d1e73e428f29 [draft] unbundletesting
  |
  o  0 c1863a3840c6 [draft] root