view tests/test-convert-tagsbranch-topology.t @ 31769:594dd384803c

test-serve: make the 'listening at *' lines optional The daemonized serve process doesn't print these lines out (see 448d0c452140). I was able to get it to with the following hack: diff --git a/mercurial/win32.py b/mercurial/win32.py --- a/mercurial/win32.py +++ b/mercurial/win32.py @@ -418,6 +418,11 @@ return str(ppid) def spawndetached(args): + + import subprocess + return subprocess.Popen(args, cwd=pycompat.getcwd(), env=encoding.environ, + creationflags=subprocess.CREATE_NEW_PROCESS_GROUP).pid + # No standard library function really spawns a fully detached # process under win32 because they allocate pipes or other objects # to handle standard streams communications. Passing these objects However, MSYS translates --prefixes starting with '/' to 'C:/MinGW/msys/1.0', which changes the output. The output isn't so important that I want to spend a bunch of time on this, and risk breaking some subtle behavior of `hg serve -d` with the more complicated code.
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 02 Apr 2017 00:56:52 -0400
parents 86fe3c404c1e
children
line wrap: on
line source

#require git

  $ echo "[core]" >> $HOME/.gitconfig
  $ echo "autocrlf = false" >> $HOME/.gitconfig
  $ echo "[core]" >> $HOME/.gitconfig
  $ echo "autocrlf = false" >> $HOME/.gitconfig
  $ cat <<EOF >> $HGRCPATH
  > [extensions]
  > convert =
  > [convert]
  > hg.usebranchnames = True
  > hg.tagsbranch = tags-update
  > EOF
  $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME
  $ GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL
  $ GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE
  $ GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME
  $ GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL
  $ GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE
  $ count=10
  $ action()
  > {
  >     GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"
  >     GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
  >     git "$@" >/dev/null 2>/dev/null || echo "git command error"
  >     count=`expr $count + 1`
  > }
  $ glog()
  > {
  >     hg log -G --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
  > }
  $ convertrepo()
  > {
  >     hg convert --datesort git-repo hg-repo
  > }

Build a GIT repo with at least 1 tag

  $ mkdir git-repo
  $ cd git-repo
  $ git init >/dev/null 2>&1
  $ echo a > a
  $ git add a
  $ action commit -m "rev1"
  $ action tag -m "tag1" tag1
  $ cd ..

Convert without tags

  $ hg convert git-repo hg-repo --config convert.skiptags=True
  initializing destination hg-repo repository
  scanning source...
  sorting...
  converting...
  0 rev1
  updating bookmarks
  $ hg -R hg-repo tags
  tip                                0:d98c8ad3a4cf
  $ rm -rf hg-repo

Do a first conversion

  $ convertrepo
  initializing destination hg-repo repository
  scanning source...
  sorting...
  converting...
  0 rev1
  updating tags
  updating bookmarks

Simulate upstream  updates after first conversion

  $ cd git-repo
  $ echo b > a
  $ git add a
  $ action commit -m "rev2"
  $ action tag -m "tag2" tag2
  $ cd ..

Perform an incremental conversion

  $ convertrepo
  scanning source...
  sorting...
  converting...
  0 rev2
  updating tags
  updating bookmarks

Print the log

  $ cd hg-repo
  $ glog
  o  3 "update tags" files: .hgtags
  |
  | o  2 "rev2" files: a
  | |
  o |  1 "update tags" files: .hgtags
   /
  o  0 "rev1" files: a
  

  $ cd ..