Как увидеть изменения в подпунктах между коммитами

У меня есть ртутный репо с подпунктами (также ртутный). Представьте себе ситуацию, когда я изменил подпункты и основной репо. Теперь я хочу увидеть изменения между несколькими коммитами, включая изменения в подпунктах.

Является ли это возможным?

Я использую TortoiseHG и diffmerge. При вызове diffmerege для визуального сравнения от TortoiseHg я не вижу изменений в подпунктах между несколькими коммитами.

3 ответа

В командной строке вы можете сделать следующее. Допустим, вы хотите увидеть все изменения в подпункте с именем example между ревизиями (в основном репо) c608f6017bd7 а также 72d284a44170,

В основном репо

hg diff -rc608f6017bd7:72d284a44170 .hgsubstate | grep example

вернет наборы изменений в репо example, что-то вроде:

-001fc0acef220bcd42898ef3932dee8330ea64c0 example
+77f9db4d51c4b483607178aba91c872b0adedf1e example

Теперь вы можете увидеть логи и различия изменений в подотчетах:

cd example
hg log -r001fc0acef220bcd42898ef3932dee8330ea64c0:77f9db4d51c4b483607178aba91c872b0adedf1e
hg diff -r001fc0acef220bcd42898ef3932dee8330ea64c0:77f9db4d51c4b483607178aba91c872b0adedf1e

Если вам это нужно часто, вы можете создать bash-скрипт с именем sublog лайк:

#!/bin/bash

r=$(hg diff -r$1:$2 .hgsubstate | grep $3 | cut -c 2-41 | tr '\n' ':' | sed 's/:$//'; echo '')
cd $3
hg log -r:$r

и используйте это как:

sublog c608f6017bd7 72d284a44170 example

Я могу рассказать вам только о том, как этого добиться в командной строке, но это также доступно с помощью tortoiseHG:

Большинство команд могут быть извещены о вложенных хранилищах с помощью -S или же --subrepos флаг. Таким образом, чтобы увидеть разницу между двумя наборами изменений X и Y, в том числе во всех под-репозиториях, выполните в главном репозитории:

hg diff -S -rX:Y

Имейте в виду, конечно, что он не будет показывать различия в суб-репозиториях, если не было изменений версии (-й) суб-репозитория, зафиксированных в основной.

С версиями TortoiseHg, которые я использовал (не включая последние несколько выпусков), я не видел способа сделать то, о чем вы спрашиваете. Хотя есть несколько вариантов:

  • вы можете вводить команды непосредственно в окне выходного журнала в TortoiseHg, так что вы можете сделать hg diff -S -rX:Y там.
  • Архивировать версии родительского репо, которые вы хотите разложить в некоторые каталоги (hg archive --repository <path-to-repo> -r <rev> -S -t files -- <outputfolderpath>или в TortoiseHg щелкните правой кнопкой мыши набор изменений, выберите " Экспорт" -> " Архив"). Тогда используйте diffmerge на каталогах архива. Это немного утомительно (особенно если вы хотите различать множество наборов изменений), но вы получите "глубокий" визуальный анализ.
Другие вопросы по тегам