Используя Mercurial, есть ли простой способ разнести мою рабочую копию с файлом подсказки в удаленном репозитории по умолчанию - PullRequest
13 голосов
/ 01 октября 2008

При использовании mercurial я хотел бы иметь возможность разграничить рабочую копию файла с файлом подсказки в моем удаленном репозитории по умолчанию. Есть ли простой способ сделать это?

Я знаю, что могу сделать "hg входящий -p", чтобы увидеть входящие наборы исправлений изменений, но было бы неплохо просто увидеть фактические изменения для конкретного файла, которые я получил бы, если бы сделал последние новости (или то, что я собираюсь выпустить).

Самая простая вещь, о которой я могу подумать сейчас, - это создать небольшой скрипт, который просматривает расположение по умолчанию в .hg / hgrc и загружает файл с помощью curl (если он по http, иначе scp по ssh или просто сделайте прямое сравнение, если оно находится в локальной файловой системе), а затем измените рабочую копию или подсказку для этой временной копии.

Я пытаюсь продать mercurial своей команде, и один из членов моей команды поднял это сегодня как нечто, что они могут легко сделать в SVN с помощью инструментов GUI.

Ответы [ 4 ]

5 голосов
/ 03 октября 2008

После некоторого копания я наткнулся на расширение 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>
2 голосов
/ 01 октября 2008

для расширения метода Lars (по некоторым причинам комментарий не работает), вы можете использовать опцию -R в команде diff для ссылки на локальный репозиторий. Таким образом, вы можете использовать то же приложение diff, которое вы указали в hg

2 голосов
/ 01 октября 2008

Вы можете попробовать иметь два хранилища локально - одно для входящего, а другое для исходящего. Тогда вы должны иметь возможность делать различия с любыми инструментами. Смотрите здесь:

http://weblogs.java.net/blog/kohsuke/archive/2007/11/using_mercurial.html

0 голосов
/ 30 июля 2010

Используя шаблоны вы можете получить список всех измененных файлов:

hg incoming --template {files}
...