Как я показываю число пересмотра SVN в журнале мерзавца?

Я настраиваю свой журнал мерзавца, чтобы быть всеми в 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, таким образом, я уверен, что это должно быть возможно. Как я делаю это?

31
задан Mitch Dempsey 20 May 2010 в 04:18
поделиться

2 ответа

Когда вы говорите, что «обычный git log показывает вам номер ревизии SVN», я думаю, вы имеете в виду, что вы имеете дело с репозиторием, управляемым git svn, который по умолчанию добавляет строку, подобную этой, в конце синхронизированных фиксаций:

git-svn-id: svn://path/to/repository@###### <domain>

Теперь, что касается git, это просто случайный текст, поэтому я сомневаюсь, что вы можете найти доступ %, чтобы прочитать номер ревизии #### оттуда.

На этом этапе лучшим вариантом будет просто разобрать выходные данные простого git log самостоятельно. Вот грубая отправная точка:

git log -z | tr '\n\0' ' \n' | sed 's/\(commit \S*\) .*git-svn-id: svn:[^@]*@\([0-9]*\) .*/\1 r\2/'
9
ответ дан 27 November 2019 в 22:08
поделиться

Рассмотрим команду 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 раздел страницы руководства .

30
ответ дан 27 November 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: