Как по умолчанию включить svn: ключевые слова?

Есть ли способ включить svn: Keywords по умолчанию, чтобы это свойство не нужно было включать для каждого ключевого слова при каждом добавлении нового исходного файла?

3 ответа

Решение

Как упоминалось выше, вы можете использовать авто-свойства для этого, но вы должны задать себе один большой вопрос:

  • Почему вы хотите использовать ключевые слова?

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

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

Я также знаю, что не могу доверять ключевым словам, содержащимся в сценариях оболочки, которые могут быть на сайте клиента. Сценарий оболочки может сказать номер редакции, но сценарий оболочки мог быть отредактирован.

Если вам действительно это действительно нужно, и это то, что нужно применять на вашем сайте, вам понадобится триггер предварительной фиксации для сбоя, когда свойство ключевого слова отсутствует в файле. Авто-свойства могут быть установлены только для клиента. Это означает, что вы должны убедиться, что у каждого из ваших разработчиков есть этот набор. Каждый раз, когда они получают новый компьютер, вам придется проверять его снова.

Также это не гарантирует, что свойство находится в файле. Старые файлы в хранилище не будут добавлены волшебным образом, даже если они отредактированы. (Авто-свойства добавляются только при добавлении файла в хранилище). Нет ничего, что мешало бы разработчику удалить его. Или, редактируя их авто-свойства в настройках.

Вы должны использовать триггер предварительной фиксации, чтобы гарантировать, что свойство svn: Keywords находится в каждом файле, где оно требуется, и что оно установлено правильно. Хук pre-commit просто откажется от фиксации транзакции, если это свойство не установлено. Застройщик будет вынужден добавить свойство. После некоторых трудностей разработчики настроят свой клиент Subversion для использования авто-свойств и поддерживают его сами.

У меня просто получился триггер перед фиксацией, который может обеспечить это. Триггер написан на Perl, но не требует ничего, кроме стандартных модулей, поэтому его легко настроить. Вы можете настроить его так, чтобы он указывал, для каких файлов требуется ключевое слово и какое оно должно быть установлено. Если файл фиксируется и у него нет правильного значения атрибута svn: Keywords, фиксация завершится неудачно, и в сообщении об ошибке будет объяснено, почему фиксация не удалась и что нужно сделать разработчику.

Да, с автоматическими свойствами Subversion: http://www.dcepler.net/post.cfm/subversion-auto-properties

Каждая запись [auto-props] section - это глобус файла, за которым следуют свойства Subversion, которые автоматически применяются при добавлении файла, соответствующего глобусу. Например, если вы хотите, чтобы все CPP-файлы имели определенный набор свойств по умолчанию, следуйте инструкциям на http://www.dcepler.net/post.cfm/subversion-auto-properties и измените следующую строку в соответствии с ваши предпочтения:

*.cpp = svn: eol-style = native; svn: Keywords="Автор Дата Id Rev URL"; SVN: мим-тип = текст / обычный

Обратите внимание, что если вы добавили файлы с svn add и впоследствии включенные автоматические свойства, автоматические свойства не будут применены к добавленным файлам. Автоматические свойства применяются только к файлам, которые добавляются после включения автоматических свойств.

Хранение ключевых слов SVN в наших программах на PL/SQL (и в сценариях SQL) значительно повысило эффективность процессов разработки и целостности системы. Когда изменение отправляется в производство, оно отслеживается и управляется ключевым словом Revision. До реализации этого процесса перемещения файлов и обеспечения развертывания правильного файла было очень подвержено ошибкам. Кроме того, мы можем опросить базу данных на предмет данных о версии (см. SQL ниже).

  --
  ---------  Begin Version Control Data----------------------------------------
  -- $LastChangedDate: 2014-06-27 13:45:09 -0500 (Fri, 27 Jun 2014) $
  -- $Revision: 1750 $
  -- $LastChangedBy: kilarvk $
  -- $URL: svn://jdcsubv01/SQL/JDC/Trunk/JDC_UTIL.pks $
  ---------  End Version Control Data -----------------------------------------
  -- 

--select SVN Keyword Info
SELECT OWNER,
       NAME,
       TYPE,
       SUBSTR(TEXT,INSTR(TEXT,'$')-1) AS KEYWORD
FROM ALL_SOURCE 
WHERE OWNER = UPPER(NVL('&owner',OWNER))
   AND NAME = UPPER(NVL('&&pgm_name',NAME))
   AND (text LIKE '%$Revision%'
     OR TEXT LIKE '%$URL%'
     OR TEXT LIKE '%$Id%'
     OR TEXT LIKE '%$LastChanged%')

Пример:

JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $Revision: 1445 $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedBy: vamsisx $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $
Другие вопросы по тегам