Как увидеть изменения в подпунктах между коммитами
У меня есть ртутный репо с подпунктами (также ртутный). Представьте себе ситуацию, когда я изменил подпункты и основной репо. Теперь я хочу увидеть изменения между несколькими коммитами, включая изменения в подпунктах.
Является ли это возможным?
Я использую 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 на каталогах архива. Это немного утомительно (особенно если вы хотите различать множество наборов изменений), но вы получите "глубокий" визуальный анализ.