tests/test-purge
changeset 12122 9bab9ee901e8
parent 12121 8f258dd4ed02
child 12123 323292c2e566
equal deleted inserted replaced
12121:8f258dd4ed02 12122:9bab9ee901e8
     1 #!/bin/sh
       
     2 
       
     3 cat <<EOF >> $HGRCPATH
       
     4 [extensions]
       
     5 purge =
       
     6 EOF
       
     7 
       
     8 echo % init
       
     9 hg init t
       
    10 cd t
       
    11 
       
    12 echo % setup
       
    13 echo r1 > r1
       
    14 hg ci -qAmr1 -d'0 0'
       
    15 mkdir directory
       
    16 echo r2 > directory/r2
       
    17 hg ci -qAmr2 -d'1 0'
       
    18 echo 'ignored' > .hgignore
       
    19 hg ci -qAmr3 -d'2 0'
       
    20 
       
    21 echo % delete an empty directory
       
    22 mkdir empty_dir
       
    23 hg purge -p
       
    24 hg purge -v
       
    25 ls
       
    26 
       
    27 echo % delete an untracked directory
       
    28 mkdir untracked_dir
       
    29 touch untracked_dir/untracked_file1
       
    30 touch untracked_dir/untracked_file2
       
    31 hg purge -p
       
    32 hg purge -v
       
    33 ls
       
    34 
       
    35 echo % delete an untracked file
       
    36 touch untracked_file
       
    37 touch untracked_file_readonly
       
    38 python <<EOF
       
    39 import os, stat
       
    40 f= 'untracked_file_readonly'
       
    41 os.chmod(f, stat.S_IMODE(os.stat(f).st_mode) & ~stat.S_IWRITE)
       
    42 EOF
       
    43 hg purge -p
       
    44 hg purge -v
       
    45 ls
       
    46 
       
    47 echo % delete an untracked file in a tracked directory
       
    48 touch directory/untracked_file
       
    49 hg purge -p
       
    50 hg purge -v
       
    51 ls
       
    52 
       
    53 echo % delete nested directories
       
    54 mkdir -p untracked_directory/nested_directory
       
    55 hg purge -p
       
    56 hg purge -v
       
    57 ls
       
    58 
       
    59 echo % delete nested directories from a subdir
       
    60 mkdir -p untracked_directory/nested_directory
       
    61 cd directory
       
    62 hg purge -p
       
    63 hg purge -v
       
    64 cd ..
       
    65 ls
       
    66 
       
    67 echo % delete only part of the tree
       
    68 mkdir -p untracked_directory/nested_directory
       
    69 touch directory/untracked_file
       
    70 cd directory
       
    71 hg purge -p ../untracked_directory
       
    72 hg purge -v ../untracked_directory
       
    73 cd ..
       
    74 ls
       
    75 ls directory/untracked_file
       
    76 rm directory/untracked_file
       
    77 
       
    78 echo % skip ignored files if --all not specified
       
    79 touch ignored
       
    80 hg purge -p
       
    81 hg purge -v
       
    82 ls
       
    83 hg purge -p --all
       
    84 hg purge -v --all
       
    85 ls
       
    86 
       
    87 echo % abort with missing files until we support name mangling filesystems
       
    88 touch untracked_file
       
    89 rm r1
       
    90 # hide error messages to avoid changing the output when the text changes
       
    91 hg purge -p 2> /dev/null
       
    92 hg st
       
    93 
       
    94 hg purge -p
       
    95 hg purge -v 2> /dev/null
       
    96 hg st
       
    97 
       
    98 hg purge -v
       
    99 hg revert --all --quiet
       
   100 hg st -a
       
   101 
       
   102 echo '% tracked file in ignored directory (issue621)'
       
   103 echo directory >> .hgignore
       
   104 hg ci -m 'ignore directory'
       
   105 touch untracked_file
       
   106 hg purge -p
       
   107 hg purge -v
       
   108 
       
   109 echo % skip excluded files
       
   110 touch excluded_file
       
   111 hg purge -p -X excluded_file
       
   112 hg purge -v -X excluded_file
       
   113 ls
       
   114 rm excluded_file
       
   115 
       
   116 echo % skip files in excluded dirs
       
   117 mkdir excluded_dir
       
   118 touch excluded_dir/file
       
   119 hg purge -p -X excluded_dir
       
   120 hg purge -v -X excluded_dir
       
   121 ls
       
   122 ls excluded_dir
       
   123 rm -R excluded_dir
       
   124 
       
   125 echo % skip excluded empty dirs
       
   126 mkdir excluded_dir
       
   127 hg purge -p -X excluded_dir
       
   128 hg purge -v -X excluded_dir
       
   129 ls
       
   130 rmdir excluded_dir
       
   131 
       
   132 echo % skip patterns
       
   133 mkdir .svn
       
   134 touch .svn/foo
       
   135 mkdir directory/.svn
       
   136 touch directory/.svn/foo
       
   137 hg purge -p -X .svn -X '*/.svn'
       
   138 hg purge -p -X re:.*.svn