Существует ли простой способ к на фиксации файла, автоматически вставьте информацию в сам файл кода (как автор, фиксируйте комментарий, фиксируйте дату, и т.д.)? Я хотел бы эту информацию, добавленную к блоку наверху каждого зафиксированного файла. По существу вся история пересмотра должна быть зарегистрирована в каждый файл кода...
Я вижу, что существует способ использовать свойства подрывной деятельности для достижения чего-то подобного, но я не вижу, как получить фактический комментарий фиксации в файл, и также я не вижу, как сохранить синхронный журнал, который имеет всю историю пересмотра в противоположность просто последней информации о фиксации.
Я лично не думаю, что это - хорошая идея, поскольку файл кода должен просто иметь код в нем, но к сожалению это - требование для моего текущего проекта.
Я бы предложил использовать вместо этого CVS . В него встроена эта возможность. CVS около 24 лет. Звучит так, как будто ваши требования к документации, возможно, относятся к эпохе, когда контроль версий не был обычным явлением, так что вам, вероятно, лучше использовать инструмент, который был создан в ту эпоху.
. Мы используем $Revision: 9584 $
в некоторых наших исходных файлах, и эта ревизия обновляется каждый раз, когда изменяется ревизия этого конкретного файла. Но я уверен, что вы имели в виду что-то другое.
] Я знаю, что это не тот ответ, который вы ищете, но я бы попытался отговорить их от этого.[
] [] Лучше всего было бы использовать подстановку ключевых слов, но SVN не предоставляет []$Log$[
] ключевое слово по уважительным причинам (см. []http://subversion.tigris.org/faq.html#log-in-source[]), что является той же самой причиной, по которой я бы использовал для аргументации против наличия лога в коде. [
] [] [] Я вижу, что есть способ использовать подрывную деятельность. свойства для достижения чего-либо похожий, но я не понимаю, как получить комментарий фактического коммита в файл, а также я не вижу, как хранить бегущий журнал, в котором есть весь история изменений в противовес простому информацию о последнем коммите.[
] [
]Вам не нужен комментарий к коммиту в вашем файле. В конце концов, для этого и нужен []svn log[
]. [
Subversion поддерживает различные ключевые слова, такие как $Id$
, $Author$
, $Revision$
и так далее. Для их использования необходимо установить свойство svn:keywords
соответственно. Однако, вы не можете вставить комментарий коммита, как это делает $Log$
. Смотрите FAQ subversion о причинах этого, и я могу согласиться только с приведенными там причинами. Помещение комментариев фиксации в файл просто нарушено, и любой такой комментарий ошибочен в тот момент, когда вы не можете проверить его по репозиторию.
Другие системы управления версиями также не поддерживают это, и большинство из них с подобной аргументацией (например, git).
Пожалуйста, не спорьте, что что-то подобное является "требованием для проекта". Если выпущенный код должен включать историю изменений, вы можете довольно легко добавить эту историю при создании релиза с помощью какого-нибудь вспомогательного скрипта. По крайней мере, диверсия просто не поддерживает его. И я бы настоятельно отказался от попыток достичь этого с помощью крючка для предварительной коммитации. Крючки для коммитов должны никогда не изменять данные, которые будут коммитированы.
Кроме того, как вы сами говорите, будучи глупой идеей, я не могу придумать простой способ сделать это с помощью бортовых методов SVN. После проверки (или обновления) каждого файла по скрипту вы должны будете пройтись по каждому файлу, определить блок "change log" в этом файле и обновить этот блок выводом svn log
. Это можно сделать, но это будет большая работа, вам придется следить за каждой рабочей копией на предмет изменений, и это очень ресурсоемко.
В остальном, возможно, лучше всего работать с крючком, но манипулирование файлами внутри репозитория вне контекста ревизии звучит ужасно, если это вообще возможно.