предсказать номер редакции перед фиксацией - PullRequest
1 голос
/ 23 августа 2011

Можно ли предсказать номер ревизии перед фиксацией?

Было бы полезно.Я хочу записать номер ревизии в журнал изменений и зафиксировать его вместе с предоставляемыми им изменениями.

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

Я пишу свои изменения в текстовом формате с использованием первого форматирования

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

пожалуйста, придерживайтесь вопроса
Я спрашиваю, возможно ли это и как, а не, имеет ли это смысл или что-то еще.




Почемумне это нужно?Мне нужна эта информация, чтобы человек, который развертывает приложение, знал, в какой ревизии появляются эти изменения, чтобы он мог соответствующим образом обновить рабочий сервер.В любом случае он читает журнал изменений, поскольку он содержит информацию об изменениях в базе данных и другие важные вещи.Было бы немного проще, если бы он не использовал blame, чтобы увидеть, к какой ревизии принадлежит эта запись.

Ответы [ 6 ]

6 голосов
/ 19 ноября 2012

Немного странно, но это должно работать в Linux: если вы наберете в командной строке

svn up

Последняя строка ответа будет

At revision 42.

или

Updated to revision 42.

Где 42 - номер редакции последнего коммита на всем сервере SVN.Таким образом, следующий коммит будет этот + 1. Вы можете получить его с помощью этой команды:

svn up | sed -ne 's/revision //p' | sed -e 's/[^0-9]*//g'

Если вы достаточно быстры, вы можете надеяться , что никто не будет коммитить раньшевы.Если у вас есть рабочая копия root сервера svn, вы можете заблокировать ее, чтобы предотвратить любую фиксацию, и разблокировать ее в конце:

svn lock rootdir
svn unlock rootdir
3 голосов
/ 13 декабря 2016

При таком подходе избегается взаимодействие с рабочей копией repo.

Прямой запрос к серверу SVN с помощью команды info в каталоге top root вашего репозитория:

svn info https://myserver/svn/my-project-root-dir

это покажет что-то вроде:

Path: my-project-root-dir
URL: https://myserver/svn/my-project-root-dir
Relative URL: ^/
Repository Root: https://myserver/svn/my-project-root-dir
Repository UUID: 7f430767-c695-4424-a1c3-24180d67394b
Revision: 2255
Node Kind: directory
Last Changed Author: joe
Last Changed Rev: 2255
Last Changed Date: 2016-11-13 20:22:33 +0100

, поэтому ваша "следующая" версия SVN будет 2256.

Скажем:

$ svn info https://myserver/svn/my-project-root-dir | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }'
2255

или получим автоматическое приращение(bash):

$ R=$(svn info https://myserver/svn/my-project-root-dir  | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }'); let R+=1; echo $R
2256
2 голосов
/ 23 августа 2011

Придерживаясь вопроса в соответствии с просьбой: Нет, это невозможно - во всяком случае, ненадежно.

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

Вы можете пойти дальше и угадать"все в порядке, мы находимся на ревизии 12345, поэтому следующая ревизия12346 ", но пока вы догадались (даже если это займет у вас несколько миллисекунд), я успешно отправил ревизию, и вы догадались, что это неправильно.Заметьте, не злым умыслом - у меня нет механизма, чтобы узнать, что вы собираетесь совершить.

0 голосов
/ 23 августа 2011

Я бы порекомендовал записать в журнал изменений номер проблемы, которую вы решаете, и система отслеживания проблем автоматически просканирует svn-репозиторий и установит связь между проблемой и номером редакции (многие отслеживают проблемы, JIRA, Redmine , Trac и т. Д.). Кроме того, использование номера ревизии ненадежно, потому что во время записи журнала изменений кто-то другой может сделать коммит раньше (уже упоминалось).

0 голосов
/ 23 августа 2011

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

Подробнее здесь и здесь

0 голосов
/ 23 августа 2011

Если вам нужен номер редакции для отслеживания проблем или для отслеживания некоторых функций, то вы можете использовать ловушку post-commit для отправки электронного письма на ваш сервер отслеживания проблем / функций со всем сообщением журнала фиксации. Система отслеживания проблем может затем проанализировать это сообщение и добавить содержимое к соответствующей проблеме. Ключ - номер проблемы, по которой вы делаете коммит. Другими словами, вам нужно указать номер проблемы в вашем сообщении журнала фиксации в определенном (ых) формате (ах), чтобы средство отслеживания ошибок могло его искать при анализе электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...