Автоматизация CVS: Как определить, что локальный файл был удален, чтобы вызвать удаление cvs? - PullRequest
0 голосов
/ 15 декабря 2008

Я хочу автоматизировать резервное копирование файловой структуры Windows XP (вики) в CVS.
Посредством повторных вызовов cvs commit и cvs add я могу идентифицировать и зафиксировать измененные файлы и новые добавленные файлы, но я не вижу команду cvs, которая сообщала бы мне локальный файл был удален.

Одной из возможностей было бы обновить параллельную файловую структуру последними файлами из хранилища, а затем удалить те файлы, которые появляются только во второй структуре, но я надеялся, что было более эффективное решение?

Ответы [ 3 ]

3 голосов
/ 15 декабря 2008

Вы могли бы сделать

cvs -nq update

и ищите строки типа

cvs update: warning: SourceControlledFile.xml was lost
0 голосов
/ 10 февраля 2011

UPDATE:

Я использую CVSNT 2.5.05 в Windows XP. Обнаружено, что если вы просто запустите

cvs remove -R

в каталоге (без параметра -f) он удалит только те файлы, которые фактически отсутствуют в файловой системе. Для файлов, которые все еще там, он только выбросит сообщение, которое ваш скрипт автоматизации может безопасно проигнорировать.

Это также отлично подходит для использования вне сценариев. Теперь я могу просто запустить:

cvs -nq update | findstr /C:"U "

Убедитесь, что это все файлы, которые я хочу удалить, а затем выполните ту же самую директорию:

cvs remove -R

У меня был успех на Windows XP с CVSNT с использованием

cvs -nq update | findstr /C:"U "

Который дает такие результаты:

U file1.cs
U file2_23.cs
U directory_1/Reports/test.rpt

Конечно, эта идея (и другие идеи) работают только для автоматизации, если нет шансов, что эти файлы на самом деле являются файлами, которые кто-то добавил в хранилище с момента последнего обновления вашей рабочей копии.

Я лично использую этот cmd только для того, чтобы создать список файлов, которые мне нужно вручную сделать cvs remove перед выполнением коммита.

0 голосов
/ 15 декабря 2008

Вам нужно будет запустить cvs update и проанализировать результаты. Он скажет вам, какие файлы были добавлены, удалены и т. Д. Затем вы можете использовать их для запуска правильных команд. Предупреждение: CVS нелегко автоматизировать, потому что он не очень соответствует его сообщениям. Но со временем все заработает.

...