→ Как добавить проект в CVS репозиторий cvs.drupal.org (Cygwin)

Этот материал не актуален, с момента перехода drupal.org на систему контроля версий Git.

После запроса CVS аккаунта и создание страницы модуля на drupal.org нам нужно загрузить наш модуль в репозиторй cvs.drupal.org. Для начала нужно определиться с инструментом CVS. Что вы предпочитаете командную строку или визуальный интерфейс инструмента? Если у вас Windows, то:

  • Для работы с командной строкой можно использовать Cygwin + CVS;
  • Для работы с графическим интерфейсом можно использовать Eclipse.

Для меня, с самого начала, выбор инструмента был очевиден — установленный Cygwin + CVS. Конечно я еще попробовала работать с CVS с Eclipse, но меня это не очень-то вдохновило. Проще работать, для меня, оказалось с Cygwin.

Использование Eclipse, если есть необходимость, опишу в будущем посте.

Использование Cygwin при работе с репозиторием cvs.drupal.org

Как правило, файлы пользователя Cygwin хранит в

c:\cygwin\home\ВАШ_ПОЛЬЗОВАТЕЛЬ_WINDOWS

Поэтому для удобства скопируйте папку вашего модуля в

c:\cygwin\home\ВАШ_ПОЛЬЗОВАТЕЛЬ_WINDOWS\contributions\modules\

создав при этом папки contributions и modules

Входим в CVS

Для начала укажем корневой репозиторий CVS. Комманда:

export CVSROOT=:pserver:cvs_username@cvs.drupal.org:/cvs/drupal-contrib

где cvs_username это имя cvs пользователя, для которого вы запросили аккаунт.

Затем выполняем вход в CVS:

cvs login

У вас будет запрошен пароль. Вводя пароль, вы не будете его видеть.

Добавляем свой модуль в CVS

Сначала проверяем каталог модулей от ГЛАВНОЙ (HEAD) версии репозитория:

cvs checkout -l contributions/modules

Параметр -l ("локально") сообщает CVS проверить только данную директорию, а не все директории в ней.

Переходим в директорию 'contributions/modules':

cd contributions/modules

И «копируем» файлы модуля в директорию 'contributions/modules':

cp -r ~/drupal/modules/example example

Замените example на название вашего модуля.

