CVSNT 2.5.05 устанавливает кодовую страницу output на 65001 (UTF-8) и не восстанавливает ее.
К сожалению, обработка этой кодовой страницы в Windows нарушена, поэтому случаются плохие вещи (включая невозможность запуска командных файлов).
Одним из обходных путей является сброс кодовой страницы (как входной, так и выходной) на известную рабочую (437, 850, 1252 или другие), используя CHCP
, предпочтительно в той же строке , что и CVS
команда. Например:
> cvs update & chcp 1252
Или, если вам больше по душе, вы можете сохранить текущую кодовую страницу и восстановить ее.
Например, вот пакетный файл, который я использую для обновления всех модулей в моей рабочей директории:
@echo off
setlocal enableextensions
for /f "tokens=4" %%i in ('chcp') do set hack=chcp %%i
for /d %%i in (*) do (
if exist %%i\cvs (
echo.
echo *** updating %%i
pushd %%i
cvs -q update -A -P -d | find /V "?" & %hack% >NUL
popd
))
echo.
echo *** STATUS ***
cvs -q status -q | find /V "?" & %hack% >NUL
endlocal
pause
Важность вызова CHCP на той же строке заключается в том, что следующая строка пакетного файла не будет обрабатываться, если кодовая страница имеет формат UTF.
Конечно, исправление ошибки будет лучшим решением.