Как показать номер версии SVN в журнале git?
Я настраиваю свой журнал git для всех в 1 строке. В частности, я добавил следующий псевдоним:
lg = log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%an%Creset - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
Итак, когда я запускаю git lg
, я вижу следующее:
* 41a49ad - zain - commit 1 message here (3 hours ago)
* 6087812 - zain - commit 2 message here (5 hours ago)
* 74842dd - zain - commit 3 message here (6 hours ago)
Тем не менее, я хочу добавить туда номер версии SVN, поэтому он выглядит примерно так:
* 41a49ad - r1593 - zain - commit 1 message here (3 hours ago)
Нормальный git log
показывает вам номер версии SVN, поэтому я уверен, что это должно быть возможно. Как мне это сделать?
Ответы
Ответ 1
Когда вы говорите, что "обычный git log
показывает вам номер версии SVN", я предполагаю, что вы имеете в виду, что имеете дело с репозиторием, обработанным git svn
, который по умолчанию добавляет строку, подобную этой в конце синхронизированная запись:
git-svn-id: svn://path/to/[email protected]###### <domain>
Теперь, что касается git, это просто случайный текст, поэтому я сомневаюсь, что вы можете найти аксессуар %
, чтобы прочитать номер версии ######
оттуда.
На этом этапе лучшим вариантом будет просто разобрать вывод простого git log
. Здесь грубая отправная точка:
git log -z | tr '\n\0' ' \n' | sed 's/\(commit \S*\) .*git-svn-id: svn:[^@]*@\([0-9]*\) .*/\1 r\2/'
Ответ 2
Рассмотрим команду git svn
- функция журнала аналогична
git log
: git svn log
- у него есть опция
find-rev
(для получения ревизии SVN из ключа SHA1) (представлена в git 1.6.0)
Я не уверен, что вы можете объединить эти два параметра в одной командной строке.
Сценарий (немного похожий на этот, который не совсем то, что вам нужно, но все же может дать некоторую идею) может быть в порядке.
sdaau добавляет в комментарии:
Пример этого:
git svn find-rev $(git log --max-count 1 --pretty=format:%H)
Adversus добавляет в комментарии:
Обратите внимание, что find-rev
выполняет поиск в текущей ветки, поэтому, если вы находитесь в master
, а rxyz
произошло в ветки, find-rev
не найдет его.
Вы можете предоставить опции -B
(до) или -A
(после) для более широкого поиска, см. раздел справочной страницы git svn find-rev
.
Ответ 3
Run:
git rev-parse HEAD
который дает вам git commit hash.
Затем используйте этот хеш для коммита:
git svn find-rev <commit_hash>
Что дает вам ревизию svn.
Ответ 4
Закончено с чем-то вроде этого:
git svn log --oneline -1 | cut -d '|' -f1
Это дает последнюю ревизию из этого репо (вы можете настроить параметры git svn log
для отображения другой версии, но сохраните --oneline
и -1
), но с завершающим пробелом (что-то вроде "r9441 "
), которое я думаю следует легко вырезать.
Надеюсь, что это поможет...