2009-09-22 2 views
1

Там Похожий пост @How to add CVS directories recursivelyРекурсивно CVS добавить файлы/каталоги и игнорировать существующие 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 

Дал:

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

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

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

+0

Я думал о второй строке, которую я мог бы добавить \! имя '.' а также \! имя «..», но, возможно, у кого-то есть более творческое решение. –

ответ

2

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

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

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

1
find . -name CVS -prune -o -type f -print0 
0

См this answer of mine к котировочному вопросу для объяснения того, почему вы получаете «не может открыть CVS/Запись для чтения» ошибки.

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

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

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

cvs co -l . 

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