И добавляем наши файлы в CVS:

  • добавляем директорию 'example'
    cvs add example
  • добавляем файлы в директории 'example'
    cvs add example/*
  • сохраняем результаты
    cvs commit -m "Краткое описание того, что делает этот модуль"

commit (от английского) — фиксировать, совершать.

Обычно «коммит сообщение» начинается со следующего слова:

  • "Added"
    при добавлении новой особенности (new feature);
  • "Fixed"
    при устранении ошибок (bug fix);
  • "Changed"
    задача (task)
  • "Updated"
    задача, из-за изменений в стороннем коде (task, due to changes in third-party code)

ОТМЕТЬТЕ: Команда cvs add добавляет файлы, но не добавляет директроии рекурсивно. Т.е. если у вас есть поддиректории, то вам нужно добавть их отдельно, например: example/subdir/*. Команда commit сообщает cvs о том, что вы хотите зафиксировать ваши изменения, а параметр -m это «сообщение о завершении», которое сообщит другим людям, какие изменения вы сделали и почему.

Получение последних изменений

Прежде, чем вы начинаете редактировать и прежде, чем вы сохраните свои изменения, вы можете захватить последние изменения от CVS с командой:

cvs update -dP

Команда cvs update обновит вашу локальную копию к текущему состоянию ее в репозитории, поэтому используйте ее крайне осторожно (!). Вы можете выполнить эту команду от верхнего уровня вашей локальной копии или из любого подкаталога, чтобы обновить только тот подкаталог. Опция -d гарантирует, что вы получите новые подкаталоги, которые, возможно, появились, а опция -P удаляет пустые каталоги.

Удаление файлов из CVS

Пока вы не можете удалить существующий релиз или файлы из CVS. Возможно только удаление файлов из ветки (branch). Иногда новые версии модуля не нуждаются в каких-то файлах. Если вам не нужен, скажем файл foo.bar.inc, то вы можете удалить его с помощью следующих команд:

cvs remove foo.bar.inc
cvs commit -m "причина почему вы удалили файл"

Создание ветвей для определенной версии ядра Друпала

Создание ветвей определяет совместимость кода с ядром друпала. Например, если вы хотите создать ветвь “DRUPAL-6--1”, вам нужно использовать следующую команду:

  • Возвращаемся в contributions
    cd ../
  • или переходим туда, если вы в /cvs/drupal-contrib
    cd contributions
  • и обозначаем модуль example веткой “DRUPAL-6--1”
    cvs tag -b DRUPAL-6--1 modules/example

Как только вы создали ветку, вероятно, вы желаете работать с этой веткой. Вам нужно переключить ваш локальный репозиторий для использования этой ветки. Сделать это так:

cd contributions/modules/example
cvs update -dP -r DRUPAL-6--1

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

Опция -r в cvs update, сообщает CVS обновить ваш репозиторий к этой ветке и держаться этой ветки до тех пор, пока вы не сообщите CVS другую ветку.

Вы можете проверить какая ветка используется в настоящее время:

cvs status

Посмотрите “Sticky Tag:” каждого файла, в примере это будет DRUPAL-6--1 (сопровождаемый внутренним номером ветви CVS) нежели для HEAD — “Sticky Tag: (none)”.

Статус так же сообщит вам, если вы изменили что-либо, но еще не зафиксировали (committ) в репозитроии.

Вы можете вернуться и использовать ветку HEAD:

cvs update -A

Флаг -A сообщает CVS сбросить использование какой-либо ветви (т.е. вернуться к HEAD), и обновить код к тому, что в ветви HEAD.

Так же, может быть полезным держать одну локальную директорию, указывающую на ветку HEAD, и другие локальные директории, указывающие на каждую из ваших других ветвей. В этом случае у вас будут копии каждой ветки всегда. Чтобы создать новую локальную директорию для определенной ветки, используйте команду CVS checkout (co):

cvs co -d new_local_directory_name -r DRUPAL-6--1 contributions/modules/module_name

Флаг -d сообщает CVS создать новую директорию с данным названием; команда -r сообщает CVS какую ветку извлечь.

Создание официального релиза

Если ваш модуль стабилен, пришло время создавать официальный релиз для него. Drupal выходил с 5.0, 5.1, и тому подобное, так же и вы должны отметить ваш код.

Полагаю, вы уже обозначили ветку (см. выше) и все ваши изменения зафиксированы. Вы можете задать метку вашему коду DRUPAL-6--1-0 (правильная метка для релиза “6.x-1.0”), следующей командой:

Переходим в папку модуля (не нужно выполнять, если вы и так там)

cd contributions/modules/example

отмечаем модуль меткой:

cvs tag DRUPAL-6--1-0

Команда cvs tag отмечает все файлы вашего проекта, как принадлежащие к определенному релизу. Отметьте, что вы можете отметить релиз как “beta”, добавив суффикс к метке. Например:

cvs tag DRUPAL-6--1-2-BETA1

После отметки модуля для релиза, вам так же надо создать для него ноду «релиз», таким образом, он будет виден в списке загрузок на странице вашего проекта на drupal.org. Как это сделать смотрите в материале: Создание релиза для вашего проекта на drupal.org.

Отметьте, обычно релиз делается после устранения главных ошибок или патчей связанных с безопасностью; не для низкоуровневых ошибок, типа устранение пробелов, небольшой правки текста и тому подобное.

ОТМЕТЬТЕ: Если вы нашли уязвимость в безопасности, пожалуйста сообщите об уязвимости к “Security team” (Команда по Безопасности) и не фиксируйте изменения до тех пор пока “Security team” не скажет вам сделать это. Это дает «Команде по Безопасности» время на отправку оповещения через информационный бюллетень по безопасности и удостовериться, что предложенная правка ошибки фактически устраняет уязвимость в безопасности.

Создание ветвей для новой разрабатываемой версии вашего модуля

После того, как создан стабильный релиз модуля, и вы хотите продолжить добавлять новые особенности, оставив оригинальный релиз модуля нетронутым.

Чтобы создать ветку для новой старшей версии вашего модуля (например, версии 2.0, совместимой с “Drupal 6.0”), используйте следующие команды:

Перейдем в директорию модуля (если вы не там):

cd contributions/modules/example

Создание новых веток всегда производите от HEAD, дабы не получить версии файлов типа 1.133.2.14.2.10, для этого используем –A:

cvs update –A
cvs tag -b DRUPAL-6—2

В конце концов, когда версия 2.0 готова для релиза, отметьте версию меткой 2.0, выполнив последовательность команд:

cd contributions/modules/example
cvs update -dP -r DRUPAL-6--2
cvs tag DRUPAL-6--2-0

Так же вы можете отредактировать вашу страницу проекта и нажать на под-вкладку “releases” и выставить старший релиз.

Создание релиза для разрабатываемой копии (snapshot) вашего модуля

Чтобы позволить людям тестировать ваш модуль в процессе разработки, вы можете сделать разрабатываемую копию (development snapshot). Таким образом создается “dev” копия, которая всегда будет указывать на новейшую версию модуля отдельной ветви.

Для этого, убедитесь, что ветка модуля соответствует версии ядра Drupal и затем создайте материал релиза (Создание релиза для вашего проекта на drupal.org), указывающую на нужную ветвь, а не на определенную метку релиза.

Отметьте: Разрабатываемая копия генерируется только 2 раза в день.

Удаление меток

Знайте, что это очень плохая идея удалять ветвь, после того как вы начали фиксировать изменения для нее.

Ноды релизов на drupal.org, как правило, никогда не удаляются. Если вы уверены что вам действительно необходимо удалить ноду релиза, тогда сообщите о проблеме вебмастерам drupal.org и один из тех, кто обслуживает сайт сможет удалить ноду релиза с drupal.org, но только если на то есть хорошая причина.

Когда есть нода релиза на drupal.org, указывающая на мету или ветвь, которую вы пытаетесь удалить, CVS покажет ошибку, когда вы попытаетесь управлять этими командами. Вы должны сначала удалить релиз, регистрируя проблему, как сказано выше, затем удалите метку или ветвь; затем создайте метку или ветвь, и затем обновите выпуск.

Для удаления метки, которая была создана по ошибке (и вы еще не создали для нее релиза), используйте следующую команду:

cvs tag -d DRUPAL-5--1-0

Если вам нужно удалить ветвь, созданную по ошибке, тогда так:

cvs tag -dB DRUPAL-5

Вспомогательную инструкцию по CVS вы так же можете получить на вкладке “CVS instructions” на странице вашего модуля.

Полезные ссылки

RSS-материал

2 Комментария [Нет новых]

Аватар пользователя xandeadx

как всё сложно =О

Аватар пользователя EllECTRONC

На самом деле так кажется только на первый взгляд, главное приноровиться и тогда — как по маслу.

Что ты об этом думаешь?

МультиВход
ИЛИ

Комментарии