view tests/test-impexp-branch.t @ 39899:f9232b0310ef

pullreport: issue a message about "extinct" pulled changesets Changeset pulled from a remote repository while already obsolete locally can end up hidden after the pull. Hiding obsolete changesets is a good behavior but silently "skipping" some of the pulled content can get confusing. We now detect this situation and emit a message about it. The message is simple and the wording could be improved, however, we focus on the detection here. Evolution is still an experimental feature, so the output is open to changes. In particular, we could point out at the latest successors of the obsolete changesets, however, it can get tricky is there are many of them. So we delay these improvements to another adventure. Another easy improvement would be to merge this message with the previous line about the new nodes and their phases. This is a good example of cases where we can only transmit a limited amount of data to users by default. We need some sort of "transaction journal" we could point the user to.
author Boris Feld <boris.feld@octobus.net>
date Thu, 27 Sep 2018 16:52:25 +0200
parents 5abc47d4ca6b
children 7396508ad92b
line wrap: on
line source

  $ echo '[extensions]' >> $HGRCPATH
  $ echo 'strip =' >> $HGRCPATH

  $ cat >findbranch.py <<EOF
  > from __future__ import absolute_import
  > import re
  > import sys
  > 
  > head_re = re.compile('^#(?:(?:\\s+([A-Za-z][A-Za-z0-9_]*)(?:\\s.*)?)|(?:\\s*))$')
  > 
  > for line in sys.stdin:
  >     hmatch = head_re.match(line)
  >     if not hmatch:
  >         sys.exit(1)
  >     if hmatch.group(1) == 'Branch':
  >         sys.exit(0)
  > sys.exit(1)
  > EOF

  $ hg init a
  $ cd a
  $ echo "Rev 1" >rev
  $ hg add rev
  $ hg commit -m "No branch."
  $ hg branch abranch
  marked working directory as branch abranch
  (branches are permanent and global, did you want a bookmark?)
  $ echo "Rev  2" >rev
  $ hg commit -m "With branch."

  $ hg export 0 > ../r0.patch
  $ hg export 1 > ../r1.patch
  $ cd ..

  $ if "$PYTHON" findbranch.py < r0.patch; then
  >     echo "Export of default branch revision has Branch header" 1>&2
  >     exit 1
  > fi

  $ if "$PYTHON" findbranch.py < r1.patch; then
  >     :  # Do nothing
  > else
  >     echo "Export of branch revision is missing Branch header" 1>&2
  >     exit 1
  > fi

Make sure import still works with branch information in patches.

  $ hg init b
  $ cd b
  $ hg import ../r0.patch
  applying ../r0.patch
  $ hg import ../r1.patch
  applying ../r1.patch
  $ cd ..

  $ hg init c
  $ cd c
  $ hg import --exact --no-commit ../r0.patch
  applying ../r0.patch
  warning: can't check exact import with --no-commit
  $ hg st
  A rev
  $ hg revert -a
  forgetting rev
  $ rm rev
  $ hg import --exact ../r0.patch
  applying ../r0.patch
  $ hg import --exact ../r1.patch
  applying ../r1.patch

Test --exact and patch header separators (issue3356)

  $ hg strip --no-backup .
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  >>> import re
  >>> p = open('../r1.patch', 'rb').read()
  >>> p = re.sub(br'Parent\s+', b'Parent ', p)
  >>> open('../r1-ws.patch', 'wb').write(p) and None
  $ hg import --exact ../r1-ws.patch
  applying ../r1-ws.patch

  $ cd ..