Подвижный для новичков: категорическое практическое руководство

237
задан 32 revs, 19 users 31% 26 June 2019 в 01:11
поделиться

17 ответов

Как объединить ветки?

$ cd repository-where-i-want-to merge
$ hg pull branch-i-want-to-merge
$ hg merge # if necessary
3
ответ дан 23 November 2019 в 03:24
поделиться

Как вы делаете ветвление?

$ hg branch my-branch

или

$ hg clone original-repository my-branch

Хотя следует отметить, что branch создает «виртуальный» каталог (т. Е. Файлы остаются такими же, но hg обрабатывает их, как если бы они были другими внутри системы), а clone создает реальную полную копию. Строго говоря, клон не ветвится.

4
ответ дан 23 November 2019 в 03:24
поделиться

Как настроить игнорирование файлов?

Игнорирование настраивается в обычном текстовом файле с именем .hgignore в корне вашего репозитория. Добавьте его, как обычный файл, с помощью:

hg add .hgignore

Для сопоставления файлов доступны две опции синтаксиса: glob и regexp. glob - это unix-подобное расширение имени файла, а regexp - это регулярные выражения. Вы активируете каждый, добавляя синтаксис: glob или синтаксис: regexp в отдельной строке. Все следующие строки будут использовать этот синтаксис до следующего маркера синтаксиса. Вы можете иметь столько маркеров синтаксиса, сколько хотите. Синтаксис по умолчанию - regexp, поэтому, если вы используете только regexp, вам не нужен маркер синтаксиса.

Вы можете добавлять комментарии с помощью #

Пример:

# python temporary files
syntax: glob
*.pyc

#editor autosaves
*~

# temporary data
syntax: regexp
temp

Игнорировать применяется только к неуправляемым файлам (т. Е. К файлам, которые еще не зарегистрированы).

16
ответ дан 23 November 2019 в 03:24
поделиться

Как создать новый проект / репозиторий?

$ hg init my-repository
6
ответ дан 23 November 2019 в 03:24
поделиться

Как вы «помечаете» «тег» или «выпускаете» определенный набор ревизий для определенного набора файлов, чтобы вы всегда могли извлечь его позже?

$ hg tag my-tag

Вы также можете клонируйте свой репозиторий, чтобы создать специальный тег репозиторий.

$ hg clone working-repository my-tag-repository
4
ответ дан 23 November 2019 в 03:24
поделиться

Как установить Mercurial?

Пожалуйста, отредактируйте аккуратно, если вы устанавливали из исходного кода в Linux или использовали установщики Windows.

Mac OS X 10.4 (Tiger), 10.5 (Leopard) )

Используйте easy_install Python (с Setuptools ):

sudo easy_install mercurial

Это находит последнюю версию (1.3.1 на момент написания) и устанавливается по адресу:

/Library/Frameworks/Python.framework/Versions/2.6/bin/

С Python 2.6 это также позволяет обойти Пакет установщика Mercurial OS X (версия 1.2.1 от 26 июля 2009 г.) жалуется, что ему нужен Python 2.5. Из документации видно, что Fink и Macports устанавливают версию 1.2.

Linux

Большинство явных пакетов Linux отстают от текущей версии, поэтому используйте easy_install (как указано выше) или загрузите архив Mercurial , распакуйте архив, перейдите в каталог mercurial и запустите:

$ make
$ sudo make install    # do a system-wide install
$ hg debuginstall      # sanity check
$ hg                   # see help

(из Введение в Mercurial, распределенную систему контроля версий )

Windows

Имеется бинарный пакет последней версии Mercurial . TortoiseHg - это расширение оболочки Windows для Mercurial и устанавливает его. Cygwin также может установить Mercurial.

В качестве альтернативы (инструкции слишком длинные, поэтому ссылки здесь), вы можете построить оптимизированную или чистую версию Mercurial на Python из исходников .

3
ответ дан 23 November 2019 в 03:24
поделиться

Только хранимые процедуры напрямую предотвращают внедрение SQL, если вы вызываете их параметризованным способом. Если в вашем приложении все еще есть строка с именем процедуры и объединением параметров из пользовательского ввода в эту строку в вашем коде, у вас все равно будут проблемы.

Однако при использовании исключительно хранимые процедуры позволяют добавить дополнительную защиту, позволяя отключать разрешения для всего, кроме команды EXEC. Помимо этого, параметризованные запросы / подготовленные операторы обычно кэшируются сервером и поэтому почти во всех отношениях похожи на хранимую процедуру.

