Можно ли использовать ключевое слово RCS Revision для пути к депо?

Мне удалось использовать ключевое слово RCS $Revision$ в Perforce: когда я обновляю свой файл //depot/dev_projects/main/src/include/version.h, он обновит мое определение в файле, красиво:

#define VCS_VERSION "$Revision: #4 $"

Это включает в себя ревизию файла version.h.

Что мне действительно нужно, так это внедрить редакцию папки моего проекта //depot/dev_projects/main/src/ в файл version.h. Поэтому, если кто-то отправит файл, например, в //depot/dev_projects/main/doc/readme.txt, я хотел бы видеть #define VCS_REVISION "$Revision: #5 $" в version.h после того, как получу последнюю версию из хранилища.

Есть ли способ сделать это?


person Ivan Marinov    schedule 07.10.2011    source источник


Ответы (2)


У вас есть два повода для беспокойства: существующие файлы и новые файлы. Для существующих файлов (и я предполагаю, что вы говорите о файлах c/cpp) вы можете просто «p4 повторно открыть» файлы с типом файла «текст + k», а затем отправить эти файлы:

p4 reopen -t text+k //groovy_project/src/....cpp

Это снова откроет все файлы .cpp в папке //groovy_project/src и сделает их «текстовыми+k» (+k означает расширение ключевого слова RCS, но я думаю, вы это знаете, так как расширение ключевого слова у вас работает).

Для новых файлов следует использовать команду «p4 typemap». 'p4 typemap' вызовет карту шрифтов в вашем редакторе. Эта форма содержит сопоставление файлов с типами файлов для новых файлов, добавляемых в хранилище. Это типы файлов по умолчанию, которые будут получать новые файлы (если только новый добавленный файл явно не использует другой тип файла при добавлении файла). Например, если у вас есть

TypeMap:
       text+k //groovy_project/src/....cpp

в вашей карте типов все новые файлы .cpp в папке //groovy_project/src получат тип файла text+k, что позволяет расширить ключевое слово.

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

p4 add -t text ~/projects/groovy_project/src/newfile.cpp

этот файл будет добавлен в хранилище как текст, а не text+k.

Я надеюсь, что эта информация поможет.

РЕДАКТИРОВАТЬ:

После прочтения изменений к вашему исходному вопросу краткий ответ - нет, вы не можете добавить ревизию для папки. Немного более длинный ответ заключается в том, что Perforce на самом деле не знает о папках/каталогах. Он просто знает о файлах (и, следовательно, путь к файлу). Каталоги на самом деле не являются отдельными объектами в базе данных, чтобы заставить работать то, что вы хотите.

person Mark    schedule 07.10.2011
comment
Спасибо за быстрый ответ. Я не мог объясниться, поэтому я отредактировал свой вопрос. - person Ivan Marinov; 20.10.2011
comment
Еще раз спасибо, ваше редактирование, кажется, имеет место. Папка не является объектом для p4. Возможно, хуки коммитов могли бы помочь, но я больше не использую p4. :) - person Ivan Marinov; 25.09.2012

Я думаю, вам нужно ключевое слово $File$:

http://kb.perforce.com/article/54/using-rcs-keywords

person randy-wandisco    schedule 08.10.2011
comment
Спасибо за ваш ответ, но мне нужно что-то вроде $Revision$, но для папок. - person Ivan Marinov; 25.09.2012