mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-10-21 21:34:17 -04:00
Some more improvements to exercise rule-restricted merge files
(i.e. exclude patterns only) and side-restricted filter rules.
This commit is contained in:
1 parent
22558cdd7e
commit
bb558f6791
1 file changed
+44
-26
+44
-26
@@ -24,51 +24,52 @@ makepath "$fromdir/foo/down/to/you"
|
||||
makepath "$fromdir/bar/down/to/foo/too"
|
||||
makepath "$fromdir/bar/down/to/bar/baz"
|
||||
makepath "$fromdir/mid/for/foo/and/that/is/who"
|
||||
cat >"$fromdir/.excl" <<EOF
|
||||
cat >"$fromdir/.filt" <<EOF
|
||||
exclude down
|
||||
: .excl-temp
|
||||
: .filt-temp
|
||||
clear
|
||||
- .excl
|
||||
- .filt
|
||||
- *.bak
|
||||
- *.old
|
||||
EOF
|
||||
echo kept >"$fromdir/foo/file1"
|
||||
echo removed >"$fromdir/foo/file2"
|
||||
echo cvsout >"$fromdir/foo/file2.old"
|
||||
cat >"$fromdir/foo/.excl" <<EOF
|
||||
include .excl
|
||||
cat >"$fromdir/foo/.filt" <<EOF
|
||||
include .filt
|
||||
- file1
|
||||
EOF
|
||||
cat >"$fromdir/bar/.excl" <<EOF
|
||||
cat >"$fromdir/bar/.filt" <<EOF
|
||||
- home-cvs-exclude
|
||||
dir-merge .excl2
|
||||
dir-merge .filt2
|
||||
+ to
|
||||
EOF
|
||||
echo cvsout >"$fromdir/bar/down/to/home-cvs-exclude"
|
||||
cat >"$fromdir/bar/down/to/.excl2" <<EOF
|
||||
- .excl2
|
||||
cat >"$fromdir/bar/down/to/.filt2" <<EOF
|
||||
- .filt2
|
||||
EOF
|
||||
cat >"$fromdir/bar/down/to/foo/.excl2" <<EOF
|
||||
cat >"$fromdir/bar/down/to/foo/.filt2" <<EOF
|
||||
+ *.junk
|
||||
EOF
|
||||
echo keeper >"$fromdir/bar/down/to/foo/file1"
|
||||
echo cvsout >"$fromdir/bar/down/to/foo/file1.bak"
|
||||
echo gone >"$fromdir/bar/down/to/foo/file3"
|
||||
echo lost >"$fromdir/bar/down/to/foo/file4"
|
||||
echo weird >"$fromdir/bar/down/to/foo/+ file3"
|
||||
echo cvsout-but-filtin >"$fromdir/bar/down/to/foo/file4.junk"
|
||||
echo smashed >"$fromdir/bar/down/to/foo/to"
|
||||
cat >"$fromdir/bar/down/to/bar/.excl2" <<EOF
|
||||
cat >"$fromdir/bar/down/to/bar/.filt2" <<EOF
|
||||
- *.deep
|
||||
EOF
|
||||
echo filtout >"$fromdir/bar/down/to/bar/baz/file5.deep"
|
||||
# This one should be ineffectual
|
||||
cat >"$fromdir/mid/.excl2" <<EOF
|
||||
cat >"$fromdir/mid/.filt2" <<EOF
|
||||
- extra
|
||||
EOF
|
||||
echo cvsout >"$fromdir/mid/one-in-one-out"
|
||||
echo one-in-one-out >"$fromdir/mid/.cvsignore"
|
||||
echo cvsin >"$fromdir/mid/one-for-all"
|
||||
cat >"$fromdir/mid/.excl" <<EOF
|
||||
cat >"$fromdir/mid/.filt" <<EOF
|
||||
:C
|
||||
EOF
|
||||
echo cvsin >"$fromdir/mid/for/one-in-one-out"
|
||||
@@ -144,8 +145,7 @@ rm "$chkdir"/bar/down/to/bar/baz/*.deep
|
||||
cp -p "$fromdir"/bar/down/to/foo/*.junk "$chkdir"/bar/down/to/foo
|
||||
cp -p "$fromdir"/bar/down/to/foo/to "$chkdir"/bar/down/to/foo
|
||||
|
||||
$RSYNC -av --existing --delete-excluded \
|
||||
--include='.excl*' --filter='-! */' "$fromdir/" "$todir/"
|
||||
$RSYNC -av --existing -f 'show .filt*' -f 'hide,! */' --del "$fromdir/" "$todir/"
|
||||
|
||||
echo retained >"$todir"/bar/down/to/bar/baz/nodel.deep
|
||||
cp -p "$todir"/bar/down/to/bar/baz/nodel.deep "$chkdir"/bar/down/to/bar/baz
|
||||
@@ -156,26 +156,44 @@ $RSYNC -av --existing --filter='-! */' "$fromdir/" "$chkdir/"
|
||||
# file.
|
||||
|
||||
checkit "sed '/!/d' \"$excl\" |
|
||||
$RSYNC -avv -f dir-merge_.excl -f merge_- \
|
||||
$RSYNC -avv -f dir-merge_.filt -f merge_- \
|
||||
--delete-during \"$fromdir/\" \"$todir/\"" "$chkdir" "$todir"
|
||||
|
||||
# Remove the files that --delete-excluded will delete.
|
||||
# Remove the files that will be deleted.
|
||||
|
||||
rm "$chkdir"/.excl
|
||||
rm "$chkdir"/bar/.excl
|
||||
rm "$chkdir"/bar/down/to/.excl2
|
||||
rm "$chkdir"/bar/down/to/foo/.excl2
|
||||
rm "$chkdir"/bar/down/to/bar/.excl2
|
||||
rm "$chkdir"/mid/.excl
|
||||
rm "$chkdir"/bar/down/to/bar/baz/nodel.deep
|
||||
rm "$chkdir"/.filt
|
||||
rm "$chkdir"/bar/.filt
|
||||
rm "$chkdir"/bar/down/to/.filt2
|
||||
rm "$chkdir"/bar/down/to/foo/.filt2
|
||||
rm "$chkdir"/bar/down/to/bar/.filt2
|
||||
rm "$chkdir"/mid/.filt
|
||||
|
||||
$RSYNC -av --existing --filter='-! */' "$fromdir/" "$chkdir/"
|
||||
|
||||
# Finally, try the prior command with --delete-before and --delete-excluded.
|
||||
# Now, try the prior command with --delete-before and some side-specific
|
||||
# rules.
|
||||
|
||||
checkit "sed '/!/d' \"$excl\" |
|
||||
$RSYNC -avv -f :_.excl -f ._- --delete-excluded \
|
||||
$RSYNC -avv -f :s_.filt -f .s_- -f P_nodel.deep \
|
||||
--delete-before \"$fromdir/\" \"$todir/\"" "$chkdir" "$todir"
|
||||
|
||||
# Next, we'll test some rule-restricted filter files.
|
||||
|
||||
cat >"$fromdir/bar/down/.excl" <<EOF
|
||||
file3
|
||||
EOF
|
||||
cat >"$fromdir/bar/down/to/foo/.excl" <<EOF
|
||||
+ file3
|
||||
*.bak
|
||||
EOF
|
||||
$RSYNC -av --del "$fromdir/" "$chkdir/"
|
||||
rm "$chkdir/bar/down/to/foo/file1.bak"
|
||||
rm "$chkdir/bar/down/to/foo/file3"
|
||||
rm "$chkdir/bar/down/to/foo/+ file3"
|
||||
$RSYNC -av --delete-excluded --exclude='*' "$fromdir/" "$todir/"
|
||||
|
||||
checkit "$RSYNC -avv -f dir-merge,-_.excl \
|
||||
\"$fromdir/\" \"$todir/\"" "$chkdir" "$todir"
|
||||
|
||||
# The script would have aborted on error, so getting here means we've won.
|
||||
exit 0
|
||||
Reference in new issue
Block a user