Несмотря на это, хранимые процедуры имеют два больших преимущества для крупных предприятий:

  • Они позволяют определять интерфейс приложения для базы данных, или статус вашей текущей кодовой базы?

    Чтобы увидеть список файлов, которые были изменены:

    $ hg status
    

    Будет напечатан каждый файл, который был изменен вместе с его статусом, который может включать:

    • M - Изменено. Файл был изменен, но изменения не зафиксированы.
    • A - Добавлен. Раньше файл не отслеживался, но если вы зафиксируете его, Mercurial начнет отслеживать его.
    • R - Удалено. Файл отслеживался раньше, но если вы сделаете коммит, Mercurial перестанет отслеживать его в этом и будущих коммитах.
    • ? - Неизвестно. Файл в настоящее время не отслеживается Mercurial. Фиксация не повлияет на него, если вы не используете hg add , чтобы добавить его.
    • ! - Отсутствует. Файл отслежен, но Mercurial не может найти его в рабочей копии.

    Чтобы увидеть изменения, которые на самом деле были внесены в файлы:

    $ hg diff
    
7
ответ дан 23 November 2019 в 03:24
поделиться

Как получить последний код?

Mercurial запоминает, откуда был клонирован репозиторий (в .hg / hgrc), поэтому вы можете просто запустить:

hg pull

, чтобы получить последний код из исходного репозитория. (Это не обновляет рабочий каталог.)

hg update

для обновления рабочего каталога.

hg pull -u

для одновременного выполнения извлечения и обновления.

3
ответ дан 23 November 2019 в 03:24
поделиться

Как взаимодействовать с Subversion?

Есть три способа:


Расширение преобразования клонирует существующий репозиторий Subversion в репозиторий Mercurial. Он поставляется с Mercurial. Это работает примерно так:

hg convert <Subversion URL or directory> <path to new Mercurial repository>

Например, это захватит ствол репозитория SixApart memcached.

hg convert http://code.sixapart.com/svn/memcached/trunk

Расширение может постепенно вводить новые ревизии из репозитория Subversion в Mercurial (что-то вроде pull). Однако он не поддерживает получение ревизий Mercurial и отправку их обратно в Subversion (без отправки). [XXX: Исправьте это, если это неверно] .


Расширение hgsubversion . Во многих отношениях это наиболее сложное решение, так как оно использует Subversion API для связи с репозиторием Subversion. Его цель - стать мостом hg-svn. Он позволяет выполнять полный цикл изменений (полное клонирование, извлечение и отправка). Однако на момент написания [XXX: исправьте это, если / когда оно станет некорректным] , оно все еще находится в разработке, и его нет пока официальных релизов. Как следствие, он работает только с самой последней версией Mercurial (1.3 на момент написания).

  • Он сопоставляет теги и ветви (предшествующие всем тегам с помощью тегов / , чтобы отличать их от одноименных ветвей).
  • Он поддерживает специальную ветку closed-branch для закрытия ветвей, которые удаляются в Subversion.
  • Это требует , чтобы репозиторий Subversion был размещен в соответствии с соглашение о соединительных линиях / ветвях / тегах.
  • Набор команд обычно hg svn , хотя он нацелен на интеграцию до такой степени, что вы этого не сделаете. ему не нужна часть 'svn' (т.е. он хочет обрабатывать клон Subversion как можно больше, как любой другой репозиторий Mercurial).;

Он работает следующим образом:

clone: ​​

hg svnclone <Subversion URL> 

OR (только для ] svn: // URL-адреса)

hg clone <svn:// URL>

pull:

hg svn pull

push:

hg svn push

incoming:

hg svn incoming

outgoing:

hg svn outgoing

Проверка всего репозитория:

hg svnclone http://code.sixapart.com/svn/memcached

hgsvn утилита ( дерево битовых пакетов ). До недавнего времени это позволяло только клонировать и извлекать репозиторий Subversion, но начиная с hgsvn 0.1.7 он поддерживает push. [Не знаю, насколько хорошо толкает. Любой, у кого больше опыта, должен обновить это.] Он имеет следующие примечательные особенности:

  • Он генерирует тег Mercurial для каждого тега SVN.
  • Он помещает тег local в каждые ], чтобы отметить его ревизию SVN.
  • Каждая ревизия Mercurial помещается в именованную ветку, названную в честь ее ветки SVN. Например, branch / some-feature будет иметь вид hg branch some-feature . Он помещает ствол в ствол (т.е. ничего нет в ветке Mercurial по умолчанию, если пользователь явно не переключается на нее.)
  • Он будет пытаться идентифицировать ветки и теги и создавать их, но если это возможно Это просто их пропускает. Это удобно, когда репозиторий Subversion не соответствует стандартному макету ствола / веток / тегов.

Это работает следующим образом:

clone: ​​

hgimportsvn <Subversion URL>

pull:

hgpullsvn

push:

hgpushsvn

incoming:

hgpullsvn -n

исходящие:

hgpushsvn -n

Извлечение всего репозитория:

hgimportsvn http://code.sixapart.com/svn/memcached

Извлечение только ствола:

hgimportsvn http://code.sixapart.com/svn/memcached/trunk
5
ответ дан 23 November 2019 в 03:24
поделиться

Как вы фиксируете изменения?

$ hg commit -m "Commit message"
1
ответ дан 23 November 2019 в 03:24
поделиться

Как вы проверяете код?

hg clone [OPTION]... SOURCE [DEST]

