view tests/test-convert-tagsbranch-topology.t @ 16367:c14898df3b92 stable

ui: swallow EBADF on stderr ui.write_err already swallows EPIPE and EIO if a write to stderr fails. On Mac OS X at least, a write to a closed file descriptor results in EBADF. Before this patch, hg would exit with status 1 if a write to stderr failed during startup (e.g. while trying to print a warning about not finding an extension): $ ./hg --config extensions.foo= version 2>&-; echo $? 1 With this patch, it correctly swallows stderr and continues to run the command: $ ./hg --config extensions.foo= version 2>&- Mercurial Distributed SCM (version 2.1) ...
author Kevin Bullock <kbullock@ringworld.org>
date Wed, 04 Apr 2012 12:46:54 -0500
parents 6b7077df4aa5
children cfd892b7569f
line wrap: on
line source


  $ "$TESTDIR/hghave" git || exit 80
  $ echo "[extensions]" >> $HGRCPATH
  $ echo "convert=" >> $HGRCPATH
  $ echo 'hgext.graphlog =' >> $HGRCPATH
  $ echo '[convert]' >> $HGRCPATH
  $ echo 'hg.usebranchnames = True' >> $HGRCPATH
  $ echo 'hg.tagsbranch = tags-update' >> $HGRCPATH
  $ 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 glog --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 ..

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