Как добавить каталоги CVS рекурсивно

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

40
задан AlBlue 30 December 2009 в 19:10
поделиться

8 ответов

А-ч, пробелы. Это будет работать с пробелами:

find . -type f -print0| xargs -0 cvs add
10
ответ дан Mark Harrison 27 November 2019 в 01:14
поделиться

cvs import не только для сторонних источников. На самом деле каталоги не являются имеющими версию CVS, таким образом, они не предмет для ветвления политик. Пока Вы импортируете пустые каталоги, это прекрасно.

2
ответ дан Alexander L. Belikoff 27 November 2019 в 01:14
поделиться

Обратите внимание, что можно только использовать cvs add на файлах и папках, которые расположены в, уже проверил рабочую копию, иначе Вы доберетесь , "Не может открыть CVS/Entries для чтения" сообщение. Техника для создания нового "корневого модуля" с помощью cvs add объяснена в этом объекте WinCVS FAQ: http://cvsgui.sourceforge.net/newfaq.htm#add_rootmodule

, Если Вы находитесь в Windows, и TortoiseCVS и WinCVS поддерживают рекурсивное дополнение (и дополнительная фиксация) нескольких файлов в единственной операции. В WinCvs ищут макрос, Добавляют> Рекурсивный, Добавляют (автоматически фиксируют)... У Черепахи используют команду Add Contents на каталоге. Оба позволят Вам выбирать, какие файлы добавить и что режимы расширения ключевого слова использовать для них (главным образом используемый для определения, какие файлы являются двоичными).

Для дальнейшей информации о рекурсивном добавляют во взгляде WinCvs здесь: http://cvsgui.sourceforge.net/newfaq.htm#cvs-add_recursive

<час>

Кроме того cvs import хорошо подходит для массовых дополнений. Однако путь cvs import реализован в CVS ванили, имеет два недостатка (потому что это было первоначально записано для стороннего кода):

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

при использовании CVSNT можно избежать обоих недостатков путем определения -nC опция на импорте. -n для предотвращения ответвления "поставщика", и -C для создания каталогов CVS.

2
ответ дан Oliver Giesen 27 November 2019 в 01:14
поделиться

Я думаю, что это - то, что я действительно поддержал в мои дни CVS:

find . -type f | xargs cvs add
1
ответ дан Mark Harrison 27 November 2019 в 01:14
поделиться

Сначала добавьте, что все каталоги к CVS

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

Тогда добавляют все файлы в каталогах к CVS

find . -type f -print0| xargs -0 cvs add
1
ответ дан John Meagher 27 November 2019 в 01:14
поделиться

решение Mark's решает вопрос пробелов, но производит эту проблему:

cvs добавляют: не может открыть CVS/Entries для чтения: Никакой такой файл или каталог
cvs [не добавляет прерванный]: никакой репозиторий

Для фиксации его фактическая команда для использования:

find . -type f -exec cvs add {} \;
0
ответ дан Community 27 November 2019 в 01:14
поделиться

SVN определенно делает эту тривиальную задачу, использование GUI как Черепаха еще легче, как бы то ни было.

Это могло бы быть хорошим местом для запуска: http://www-mrsrl.stanford.edu/~brian/cvstutorial/

-1
ответ дан Benjamin W. 27 November 2019 в 01:14
поделиться

Я использую этот простой скрипт оболочки, который должен быть запущен из уже проверенного CVS каталога. Он будет глупо пытаться добавить/комммитировать любые файлы и каталоги, которые найдет при рекурсивном поиске, так что в конце концов вы должны получить полное дерево коммитов.

Просто сохраните его как что-то вроде /usr/bin/cvsadd и не забудьте использовать chmod +x /usr/bin/cvsadd.

#!/bin/sh
# @(#) add files and directories recursively to the current CVS directory
# (c) 2009 by Dirk Jagdmann 

if [ -z "$1" ] ; then
    echo "usage: cvsadd 'import message'"
    exit 1
fi

if [ -d "$2" ] ; then
    cvs add "$2"
    cd "$2" || exit 1
fi

if [ ! -d CVS ] ; then
    echo "current directory needs to contain a CVS/ directory"
    exit 1
fi

XARGS="xargs -0 -r -t -L 1"

# first add all files in current directory
find . -maxdepth 1 -type f -print0 | $XARGS cvs add
find . -maxdepth 1 -type f -print0 | $XARGS cvs ci -m "$1"

# then add all directories
find . -maxdepth 1 -type d -not -name CVS -a -not -name . -print0 | $XARGS "$0" "$1"
1
ответ дан 27 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: