Используя Mercurial, есть ли простой способ разнести мою рабочую копию с файлом подсказки в удаленном репозитории по умолчанию
При использовании mercurial я хотел бы иметь возможность разграничить рабочую копию файла с файлом подсказки в моем удаленном репозитории по умолчанию. Есть простой способ сделать это?
Я знаю, что могу сделать "hg входящий -p", чтобы увидеть входящие наборы исправлений изменений, но было бы неплохо просто увидеть фактические изменения для конкретного файла, которые я получу, если сделаю выборку последние вещи (или то, что я мог бы выкинуть).
Самая простая вещь, о которой я могу подумать сейчас, - это создать небольшой скрипт, который просматривает расположение по умолчанию в.hg / hgrc и загружает файл с помощью curl (если он через http, в противном случае scp его через ssh, или просто выполните прямой diff, если он находится в локальной файловой системе), а затем для сравнения рабочей копии или подсказки с этой временной копией.
Я пытаюсь продать mercurial своей команде, и один из членов моей команды сегодня поднял этот вопрос как нечто, что они могут легко сделать в SVN с помощью инструментов GUI.
4 ответа
После некоторого копания я наткнулся на расширение 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>
Чтобы расширить метод Lars (по какой-то причине комментарий не работает), вы можете использовать -R
вариант на diff
Команда для ссылки на локальный репозиторий. Таким образом, вы можете использовать то же приложение diff, которое вы указали в hg
Вы можете попробовать иметь два хранилища локально - одно для входящего материала, а другое для исходящего. Тогда вы сможете делать различия с любыми инструментами. Посмотреть здесь:
http://weblogs.java.net/blog/kohsuke/archive/2007/11/using_mercurial.html
Используя шаблоны, вы можете получить список всех измененных файлов:
hg incoming --template {files}