Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6085
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как рекурсивно добавить каталоги CVS
Я немного играл с CVS и не очень хорошо знаком со всеми его возможностями, но огромное раздражение для меня-это попытка добавить новые каталоги, которые содержат больше каталогов в них. Запуск " cvs add "только добавляет содержимое текущего каталога, а использование" cvs import " также не выглядит правильным, поскольку это все еще весь код, который я создаю (этот howto утверждал, что импорт предназначен для сторонних источников )
Вы, ребята, знаете какой-нибудь способ рекурсивно добавить все, что находится в данном каталоге, в текущий проект CVS (или если SVN или git делает это значительно проще)?
Я обнаружил, что это работает довольно эффективно:
Во-первых, добавьте все каталоги, но не любые с именем "CVS":
find . -type d \! -name CVS -exec cvs add '{}' \;
Затем добавьте все файлы, исключая все, что находится в каталоге CVS:
find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)
Теперь, если у кого-то есть лекарство от неловкости использования CVS в наши дни и в наше время...
Я использую это:
Сначала рекурсивно добавьте все каталоги за вычетом CVS:
$> find . -type d \! -name CVS -exec cvs add '{}' \;
Во-вторых, добавьте все файлы, за исключением каталогов CVS:
find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)
В-третьих, сделайте “commit” рекурсивно, как "first version" комментарий:
find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs commit -m "first version" '{}' \; \)
Последнее тег все рекурсивно:
find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs tag -F MY_CVS_TAG '{}' \; \)
Обратите внимание, что вы можете использовать cvs add только для файлов и папок, которые находятся внутри уже извлеченной рабочей копии, в противном случае вы получите сообщение "Cannot open CVS/Entries for reading" . Способ создания нового "root module" с помощью cvs add описан в этом WinCVS FAQ item: http://cvsgui.sourceforge.net/newfaq.htm#add_rootmodule
Если вы находитесь на Windows, то и TortoiseCVS, и WinCVS поддерживают рекурсивное добавление (и необязательную фиксацию) нескольких файлов в одной операции. В WinCvs искать макрос добавить>рекурсивно добавить (автоматической фиксации)... В Черепаха с помощью команды добавить содержимое в директорию. Оба они позволят вам выбрать, какие файлы добавлять и какие режимы расширения ключевых слов для них использовать (в основном используется для определения того, какие файлы являются двоичными).
Для получения дополнительной информации о рекурсивном add in WinCvs смотрите здесь: http://cvsgui.sourceforge.net/newfaq.htm#cvs-add_recursive
Кроме того, cvs import хорошо подходит для массовых дополнений. Однако способ реализации cvs import в vanilla CVS имеет два недостатка (поскольку изначально он был написан для стороннего кода):
- он создает обязательную ветвь со специальной семантикой.
- он не создает метаданные репозитория (т. е. скрытые каталоги CVS), необходимые для установления импортированного кода как извлеченной рабочей копии, что означает, что для реальной работы с импортированными файлами вам сначала нужно извлечь их из репозитория
Если вы используете CVSNT, вы можете избежать обоих недостатков, указав параметр -nC при импорте. -n - для избежания ветви "vendor", а -C -для создания каталогов CVS.
Этот ответ от Марка был полезен (см. - type f-print0| xargs -0 cvs add), но я решил некоторую проблему, которая возникла, когда cvs add попытался добавить свои собственные файлы, такие как Tag, Entries и т. д..
- Добавьте свою самую высокую папку под названием NEW_FOLDER
cvs add NEW_FOLDER
- Используйте предыдущую команду с некоторым исключением, чтобы добавить дерево всех вложенных папок
найдите NEW_FOLDER/-тип d ! - имя "CVS"-а ! - имя "Tag"-а ! - имя "Entries.Log" - и ! - имя "Entries"-а ! - имя "Repository"-а ! - имя "Root"-print0 | xargs -0 cvs добавить
- Используйте предыдущую команду с некоторым исключением для добавления всех файлов
найдите NEW_FOLDER/-тип f ! - имя "CVS"-а ! - имя "Tag"-а ! - имя "Entries.Log" - и ! - имя "Entries"-а ! - имя "Repository"-а ! - имя "Root"-print0 | xargs -0 cvs добавить
Я использую этот простой скрипт shell, который должен быть запущен из уже проверенного каталога 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"
Уже рассмотренные методы будут выполнять рекурсивный поиск, но он не будет выполнен, если вы снова выполните то же самое действие (если вы хотите добавить поддерево к существующему дереву)
По этой причине вам нужно проверить, что ваши каталоги еще не были добавлены, а затем добавить только те файлы, которые еще не добавлены. Для этого мы используем вывод cvs up , чтобы увидеть, какие элементы еще не были добавлены - у него будет знак вопроса в начале строки.
Мы используем опции -0, -print0 и -zZ , чтобы быть уверенными, что правильно обрабатываем пробелы в именах файлов. Мы также используем --no-run-if-empty , чтобы избежать запуска, если ничего не нужно добавлять.
CVS_PATTERN=/tmp/cvs_pattern
cvs -z3 -q up | egrep '^\?.*' | sed -e 's/^? //' > $CVS_PATTERN
find . -type d \! -name CVS -print0 | grep -zZf $CVS_PATTERN | xargs -0 --no-run-if-empty cvs add
find . \( -type d -name CVS -prune \) -o \( -type f -print0 \) | grep -zZf $CVS_PATTERN | xargs -0 --no-run-if-empty cvs add
cvs commit -m 'commiting tree recursively'
При таком подходе мы избежим подобных ошибок:
cvs add: cannot add special file `.'; skipping
cvs [add aborted]: there is a version in ./dirname1 already
и
cvs add: `./dirname2/filename' already exists, with version number 1.1.1.1
Решение Марка решает проблему пробелов, но создает эту проблему:
cvs add: не удается открыть CVS / записи для чтение: нет такого файла или каталога
cvs [добавить прервано]: нет репозитория
Чтобы исправить это, фактическая команда для использования является:
find . -type f -exec cvs add {} \;
SVN определенно делает эту тривиальную задачу, однако использование GUI, как черепаха, еще проще.
Это может быть хорошим местом для начала: http://www-mrsrl.stanford.edu / ~brian/cvstutorial/