Если указаны исходный и целевой файлы, SubWCRev копирует исходный файл в целевой, выполняя подстановку ключевых слов следующим образом:
Таблица 6.3. Список доступных ключевых слов
| Ключевое слово | Описание |
|---|---|
| $WCREV$ | Заменяется на наибольшую зафиксированную ревизию в рабочей копии. |
| $WCREV&$ | Заменяется на наибольшую зафиксированную ревизию в рабочей копии, дополняется значением после символа &. Например: $WCREV&0xFFFF$ |
| $WCREV-$, $WCREV+$ | Заменяется на наибольшую зафиксированную ревизию в рабочей копии, добавляя или отнимая значение после символа + или -. Например: $WCREV-1000$ |
| $WCDATE$, $WCDATEUTC$ | Заменяется на дату и время фиксации наибольшей ревизии. По умолчанию используется международный формат: yyyy-mm-dd hh:mm:ss. В качестве альтернативы вы можете указать пользовательский формат, который будет использован в strftime(), например: $WCDATE=%a %b %d %I:%M:%S %p$. Для получения списка возможных символов форматирования обратитесь к онлайн-справочнике. |
| $WCNOW$, $WCNOWUTC$ | Заменяется на текущую системную дату/время. Может быть использовано для указания времени сборки. Может быть использован формат даты/времени, описанный для $WCDATE$. |
| $WCRANGE$ | Заменяется на диапазон ревизий обновления в рабочей копии. Если рабочая копия в согласованном состоянии, то это будет единственная ревизия. Если рабочая копия содержит смешанные ревизии, или устарела, или преднамеренно была обновлена до определенной ревизии, то диапазон будет показан в форме 100:200. |
| $WCMIXED$ | $WCMIXED?TText:FText$ заменяется на TText, если есть смешанные обновления ревизий, или на FText, если нет. |
| $WCMODS$ | $WCMODS?TText:FText$ заменяется на TText, если были локальные изменения, или на FText, если не было. |
| $WCUNVER$ | $WCUNVER?TText:FText$ заменяется на TText если в рабочей копии есть неверсированные элементы, или FText если нет. |
| $WCEXTALLFIXED$ | Если все внешние изменения заменены на явные. то $WCEXTALLFIXED?TText:FText$ заменяется на TText. Иначе он заменяется на FText. |
| $WCISTAGGED$ | Если URL хранилища содержит шаблон классификации тегов. то $WCISTAGGED?TText:FText$ заменяется на TText. Иначе он заменяется на FText. |
| $WCURL$ | Заменяется на URL хранилища той рабочей копии, путь к которой был передан SubWCRev. |
| $WCINSVN$ | $WCINSVN?TText:FText$ заменяется на TText, если элемент версирован, или на FText, если нет. |
| $WCNEEDSLOCK$ | $WCNEEDSLOCK?TText:FText$ заменяется на TText, если у элемента установлено свойство svn:needs-lock, или на FText, если нет. |
| $WCISLOCKED$ | $WCISLOCKED?TText:FText$ заменяется на TText если элемент заблокирован, или на FText, если нет. |
| $WCLOCKDATE$, $WCLOCKDATEUTC$ | Заменяется на дату блокировки. Может быть использован формат даты/времени, описанный для $WCDATE$. |
| $WCLOCKOWNER$ | Заменяется на имя владельца блокировки. |
| $WCLOCKCOMMENT$ | Заменяется на комментарий блокировки. |
| $WCUNVER$ | $WCUNVER?TText:FText$ заменяется на TText, если в рабочей копии присутствуют неверсионные файлы или каталоги, или на FText, если таких файлов нет. |
SubWCRev напрямую не поддерживает вложение выражений, поэтому вы не можете использовать, к примеру, выражение
#define SVN_REVISION "$WCMIXED?$WCRANGE$:$WCREV$$"
Но вы можете обойти это с помощью других средств. Например,
#define SVN_RANGE $WCRANGE$ #define SVN_REV $WCREV$ #define SVN_REVISION "$WCMIXED?SVN_RANGE:SVN_REV$"
Некоторые их этих ключевых слов применяются к отдельным файлам, а не ко всей рабочей копии, поэтому имеет смысл использовать их, когда SubWCRev вызывается для сканирования одного файла. Это относится к $WCINSVN$, $WCNEEDSLOCK$, $WCISLOCKED$, $WCLOCKDATE$, $WCLOCKOWNER$ и $WCLOCKCOMMENT$.