Fix a couple of issues with -F:
- Fix ALWAYS_INSTALL to take precedence over the FreeBSD ID checks. In particular, always install a file where the only change was the FreeBSD ID even if -F is specified. - Fix the -F option in the case that the only upstream change is a change in the FreeBSD ID and the local file is removed. - Add tests for these two cases.
This commit is contained in:
parent
38ec4caa8b
commit
8cc81f38e9
@ -195,6 +195,17 @@ EOF
|
||||
|
||||
these are some local mods to the file
|
||||
EOF
|
||||
|
||||
# local-remove: A file removed locally changed it's FreeBSD ID
|
||||
# but nothing else
|
||||
store_id $OLD/local-remove ": head/local-remove 12000 jhb "
|
||||
store_id $NEW/local-remove ": head/local-remove 12345 jhb "
|
||||
for i in $OLD $NEW; do
|
||||
cat >> $i/local-remove <<EOF
|
||||
|
||||
this is a file
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
# $1 - relative path to file that should be missing from TEST
|
||||
@ -282,6 +293,7 @@ cat > $WORKDIR/correct.out <<EOF
|
||||
C /add
|
||||
Warnings:
|
||||
Modified regular file remains: /remove
|
||||
Removed file changed: /local-remove
|
||||
EOF
|
||||
|
||||
echo "Differences for regular:"
|
||||
@ -299,6 +311,7 @@ conflict /conflict 868452f666fea1c60ffb918ad9ad9607
|
||||
file /local "" aa33e614b5e749449f230e2a2b0072eb
|
||||
conflict /local 3df93e64043c8e348fc625b93ea220f4
|
||||
file /local-already "" 0298b958a603049f45ae6a109c4f7fea
|
||||
missing /local-remove
|
||||
|
||||
# Now test with -F.
|
||||
|
||||
@ -329,3 +342,38 @@ file /conflict "" dc27978df125b0daeb7d9b93265f03fd
|
||||
conflict /conflict 868452f666fea1c60ffb918ad9ad9607
|
||||
file /local "" 3ed5a35e380c8a93fb5f599d4c052713
|
||||
file /local-already "" 0298b958a603049f45ae6a109c4f7fea
|
||||
missing /local-remove
|
||||
|
||||
# Now test with -F and -A forcing all installs. (-A should have
|
||||
# precedence over -F)
|
||||
|
||||
build_trees
|
||||
|
||||
$COMMAND -A '/*' -rF -d $WORKDIR -D $TEST > $WORKDIR/testAF.out
|
||||
|
||||
cat > $WORKDIR/correctAF.out <<EOF
|
||||
D /remove
|
||||
U /already
|
||||
U /conflict
|
||||
U /local
|
||||
U /local-already
|
||||
A /local-remove
|
||||
U /old
|
||||
U /add
|
||||
EOF
|
||||
|
||||
echo "Differences for -A '/*' -F:"
|
||||
diff -u -L "correct" $WORKDIR/correctAF.out -L "test" $WORKDIR/testAF.out
|
||||
|
||||
missing /remove
|
||||
file /old "" 6a9f34f109d94406a4de3bc5d72de259
|
||||
noconflict /old
|
||||
file /already "" 21f4eca3aacc702c49878c8da7afd3d0
|
||||
noconflict /already
|
||||
file /add "" 0208bd647111fedf6318511712ab9e97
|
||||
noconflict /add
|
||||
file /conflict "" 75ee141c4136beaf14e39de92efa84e4
|
||||
noconflict /conflict
|
||||
file /local "" 6a8fc5c2755b7a49015089f5e1dbe092
|
||||
file /local-already "" 49045f8b51542dd634655301cd296f66
|
||||
file /local-remove "" 5c38322efed4014797d7127f5c652d9d
|
||||
|
@ -1026,16 +1026,6 @@ handle_modified_file()
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the only change in the new file versus the old file is a
|
||||
# change in the FreeBSD ID string and -F is specified, just
|
||||
# update the FreeBSD ID string in the local file.
|
||||
if [ -n "$FREEBSD_ID" -a $cmp -eq $COMPARE_DIFFFILES ] && \
|
||||
fbsdid_only $OLDTREE/$file $NEWTREE/$file; then
|
||||
if update_freebsdid $file; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the file was removed from the dest tree, just whine.
|
||||
if [ $newdestcmp -eq $COMPARE_ONLYFIRST ]; then
|
||||
# If the removed file matches an ALWAYS_INSTALL glob,
|
||||
@ -1050,6 +1040,14 @@ handle_modified_file()
|
||||
return
|
||||
fi
|
||||
|
||||
# If the only change in the new file versus the old
|
||||
# file is a change in the FreeBSD ID string and -F is
|
||||
# specified, don't warn.
|
||||
if [ -n "$FREEBSD_ID" -a $cmp -eq $COMPARE_DIFFFILES ] && \
|
||||
fbsdid_only $OLDTREE/$file $NEWTREE/$file; then
|
||||
return
|
||||
fi
|
||||
|
||||
case $cmp in
|
||||
$COMPARE_DIFFTYPE)
|
||||
old=`file_type $OLDTREE/$file`
|
||||
@ -1080,6 +1078,16 @@ handle_modified_file()
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the only change in the new file versus the old file is a
|
||||
# change in the FreeBSD ID string and -F is specified, just
|
||||
# update the FreeBSD ID string in the local file.
|
||||
if [ -n "$FREEBSD_ID" -a $cmp -eq $COMPARE_DIFFFILES ] && \
|
||||
fbsdid_only $OLDTREE/$file $NEWTREE/$file; then
|
||||
if update_freebsdid $file; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the file changed types between the old and new trees but
|
||||
# the files in the new and dest tree are both of the same
|
||||
# type, treat it like an added file just comparing the new and
|
||||
|
Loading…
x
Reference in New Issue
Block a user