Где может быть опция:

 -U --noupdate      the clone will only contain a repository (no working copy)
 -r --rev           a changeset you would like to have after cloning
    --pull          use pull protocol to copy metadata
    --uncompressed  use uncompressed transfer (fast over LAN)
 -e --ssh           specify ssh command to use
    --remotecmd     specify hg command to run on the remote side

Где источник - это источник исходных файлов, находящихся в репозитории, где он может быть удаленным URL или каталог файловой системы. Например:

А место назначения - это место, где исходный код будет расположен в вашей локальной файловой системе.

3
ответ дан 23 November 2019 в 03:24
поделиться

Как вы сравниваете две ревизии файла или текущий файл и предыдущую ревизию?

Оба используют hg diff . Когда используется hg diff , отображаются все изменения в рабочей копии и подсказка (последняя фиксация).

Для «Как сравнить две версии файла?»

$ hg diff -r{rev1} -r{rev2} {file.code}

Приведенная выше команда покажет различие между rev1 и rev2 "file.code".

Для "Как вы сравниваете текущий файл и предыдущую ревизию?"

$ hg diff {file.code}

Вышеупомянутая команда покажет разницу между текущей версией "file.code" "и последняя ревизия (последняя внесенная).

: D

5
ответ дан 23 November 2019 в 03:24
поделиться

Как настроить Mercurial?

Mercurial хранит свою информацию о конфигурации в ~ / .hgrc в системах * nix и в % UserProfile% \ mercurial. ini в системах Windows. (% UserProfile% обычно "C: \ Documents and Settings \ [имя пользователя] \" в системах Windows 2000 или Windows XP и обычно C: \ Users \ [ имя пользователя] \ в системах Windows Vista и Windows 7.)

В качестве отправной точки вы должны установить свое имя пользователя Mercurial, поместив следующее в свой .hgrc или mercurial.ini :

# This is a Mercurial configuration file.
[ui]
username = Firstname Lastname <email.address@example.net>

Пользователи TortoiseHg в системах Windows могут альтернативно запустить hgtk userconfig

См. Также « Создание файла конфигурации Mercurial » в главе 2 в « Ртутный:

3
ответ дан 23 November 2019 в 03:24
поделиться

Как вы фиксируете изменения?

Вызов этой команды из текущего локального репозитория * mercurial

hg commit [OPTION]... [FILE]...

псевдонимы: ci

  • Локальный репозиторий mercurial имеет .hg внутри текущего каталога

Где параметр может быть:

 -A --addremove     mark new/missing files as added/removed before committing
    --close-branch  mark a branch as closed, hiding it from the branch list
 -I --include       include names matching the given patterns
 -X --exclude       exclude names matching the given patterns
 -m --message       use <text> as commit message
 -l --logfile       read commit message from <file>
 -d --date          record datecode as commit date
 -u --user          record user as committer

пример команды:

hg commit -m "added readme" README

ПРИМЕЧАНИЯ :

  • Если список файлов опущен, все изменения, о которых сообщает «hg status», будут зафиксированы.
  • Если вы фиксируете результат слияния, не указывайте никаких имен файлов или фильтров -I / -X.
  • Если сообщение фиксации не указано, запускается настроенный редактор и запрашивает у вас сообщение.
3
ответ дан 23 November 2019 в 03:24
поделиться

Как узнать, какие изменения будут отправлены в вышестоящий репозиторий при нажатии?

Используйте hg outgoing , чтобы получить список наборов изменений, которые будут установлены по умолчанию репозиторий:

$ hg outgoing

Чтобы получить фактические изменения кода, используйте -p ( - patch ). Это выведет все изменения полностью:

$ hg outgoing -p
1
ответ дан 23 November 2019 в 03:24
поделиться

Хороший плагин GUI / IDE для Mercurial?

GUI

  • ] TortoiseHg практически для любой ОС. Включает интеграцию с Windows Explorer. Он также работает в Linux и некоторых других ОС, в том числе в Max OS X. У него несколько неуклюжий интерфейс и сначала неудобно использовать его, но он очень полный и мощный.
  • Murky работает на Mac OS X 10.5 или новее. Murky хорош для изучения репозитория и основных команд, но вам также необходимо знать, как использовать командную строку.
  • MacHg - это хороший графический интерфейс для Mac OS X, который имеет немного больше функциональности и совершенства, чем Murky, но вам все равно понадобится командная строка с ним.
  • SourceTree изначально был клиентом Mac , версия для Windows была доступна совсем недавно. Довольно приятный пользовательский интерфейс (по крайней мере, в OS X), поддерживает большинство функций Hg, включая полку.

Плагины

4
ответ дан 23 November 2019 в 03:24
поделиться

Как вы видите историю изменений файла или репозитория?

Чтобы показать историю ревизий всего репозитория или файлов

$ hg log {file(s)}

или

$ hg history {file(s)}

И для см. список в обратном порядке

$ hg log -r:
1
ответ дан 23 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: