CVS рекурсивно добавляет файлы / каталоги и игнорирует существующие файлы CVS - PullRequest
1 голос
/ 22 сентября 2009

Есть похожий пост @ Как рекурсивно добавлять каталоги CVS

Однако, пробуя некоторые ответы, такие как:

find . -type f -print0| xargs -0 cvs add

Дал:

cvs add: невозможно открыть CVS / Записи для чтение: нет такого файла или каталога cvs [добавить прервано]: нет хранилища

И

find . \! -name 'CVS' -and \! -name 'Entries' -and \! -name 'Repository' -and \! -name 'Root'  -print0| xargs -0 cvs add

Дал:

cvs add: невозможно добавить специальный файл `. '; пропуск

У кого-нибудь есть более точное решение для рекурсивного добавления новых файлов в модуль CVS? Было бы замечательно, если бы я тоже мог использовать псевдоним в ~ / .bashrc или что-то в этом роде.

И да, я знаю, что он немного устарел, но я вынужден работать с ним для определенного проекта, иначе я бы использовал git / hg.

Ответы [ 3 ]

2 голосов
/ 23 сентября 2009

Это может быть немного элегантнее:

find . -type f -print0 | egrep -v '\/CVS\/|^\.$' | xargs -0 cvs add

Обратите внимание, что print0, хотя и очень полезен для работы с именами файлов, содержащими пробелы, НЕ универсален - это не относится, например, к находке Solaris.

1 голос
/ 23 сентября 2009
find . -name CVS -prune -o -type f -print0
0 голосов
/ 22 октября 2009

См. этот мой ответ на указанный вопрос для объяснения того, почему вы получаете сообщение об ошибке «Не удается открыть CVS / Записи для чтения».

При рассмотрении других решений, предлагаемых здесь, необходимо учитывать две важные вещи:

  • папки должны быть добавлены тоже
  • для добавления файла или папки родительская папка этого элемента должна быть уже добавлена, поэтому очень важен порядок обработки элементов

Итак, если вы только начинаете заполнять свой репозиторий, и у вас еще нет ничего, что можно было бы проверить, чтобы создать контекст для добавленных файлов, тогда cvs add нельзя использовать - или, по крайней мере, напрямую. Вы можете создать «корневой контекст», вызвав следующую команду в родительской папке первой папки, которую вы хотите добавить:

cvs co -l .

Это создаст необходимые метаданные песочницы (то есть скрытую подпапку «CVS», содержащую файлы «Root», «Repository» и «Entries. *»), Что позволит вам использовать команду add.

...