Как мне вернуть измененный файл с помощью CVS?

Я извлек файл из репозитория CVS и изменил его.

cvs up команда говорит, что файл изменен M.

Мне нужно удалить свои изменения. Какая команда cvs может сделать это за меня?


person Ashot    schedule 29.03.2013    source источник
comment
Вы можете переопределить и обновить.   -  person hop    schedule 29.03.2013
comment
Если вы удалили файл и выполнили cvs up, разве это не восстановит его? И в SVN тоже есть команда возврата, разве не в CVS?   -  person ppeterka    schedule 29.03.2013
comment
@ppeterka Это не так. Удалить + обновить - это то, что вам нужно.   -  person Burhan Ali    schedule 30.03.2013


Ответы (2)


Ты используешь

cvs update -C filename
person Eric    schedule 18.04.2013
comment
Он обновляется до последней версии. Насчет восстановления той же ревизии. - person Ashot; 18.04.2013
comment
вы можете использовать -r revision и указать желаемую версию. - person Gerard; 25.04.2013

Это на удивление сложно сделать. В итоге мы использовали этот скрипт "cvsunedit". Я признаю, что выглядит излишним, но в резюме есть вещи, которые сделать сложнее, чем следовало бы.

#!/bin/bash
# cvsunedit - revert a file's modifications while preserving its current version
set -e
if [ "$1" = "" ]
then
    exit 0
fi
for f in $*
do
    echo "$f"
    base="$(basename "$f")"
    dir="$(dirname "$f")"
    rev="$(perl -e "while(<>){m#/$base/([^/]+)/# && print \$1 . \"\n\";}" < "$dir/CVS/Entries")"
    if [ "$rev" = "" ]
    then
        echo "Cannot find revision for $f in $dir/CVS/Entries"
        exit 1
    fi

    executable=0
    [ -x "$f" ] && executable=1

    mv "$f" "$f.$$.rev$rev.bak" || rm -f "$f"

    set -x
    cvs up -p -r "$rev" "$f" > "$f"
    set +x
    chmod -w "$f"
    [ $executable -ne 0 ] && chmod aog+x "$f"
done
exit 0
person Mort    schedule 29.09.2019