Вдохновленный Git для начинающих: полное практическое руководство .
Это сборник информации по использованию Mercurial для начинающих для практического использования.
Новичок - программист, который коснулся системы контроля версий, не очень хорошо понимая ее.
Практически - охватывать ситуации, с которыми часто сталкивается большинство пользователей, - создание репозитория, ветвление, слияние, извлечение / перенос из / в удаленный репозиторий и т. Д.
Примечания :
- Объясните, как сделать что-то, а не как это реализовать.
- Разберитесь с одним вопросом на ответ.
- Ответьте четко и максимально кратко.
- Изменить / расширить существующий ответ, а не создавать новый ответ на ту же тему.
- Пожалуйста, предоставьте ссылку на Mercurial wiki или HG Book для людей, которые хотят узнать больше.
Вопросы:
Установка / настройка
- Как установить Mercurial?
- Как настроить Mercurial?
- Как вы создаете новый проект / репозиторий?
- Как вы настраиваете его, чтобы игнорировать файлы?
Работа с кодом
- Как вы получаете последний код?
- Как вы проверяете код?
- Как вы делаете изменения?
- Как вы видите, что не передано, или статус вашей текущей кодовой базы?
- Как вы удаляете файлы из хранилища?
- Как вы уничтожаете нежелательные коммиты?
- Как вы сравниваете две ревизии файла или ваш текущий файл и предыдущую ревизию?
- Как вы видите историю изменений в файле или хранилище?
- Как вы обрабатываете двоичные файлы (например, Visio Docs или среды компилятора)?
- Как вы объединяете файлы, измененные в одно и то же время?
- Как вы возвращаете набор изменений?
- Как вы вернетесь к предыдущей версии кода?
- Как вы извлекаете патч из определенного набора изменений?
- Как записать, что вы переименовали или удалили файл без использования команды Mercurial?
Пометка, ветвление, релизы, базовые показатели
- Как вы «помечаете» «тег» или «выпускаете» определенный набор ревизий для определенного набора файлов, чтобы вы всегда могли получить его позже?
- Как вы получаете конкретный «релиз»?
- Как вы ветвитесь?
- Как вы сливаете ветви?
- Как объединить части одной ветви в другую?
Другой
- Хороший плагин GUI / IDE для Mercurial? Преимущества недостатки?
- Любые другие общие задачи, которые должен знать новичок?
- Как мне взаимодействовать с Subversion?
Другие Mercurial ссылки
- Mercurial: полное руководство
- Mercurial Wiki
- Встречайте Mercurial | Peepcode Screencast
- Освоение ртути | TekPub Screencast
- Hg Init - учебный курс по Mercurial
hg add
игнорируете файлы, Mercurial будет отслеживать их. Например, если у вас есть куча файлов , такие какdeploy-test.conf
,deploy-production.conf
и т.д. , и не хотят версии их (они могут иметь пароли в них) , но вы делаете хотите версиюdeploy-template.conf
вы можете просто игнорироватьdeploy*
и вручную добавитьdeploy-templace.conf
.Как вы видите, что не передано, или статус вашей текущей кодовой базы?
Чтобы увидеть список файлов, которые были изменены:
Это напечатает каждый файл, который был изменен вместе с его статусом, который может включать:
M
- Изменено. Файл был изменен, и изменения не были зафиксированы.A
- Добавлено. Файл не отслеживался ранее, но если вы совершите фиксацию, Mercurial начнет отслеживать его.R
- удалено. Файл отслеживался ранее, но если вы совершите коммит, Mercurial перестанет отслеживать его в этом и последующих коммитах.?
- неизвестно. Файл в настоящее время не отслеживается Mercurial. Фиксация не повлияет на это, если вы неhg add
добавите его.!
- Отсутствует. Файл отслежен, но Mercurial не может найти его в рабочей копии.Чтобы увидеть изменения, которые фактически были внесены в файлы:
источник
Как вы создаете новый проект / репозиторий?
источник
Как мне взаимодействовать с Subversion?
Есть три способа:
Расширение конвертирования клонирует существующий репозиторий Subversion в Mercurial. Поставляется с Mercurial. Это работает примерно так:
Например, это захватит ствол хранилища memcached SixApart.
Расширение может постепенно вносить новые ревизии из хранилища Subversion в Mercurial (немного похоже на pull). Однако он не поддерживает получение версий Mercurial и отправку их обратно в Subversion (без push). [XXX: исправить это, если это не так] .
Расширение hgsubversion . Во многих отношениях это наиболее сложное решение, поскольку для взаимодействия с хранилищем Subversion используется API Subversion. Он стремится стать HG-СВН мост. Он допускает полное циклическое переключение ревизий (полное клонирование, извлечение и отправка), однако на момент написания этой статьи [XXX: исправьте это, если / когда оно станет неправильным], оно все еще находится в разработке и еще не выпущено официальных релизов. Как следствие, он работает только с самой современной версией Mercurial (1.3 на момент написания статьи).
tags/
чтобы отличать их от ветвей с одинаковыми именами).closed-branches
для закрытия веток, которые удалены в Subversion.hg svn <subcommand>
хотя и нацелен на интеграцию до такой степени, что вам не нужна часть 'svn' (т. Е. Он хочет обрабатывать клон Subversion настолько, насколько это возможно, как и любой другой репозиторий Mercurial) .;Это работает так:
клон:
ИЛИ (только для
svn://
URL)вытащить:
От себя:
входящие:
исходящие:
Проверка всего хранилища:
Hgsvn утилита ( BitBucket дерево ). До недавнего времени это позволяло вам только клонировать и извлекать хранилище Subversion, но
hgsvn 0.1.7
оно поддерживает push. [Я не знаю, насколько хорошо это толкает. Любой с большим опытом должен обновить это.] У этого есть следующие известные особенности:branches/some-feature
будет какhg branch some-feature
. Он устанавливает транкtrunk
(т. Е. В ветке Mercurial по умолчанию ничего нет, если пользователь явно не переключается на него).Это работает так:
клон:
вытащить:
От себя:
входящие:
исходящие:
Проверка всего хранилища:
Проверяю только багажник:
источник
hg convert
и это действительно занимает много времени, когда у вас есть хранилище SVN с большим количеством коммитов. Настройка локального репозитория с помощьюsvnsync
помогает значительно ускорить процесс, особенно когда вам нужно сделать это несколько раз, потому что в вашей команде convert были неверные параметры.svnsync
необходимо получить доступ к фактическим файлам хранилища, а не только к URL.Как вы сравниваете две ревизии файла или ваш текущий файл и предыдущую ревизию?
Оба используют
hg diff
. Когдаhg diff
используется все изменения в рабочей копии и отображается подсказка (последний коммит).Для "Как вы сравниваете две ревизии файла?"
Приведенная выше команда будет отличаться между rev1 и rev2 файла "file.code".
Для "Как вы сравниваете ваш текущий файл и предыдущую версию?"
Приведенная выше команда будет отличаться между текущей версией «file.code» и последней версией (последней принятой).
: D
источник
Как вы «помечаете» «тег» или «выпускаете» определенный набор ревизий для определенного набора файлов, чтобы вы всегда могли получить его позже?
Вы также можете клонировать свой репозиторий, чтобы создать специальный репозиторий тегов .
источник
hg tag my-tag
?Как вы ветвитесь?
$ hg branch my-branch
или
$ hg клон оригинального репозитория my-branch
Хотя следует отметить, что ветвь создает «виртуальный» каталог (то есть файлы остаются прежними, но hg обрабатывает их так, как если бы они были разными внутри системы), в то время как клон создает фактическую, полную копию. Строго говоря, клон не разветвляется.
источник
hg branch my-branch
Хороший плагин GUI / IDE для Mercurial?
графический интерфейс пользователя
Плагины
источник
Как вы делаете изменения?
Вызвать эту команду из текущего локального * mercurial репозитория
псевдонимы: CI
Где вариант может быть:
Пример команды будет:
ЗАМЕЧАНИЯ :
источник
Как настроить Mercurial?
Mercurial хранит информацию
~/.hgrc
о своей конфигурации в системах * nix и в%UserProfile%\mercurial.ini
системах Windows. (%UserProfile%
обычно"C:\Documents and Settings\[username]\"
в системах Windows 2000 или Windows XP и, как правило,C:\Users\[username]\
в системах Windows Vista и Windows 7.)В качестве отправной точки вы должны указать свое имя пользователя Mercurial, указав в своем поле
.hgrc
илиmercurial.ini
:Пользователи TortoiseHg в системах Windows могут альтернативно запускать
hgtk userconfig
См. Также « Создание файла конфигурации Mercurial » в главе 2 « Mercurial: Полное руководство ».
источник
Как вы сливаете ветви?
источник
Как установить Mercurial?
Пожалуйста, отредактируйте, если вы установили из исходного кода в Linux или использовали установщики Windows.
Mac OS X 10,4 (тигр), 10,5 (леопард)
Используйте Python easy_install (с Setuptools ):
Это находит последнюю версию (1.3.1 на момент написания) и устанавливает в:
В Python 2.6 также используется пакет установки Mercurial OS X (1.2.1 по состоянию на 26 июля 2009 г.), который жалуется на необходимость Python 2.5. Из документации видно, что Fink и Macports устанавливают версию 1.2.
Linux
Большинство явных пакетов Linux, похоже, отстают от текущей версии, поэтому используйте easy_install (как указано выше) или загрузите архив с Mercurial , распакуйте архив, перейдите в каталог mercurial и выполните:
(из Представления Mercurial, распределенной системы контроля версий )
Windows
Существует бинарный пакет последней версии Mercurial . TortoiseHg является расширением оболочки Windows для Mercurial и устанавливает его. Cygwin также может установить Mercurial.
В качестве альтернативы (инструкции слишком длинны, так что связаны здесь), вы можете создать оптимизированную или чистую версию Mercurial для Python из исходного кода.
источник
Как вы получаете последний код?
Mercurial запоминает, откуда был клонирован репозиторий (в .hg / hgrc), поэтому вы можете просто запустить:
вытащить последний код из origin-репозитория. (Это не обновляет рабочий каталог)
обновить рабочий каталог.
одновременно выполнять извлечение и обновление.
источник
.hg/hgrc
при выполнении клонирования, поэтому вам не нужно указывать его при нажатии / нажатии. Вы можете добавить больше путей к[paths]
разделу,.hg/hgrc
если хотите.Как вы проверяете код?
Где вариант может быть:
Где источник - это источник исходных файлов, расположенных в хранилище, где это может быть удаленный URL или каталог файловой системы. Например:
И место назначения - это место, где исходный код будет находиться в вашей локальной файловой системе.
источник
Как вы делаете изменения?
источник
Как вы видите, какие изменения будут отправлены в верхний репозиторий при нажатии?
Используйте
hg outgoing
для получения списка наборов изменений, которые будут установлены в репозиторий по умолчанию:Чтобы получить реальные изменения кода, используйте
-p
(--patch
). Это выведет каждую ревизию полностью:источник
Как вы удаляете файл из хранилища?
Чтобы удалить файл из хранилища и удалить его при следующей фиксации:
Чтобы удалить файл из хранилища, но не удалить его
или из Mercurial 1.3
источник
Как вы вернетесь к предыдущей версии кода?
Из этого вопроса
@van: Если позже вы совершите коммит, вы фактически создадите новую ветку. Тогда вы можете продолжить работу только над этой веткой или в итоге объединить существующую в нее.
источник
Как вы возвращаете набор изменений?
Доступны несколько вариантов
Easy Way (возврат одного набора изменений)
Жесткий путь (вручную различий и применения)
Шаг 1 : Создайте файл исправления, чтобы отменить то, что изменилось между версиями 107 и 108:
(поочередно, hg diff -r108 -r107 без --reverse будет делать то же самое)
Шаг 2 : примените файл патча:
Некоторые различия могут не применяться, например:
Файл .rej будет содержать содержимое diff, которое не удалось применить, вам нужно посмотреть.
источник
hg backout
?Как вы видите историю изменений в файле или хранилище?
Чтобы показать историю ревизий всего хранилища или файлов
или
И увидеть список в обратном порядке
источник
Как объединить части одной ветви в другую?
Включите расширение «трансплантат» в вашем .hg / hgrc
Загрузите целевую ветвь, а затем пересадите целевую ревизию.
Например: вишня выбрать ревизию 81 из ветви 'foo' в текущую ветку
источник
graft
команду, чтобы сделать то же самое.hg help graft
для получения дополнительной информацииКак вы извлекаете патч из определенного набора изменений?
Затем вы можете импортировать это в другую ветку с помощью:
источник