チェンジリスト全体を削除したいときも同じ問題があります。そのため、次のスクリプトを使用します (変更リストのシェルブと変更リスト自体も削除されることに注意してください。元に戻すだけの場合は、関連する行をコピーしてください)。また、sed が p4 のバージョンに適用されることを確認してください。
#!/bin/bash
set -e
if [[ $# -ne 1 ]]; then
echo "usage: $(basename $0) changelist"
exit 1
fi
CHANGELIST=$1
#make sure changelist exist.
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails
p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g")
if [[ -n "$files_to_revert" ]]; then
p4 revert $files_to_revert
fi
p4 change -d $CHANGELIST