tests/test-mq-merge
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 18 Aug 2007 21:36:10 -0300
changeset 5200 c7e8fe11f34a
parent 4437 a210b40d0860
permissions -rwxr-xr-x
path_auditor: cache names of audited directories We use a separate cache to avoid problems with audit = path_auditor(repo.root) audit("subrepo") audit("subrepo/file") whitelisting "subrepo" (which is fine) and then using the same whitelist with "subrepo/file" (which is not fine). Since we create a separate path_auditor for every path on the command line, a "hg add dir/a dir/b dir/c" will still lstat dir 3 times just to audit the paths.

#!/bin/sh

# Test issue 529 - mq aborts when merging patch deleting files

rewrite_path()
{
    sed -e 's:\\:/:g' -e 's:[^ ]*/t/::g'
}

echo "[extensions]" >> $HGRCPATH
echo "hgext.mq=" >> $HGRCPATH

# Commit two dummy files in "init" changeset
hg init t
cd t
echo a > a
echo b > b
hg ci -Am init
hg tag -l init

# Create a patch removing a
hg qnew rm_a
hg rm a
hg qrefresh -m "rm a"

# Save the patch queue so we can merge it later
hg qsave -c -e 2>&1 | rewrite_path

# Update b and commit in an "update" changeset
hg up -C init
echo b >> b
hg st
hg ci -m update

# Here, qpush used to abort with :
# The system cannot find the file specified => a
hg manifest
hg qpush -a -m 2>&1 | rewrite_path
hg manifest

# ensure status is correct after merge
hg qpop -a