используя мерзавец, но нажимая на Mercurial? - PullRequest
6 голосов
/ 26 октября 2011

У меня есть новая работа, однако они используют Mercurial для контроля версий, и большая часть моего опыта связана с git. Я пытаюсь выучить Mercurial, но способ его ветвления (даже с такими расширениями, как закладки) просто не имеет никакого смысла для меня. Кто-нибудь знает способ использовать git локально, но нажать на Mercurial?

Я попробовал подключаемый модуль hg-git и дошел до того, что я могу зафиксировать его в git и перенести эти изменения в удаленное хранилище Mercurial, однако проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, какое учебное пособие я нашел, я не могу вытащить новые изменения из Mercurial обратно в GIT (что делает все это бесполезным на этом этапе). Если у вас есть ссылка на то, как настроить hg-git для работы с push-файлами на mercurial, сообщите мне об этом.

Решение (я думаю)

Основываясь на комментариях, сделанных Ленивым Барсуком, я думаю, что это будет работать: http://ryanzec.com/index.php/blog/details/9

Ответы [ 3 ]

3 голосов
/ 27 октября 2011

Подумайте немного, посмотрите альтернативное решение, такое же кривое и кривое, но менее претенциозное (я надеюсь) - 3 репо (2 Mercurial + 1 Git) в 3-уровневой архитектуре цепочки

У них есть (локально) имена, используемые ниже:

  • Master (hg) - центральное Mercurial репо компании
  • Mediator (hg) - промежуточное программное обеспечение для перевода наборов изменений, созданное как клон Master
  • WorkHorse (git) - конечное рабочее место, пустое при запуске

Посредник имеет почти идентичные настройки (hg-git, закладки) для hg-repo из решения 1, за исключением одной детали в разделе [paths]hgrc - будет два входа в: Master и WorkHorse, чтобы можно было тянуть | толкать в обоих направлениях, с Master и WorkHorse

Рабочий процесс:

  • Изменения извлечения посредника изMaster, push в WorkHorse (наборы изменений представлены как есть, без свертывания, в отличие от решения 1)
  • Вся (почти не уверенная в слияниях) работа происходит в WorkHorse
  • Посредники извлекают изменения из WorkHили нажмите на Мастер
3 голосов
/ 26 октября 2011

Вы можете работать с конечной точкой Mercurial из git, но, в отличие от обратного направления (hg -> git), вам потребуется оба VCS и два репо в одном месте

  1. Установите Mercurial
  2. Установите расширение hg-git для Mercurial
  3. Убедитесь, что вы включили расширение закладки Hg в вашем .hgrc
  4. Добавить в свой .hgrc:

    [git]
    intree=1
    
  5. Клонировать свое Mercurial репо

    hg clone ... repo
    
  6. Перейти к репо

    cd repo
    
  7. Создание локальной закладки, отслеживающей вашу ветку Mercurial по умолчанию - это то, что будет экспортировано в ваш Git

    hg bookmark hg/default -r default
    
  8. Экспорт в репозиторий git

    hg gexport
    
  9. Настройка Hg для игнорирования репозитория Git

    echo ".git" >> .hg/hgignore
    
  10. Настройка Git для игнорированиярепозиторий Hg

    echo ".hg*" >> .git/info/exclude
    
  11. Сконфигурируйте Git так, чтобы он игнорировал те же вещи, что и Mercurial

    git config core.excludesfile `pwd`/.hg/hgignore
    
  12. Проследите, чтобы ваша основная ветка отслеживала экспортированную Hgветвь по умолчанию

    git branch --track master hg/default
    git reset --hard
    
  13. Работа и коммит в Git как обычно

  14. Экспорт ваших изменений в Hg

    hg gimport
    
  15. толкнуть всех в мир

    hg push
    

Для повседневной работы повторите шаги 13-15

PS: Работа от HG до Git производит намного меньше действий и головной боли

1 голос
/ 28 мая 2013

В настоящее время существует новое расширение git-remote-hg, которое делает то, что вам нужно.Кажется, это аналог плагина Hg-Git.Смотри http://felipec.wordpress.com/2012/11/13/git-remote-hg-bzr-2/

...