Как по умолчанию включить svn: ключевые слова? - PullRequest
8 голосов
/ 08 сентября 2011

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

Ответы [ 3 ]

11 голосов
/ 08 сентября 2011

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

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

*.cpp        = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain

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

3 голосов
/ 08 сентября 2011

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

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

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

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

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

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

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

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

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

1 голос
/ 05 сентября 2014

Хранение ключевых слов 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 $
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...