После некоторого копания я наткнулся на расширение Rdiff , которое выполняет большую часть того, что я хочу.
Он не поставляется с Mercurial, но его можно установить путем клонирования хранилища:
hg clone http://hg.kublai.com/mercurial/extensions/rdiff
А затем измените файл ~ / .hgrc, чтобы загрузить расширение:
[extensions]
rdiff=~/path/to/rdiff/repo/rdiff.py
Это немного странно, поскольку фактически изменяет существующую команду "hg diff", определяя, является ли первый параметр удаленным URL-адресом. Если это так, то он будет отличать этот файл от вашего файла подсказок в вашем локальном репо (не рабочей копии). Это потому, что удаленный репозиторий является первым в аргументах, это обратное тому, что я ожидал, но вы можете передать «--reverse» в команду hg diff, чтобы изменить это.
Я мог видеть, что это потенциальные улучшения в расширении, но сейчас я могу обойти их с помощью функции оболочки bash / zsh в моем файле запуска. Он выполняет временную проверку моей рабочей копии (удерживаемой ртутной транзакцией, чтобы ее можно было откатить), выполняет обратную разность, а затем откатывает транзакцию, чтобы вернуть вещи обратно в прежнее состояние:
hgrdiff() {
hg commit -m "temp commit for remote diff" &&
hg diff --reverse http://my_hardcoded_repo $* &&
hg rollback # revert the temporary commit
}
А затем назовите его с помощью:
hgrdiff <filename to diff against remote repo tip>