Mercurial > hg
view tests/test-purge @ 11775:a8614c5a5e9a
subrepos: support remapping of .hgsub source paths
Given a .hgsub file containing
lib/libfoo = http://server/libfoo
the 'lib/libfoo' subrepo will be cloned from 'http://server/libfoo'.
This changeset introduces a remapping mechanism whereby the source
paths (the right-hand sides) in the .hgsub file can be remapped. This
subpaths section
[subpaths]
http://server = /local
will result in the 'lib/libfoo' subrepo being cloned from
'/local/libfoo' instead of from 'http://server/libfoo'.
The patterns (left-hand sides) are really regular expressions and the
replacement strings (right-hand sides) can refer to matched groups
using normal backreferences. This can be used for more complicated
replacements such as
[subpaths]
http://server/(.*)-hg/ = http://hg.server/\1/
which replaces 'http://server/foo-hg/' with 'http://hg.server/foo/'.
All patterns are applied in the order by which they are listed in the
config files.
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Thu, 15 Jul 2010 18:10:05 +0200 |
parents | bb5ea66789e3 |
children |
line wrap: on
line source
#!/bin/sh cat <<EOF >> $HGRCPATH [extensions] purge = EOF echo % init hg init t cd t echo % setup echo r1 > r1 hg ci -qAmr1 -d'0 0' mkdir directory echo r2 > directory/r2 hg ci -qAmr2 -d'1 0' echo 'ignored' > .hgignore hg ci -qAmr3 -d'2 0' echo % delete an empty directory mkdir empty_dir hg purge -p hg purge -v ls echo % delete an untracked directory mkdir untracked_dir touch untracked_dir/untracked_file1 touch untracked_dir/untracked_file2 hg purge -p hg purge -v ls echo % delete an untracked file touch untracked_file touch untracked_file_readonly python <<EOF import os, stat f= 'untracked_file_readonly' os.chmod(f, stat.S_IMODE(os.stat(f).st_mode) & ~stat.S_IWRITE) EOF hg purge -p hg purge -v ls echo % delete an untracked file in a tracked directory touch directory/untracked_file hg purge -p hg purge -v ls echo % delete nested directories mkdir -p untracked_directory/nested_directory hg purge -p hg purge -v ls echo % delete nested directories from a subdir mkdir -p untracked_directory/nested_directory cd directory hg purge -p hg purge -v cd .. ls echo % delete only part of the tree mkdir -p untracked_directory/nested_directory touch directory/untracked_file cd directory hg purge -p ../untracked_directory hg purge -v ../untracked_directory cd .. ls ls directory/untracked_file rm directory/untracked_file echo % skip ignored files if --all not specified touch ignored hg purge -p hg purge -v ls hg purge -p --all hg purge -v --all ls echo % abort with missing files until we support name mangling filesystems touch untracked_file rm r1 # hide error messages to avoid changing the output when the text changes hg purge -p 2> /dev/null hg st hg purge -p hg purge -v 2> /dev/null hg st hg purge -v hg revert --all --quiet hg st -a echo '% tracked file in ignored directory (issue621)' echo directory >> .hgignore hg ci -m 'ignore directory' touch untracked_file hg purge -p hg purge -v echo % skip excluded files touch excluded_file hg purge -p -X excluded_file hg purge -v -X excluded_file ls rm excluded_file echo % skip files in excluded dirs mkdir excluded_dir touch excluded_dir/file hg purge -p -X excluded_dir hg purge -v -X excluded_dir ls ls excluded_dir rm -R excluded_dir echo % skip excluded empty dirs mkdir excluded_dir hg purge -p -X excluded_dir hg purge -v -X excluded_dir ls rmdir excluded_dir echo % skip patterns mkdir .svn touch .svn/foo mkdir directory/.svn touch directory/.svn/foo hg purge -p -X .svn -X '*/.svn' hg purge -p -X re:.*.svn