view tests/test-mq-qclone-http.t @ 33388:0823f0983eaa

convert: transcode CVS log messages by specified encoding (issue5597) Converting from CVS to Mercurial assumes that CVS log messages in "cvs rlog" output are encoded in UTF-8 (or basic Latin-1). But cvs itself is usually unaware of encoding of log messages, in practice. Therefore, if there are commits, of which log message is encoded in other than UTF-8, log message of corresponded revisions in the converted repository will be broken. To avoid such broken log messages, this patch transcodes CVS log messages by encoding specified via "convert.cvsps.logencoding" configuration. This patch accepts multiple encoding for convenience, because "multiple encoding mixed in a repository" easily occurs. For example, UTF-8 (recent POSIX), cp932 (Windows), and EUC-JP (legacy POSIX) are well known encoding for Japanese.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Tue, 11 Jul 2017 02:10:04 +0900
parents 8c14f87bd0ae
children eb586ed5d8ce
line wrap: on
line source

#require killdaemons

hide outer repo
  $ hg init

  $ echo "[extensions]" >> $HGRCPATH
  $ echo "mq=" >> $HGRCPATH
  $ mkdir webdir
  $ cd webdir
  $ hg init a
  $ hg --cwd a qinit -c
  $ echo a > a/a
  $ hg --cwd a ci -A -m a
  adding a
  $ echo b > a/b
  $ hg --cwd a addremove
  adding b
  $ hg --cwd a qnew -f b.patch
  $ hg --cwd a qcommit -m b.patch
  $ hg --cwd a log --template "{desc}\n"
  [mq]: b.patch
  a
  $ hg --cwd a/.hg/patches log --template "{desc}\n"
  b.patch
  $ root=`pwd`
  $ cd ..

test with recursive collection

  $ cat > collections.conf <<EOF
  > [paths]
  > /=$root/**
  > EOF
  $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
  >     -A access-paths.log -E error-paths-1.log
  $ cat hg.pid >> $DAEMON_PIDS
  $ get-with-headers.py localhost:$HGPORT '?style=raw'
  200 Script output follows
  
  
  /a/
  /a/.hg/patches/
  
  $ hg qclone http://localhost:$HGPORT/a b
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 3 changes to 3 files
  updating to branch default
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg --cwd b log --template "{desc}\n"
  a
  $ hg --cwd b qpush -a
  applying b.patch
  now at: b.patch
  $ hg --cwd b log --template "{desc}\n"
  imported patch b.patch
  a

test with normal collection

  $ cat > collections1.conf <<EOF
  > [paths]
  > /=$root/*
  > EOF
  $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf collections1.conf \
  >     -A access-paths.log -E error-paths-1.log
  $ cat hg.pid >> $DAEMON_PIDS
  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
  200 Script output follows
  
  
  /a/
  /a/.hg/patches/
  
  $ hg qclone http://localhost:$HGPORT1/a c
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 3 changes to 3 files
  updating to branch default
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg --cwd c log --template "{desc}\n"
  a
  $ hg --cwd c qpush -a
  applying b.patch
  now at: b.patch
  $ hg --cwd c log --template "{desc}\n"
  imported patch b.patch
  a

test with old-style collection

  $ cat > collections2.conf <<EOF
  > [collections]
  > $root=$root
  > EOF
  $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --webdir-conf collections2.conf \
  >     -A access-paths.log -E error-paths-1.log
  $ cat hg.pid >> $DAEMON_PIDS
  $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
  200 Script output follows
  
  
  /a/
  /a/.hg/patches/
  
  $ hg qclone http://localhost:$HGPORT2/a d
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 3 changes to 3 files
  updating to branch default
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg --cwd d log --template "{desc}\n"
  a
  $ hg --cwd d qpush -a
  applying b.patch
  now at: b.patch
  $ hg --cwd d log --template "{desc}\n"
  imported patch b.patch
  a

test --mq works and uses correct repository config

  $ hg --cwd d outgoing --mq
  comparing with http://localhost:$HGPORT2/a/.hg/patches
  searching for changes
  no changes found
  [1]
  $ hg --cwd d log --mq --template '{rev} {desc|firstline}\n'
  0 b.patch

  $ killdaemons.py