Оновлення від червня 2012 року. Зараз, здається, існують такі методи сумісності Git / Hg, коли розробник хоче працювати з git сторони:
Встановіть Mercurial та розширення hg-git . Останнє можна зробити за допомогою менеджера пакунків або за допомогою easy_install hg-git
. Потім переконайтеся, що у вашому ~ / .hgrc:
[extensions]
hggit =
Можливо, ви побачите кілька посилань, які говорять про вказівку bookmarks
розширення і тут, але це вбудовано в Mercurial з версії 1.8. Ось кілька порад щодо встановлення hg-git у Windows .
Після того, як у вас є hg-git, ви можете використовувати команди приблизно так, як розміщений вище Abderrahim Kitouni . Цей метод вдосконалюється та змінюється з 2009 року, проте існує дружня обгортка: git-hg-again . У цьому каталозі топлевель використовується робочий каталог одночасно для Mercurial і Git. Він створює закладку Mercurial, яка підтримує синхронізацію з кінчиком default
(безіменної) гілки в сховищі Mercurial, і оновлює локальну гілку Git з цієї закладки.
git-remote-hg - інша обгортка, також заснована наhg-git
розширенніMercurial. Це додатково використовуєgit-remote-helpers
протоколи (звідси і його назва). Він використовує каталог топлевель лише для робочого каталогу Git; він зберігає своє сховище Меркурія голим. Він також підтримує друге голе сховище Git, щоб зробити синхронізацію між Git та Mercurial більш безпечною та ідіоматичною.
ГИТ-Hg скрипт (раніше підтримується тут ) використовує інший метод, заснований на hg-fast-export
від швидкого експорту проекту . Як і метод 2, цей також зберігає оголене сховище Mercurial і додатковий голий сховище Git.
Цей інструмент ігнорує закладки Mercurial і замість цього імпортує кожну названу гілку Mercurial у гілку Git, а за замовчуванням (без назви) Mercurial гілку в master.
Деякі коментарі розглядають цей інструмент як лише hg-> git, але він стверджує, що він об'єднався у підтримку git-> hg push 7 грудня 2011 року. Однак, як я пояснюю в огляді цих інструментів , як цей інструмент намагається реалізувати Підтримка натискань не здається справною.
Також є ще один проект під назвою git-remote-hg . На відміну від перерахованої вище версії, ця не покладається на hg-git, а натомість безпосередньо отримує доступ до API Mercurial Python. Наразі для його використання також потрібна виправлена версія git. Я ще цього не пробував.
Нарешті, Tailor - це проект, який поступово перетворює між різними VCS. Здається, розвиток цього не буде агресивно тривати.
Перші три з цих підходів виглядали досить легкими, щоб переконати мене розслідувати. Мені потрібно було налаштувати їх деякими способами, щоб змусити їх працювати на моєму налаштуванні, і я побачив деякі способи їх ще більше налаштувати, щоб покращити їх, а потім я ще більше налаштував їх, щоб змусити їх поводитись більше, як один з одним, щоб я міг оцінити їх більш ефективно. Тоді я подумав, що й іншим, можливо, хотілося б зробити ці налаштування, щоб зробити таку ж оцінку. Тому я створив вихідний пакет, який дозволить вам встановити мої версії будь-якого з перших трьох інструментів. Слід також подбати про встановлення потрібних hg-fast-export
деталей. (Вам потрібно встановити hg-git
самостійно.)
Я закликаю вас спробувати їх і вирішити для себе, що найкраще працює. Я буду радий почути про випадки, коли ці інструменти ламаються. Я спробую тримати їх в синхронізації із змінами вгору, і щоб переконатися, що автори висхідного потоку знають про зміни, які я вважаю корисними.
Як я вже згадував вище, оцінюючи ці інструменти, я прийшов до висновку, який git-hg
корисний лише для витягування з Меркуріалу, а не для натискань.
Так само, ось деякі корисні порівняння / посібники з перекладу між Git та Mercurial, в деяких випадках націлені на користувачів, які вже знають Git: