文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== Mercurial - 分散型バージョン管理システム ====== 本家: [[https://www.mercurial-scm.org/|Mercurial SCM]]\\ 関連: [[linux:tortoisehg|TortoiseHg - Mercurial 分散型バージョン管理システム用ツール]]\\ ===== 前提条件 ===== ここでは Python と pip の導入が完了していることを前提とする。\\ [[python:python_install|Python のインストール]]\\ [[python:easy_install|easy_install、setuptools、pip - パッケージ管理]]\\ Fedora の場合は gcc と python-devel をインストールしておく。 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">yum</font> install gcc python-devel </pre></html></WRAP> </WRAP> ===== インストール ===== **pip** によるインストール。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">pip</font> install <font color="#A347BA">--user</font><font color="#999999"> mercurial</font> </pre></html></WRAP> <WRAP color_result><html><pre> Collecting mercurial Downloading mercurial-6.6.3.tar.gz (8.3 MB) <font color="#729C1F">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">8.3/8.3 MB</font> <font color="#C01C28">846.3 kB/s</font> eta <font color="#2AA1B3">0:00:00</font> Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Building wheels for collected packages: mercurial Building wheel for mercurial (pyproject.toml) ... done Created wheel for mercurial: filename=mercurial-6.6.3-cp312-cp312-linux_x86_64.whl size=4743353 sha256=a592c0a7feb366d2f05ce876e9ca095602dee4e3944359c46678136601ca6cd3 Stored in directory: /home/tomoyan/.cache/pip/wheels/57/df/cd/77d5eb43b732c34dfdd051d941d9f361391f4160b799994b7c Successfully built mercurial Installing collected packages: mercurial Successfully installed mercurial-6.6.3 </pre></html></WRAP> </WRAP> **DietPi**\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">pip</font> install <font color="#A347BA">--user</font> mercurial </pre></html></WRAP> <WRAP color_result><html><pre> Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/ Collecting mercurial Downloading https://www.piwheels.org/simple/mercurial/mercurial-6.6.3-cp311-cp311-linux_armv6l.whl (6.2 MB) <font color="#5FAF00">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font> <font color="#26A269">6.2/6.2 MB</font> <font color="#C01C28">239.6 kB/s</font> eta <font color="#2AA1B3">0:00:00</font> Installing collected packages: mercurial Successfully installed mercurial-6.6.3 </pre></html></WRAP> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">which</font> hg </pre></html></WRAP> <WRAP color_result><html><pre> /home/dietpi/.local/bin/hg </pre></html></WRAP> </WRAP> **dnf** によるインストール。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">dnf</font> install <font color="#A347BA">-y</font> mercurial </pre></html></WRAP> <WRAP color_result_long><html><pre> メタデータの期限切れの最終確認: 2:21:11 前の 2024年02月27日 03時39分09秒 に実施しました。 依存関係が解決しました。 ============================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ============================================================================================================== インストール: <font color="#26A269"><b>mercurial </b></font> x86_64 6.5.3-1.fc39 updates 6.4 M 依存関係のインストール: <font color="#26A269"><b>python3-zombie-imp </b></font> noarch 0.0.2-2.fc39 fedora 29 k トランザクションの概要 ============================================================================================================== インストール 2 パッケージ ダウンロードサイズの合計: 6.5 M インストール後のサイズ: 31 M パッケージのダウンロード: (1/2): python3-zombie-imp-0.0.2-2.fc39.noarch.rpm 108 kB/s | 29 kB 00:00 (2/2): mercurial-6.5.3-1.fc39.x86_64.rpm 1.8 MB/s | 6.4 MB 00:03 -------------------------------------------------------------------------------------------------------------- 合計 1.3 MB/s | 6.5 MB 00:04 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 インストール中 : python3-zombie-imp-0.0.2-2.fc39.noarch 1/2 インストール中 : mercurial-6.5.3-1.fc39.x86_64 2/2 scriptletの実行中: mercurial-6.5.3-1.fc39.x86_64 2/2 検証 : python3-zombie-imp-0.0.2-2.fc39.noarch 1/2 検証 : mercurial-6.5.3-1.fc39.x86_64 2/2 インストール済み: mercurial-6.5.3-1.fc39.x86_64 python3-zombie-imp-0.0.2-2.fc39.noarch 完了しました! </pre></html></WRAP> </WRAP> ===== 動作確認 ===== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> version </pre></html></WRAP> <WRAP color_result><html><pre> Mercurial - 分散構成管理ツール(バージョン 6.6.3) (詳細は https://mercurial-scm.org を参照) Copyright (C) 2005-2023 Olivia Mackall and others This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. </pre></html></WRAP> </WRAP> ===== 使い方 ===== ==== 初期設定 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> config <font color="#A347BA">--edit</font> </pre></html></WRAP> もしくは\\ <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> EDITOR=nano <font color="#26A269">hg</font> config <font color="#A347BA">--edit</font> </pre></html></WRAP> もしくは\\ <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">nano</font> <u style="text-decoration-style:single">~/.hgrc</u> </pre></html></WRAP> </WRAP> ※**hg** コマンドのデフォルトエディタは **EDITOR** 変数が設定されていない限りは **vi** である。\\ 永続的に **nano** に変更する場合は、以下のように設定を保存する。\\ **zsh**\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">echo</font> <font color="#A2734C">'export EDITOR=nano'</font> <font color="#13496F"><b>>></b></font> <u style="text-decoration-style:single">~/.zshrc</u> <font color="#FF8700"><b>$</b></font> <font color="#26A269">.</font> <u style="text-decoration-style:single">~/.zshrc</u> </pre></html></WRAP> </WRAP> **Bash**\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">echo</font> <font color="#A2734C">'export EDITOR=nano'</font> <font color="#13496F"><b>>></b></font> <u style="text-decoration-style:single">~/.bashrc</u> <font color="#FF8700"><b>$</b></font> <font color="#26A269">.</font> <u style="text-decoration-style:single">~/.bashrc</u> </pre></html></WRAP> </WRAP> Mercurial のユーザー名を設定する🤔\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> config <font color="#A347BA">--edit</font> </pre></html></WRAP> <WRAP color_mincode><code ini ~/.hgrc> [ui] username = Tomoyan <tomoyan@example.com> </code></WRAP> </WRAP> ==== リポジトリの作成 ==== 既存のディレクトリでリポジトリを作成する。 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">mkdir</font> repos <font color="#12488B"><b>&&</b></font> <font color="#26A269">cd</font> repos <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> init </pre></html></WRAP> </WRAP> 新たにリポジトリのディレクトリを作成する。 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> init repos </pre></html></WRAP> </WRAP> ==== ソース管理から除外するファイルの設定 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">nano</font> .hgignore </pre></html></WRAP> </WRAP> <WRAP color_term> <WRAP color_mincode><code autoconf .hgignore> # Shell 形式パターンマッチ syntax: glob *.pyc </code> <code autoconf .hgignore> # 正規表現パターンマッチ syntax: regexp ^\.git/ </code></WRAP> </WRAP> ==== ファイルの追加 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> add file.txt </pre></html></WRAP> </WRAP> ==== ステータスの確認 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> status </pre></html></WRAP> <WRAP color_result><html><pre> A file.txt </pre></html></WRAP> </WRAP> ==== コミット ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> commit </pre></html></WRAP> </WRAP> ==== 差分表示 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> diff </pre></html></WRAP> </WRAP> ==== 編集取り消し ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> revert file.txt </pre></html></WRAP> </WRAP> ==== コミット取り消し ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> rollback </pre></html></WRAP> </WRAP> ==== コミットログ表示 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> log </pre></html></WRAP> </WRAP> ==== リモートリポジトリの複製 ==== ssh 経由でリモートリポジトリをローカルに複製する。 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> clone ssh://user@server:port//var/hg/hoge/fuga my-fuga </pre></html></WRAP> </WRAP> ==== リモートリポジトリの変更取得 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> pull <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> update </pre></html></WRAP> </WRAP> 作業領域の変更を破棄する場合 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> update <font color="#A347BA">-C</font> </pre></html></WRAP> </WRAP> ==== リモートリポジトリへ変更反映 ==== <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> push ssh://user@server:port//var/hg/hoge/fuga </pre></html></WRAP> </WRAP> ※push 先にリポジトリが存在している必要がある。存在しない場合は作成しておくこと。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">ssh</font> user@server <font color="#A347BA">-p22</font> hg init /var/hg/hoge/fuga </pre></html></WRAP> </WRAP> <html><code>.hg/hgrc</code></html> に以下の記載があるなら省略できる。 <WRAP color_term> <WRAP color_mincode><code ini> [paths] default = ssh://user@server:port//var/hg/hoge/fuga </code></html></WRAP> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> push </pre></html></WRAP> </WRAP> サーバーでリポジトリを作成する場合。\\ クライアントからサーバーへクローンすることもできるが...\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> init fuga <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> clone <u style="text-decoration-style:single">.</u> ssh://user@server:port//var/hg/hoge/fuga </pre></html></WRAP> </WRAP> ==== git を Mercurial へリポジトリ変換 ==== convert エクステンションを有効化する。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">nano</font> ~/.hgrc </pre></html></WRAP> <WRAP color_mincode><html><file ini ~/.hgrc> [extensions] convert = </file></html></WRAP> </WRAP> git を Mercurial へ変換\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> convert <font color="#12488B"><b>[</b></font>repository<font color="#12488B"><b>]</b></font> <font color="#12488B"><b>[</b></font>new-repository<font color="#12488B"><b>]</b></font> </pre></html></WRAP> <WRAP color_result><html><pre> 変換先リポジトリ new-repository の初期化中 変換元リポジトリの走査中... 並べ替え中... 変換中... 9625 Initial structure 〜省略〜 </pre></html></WRAP> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">cd</font> new-repository <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> update </pre></html></WRAP> </WRAP> ==== Subversion のリポジトリ を Mercurial へリポジトリ変換 ==== hg convert で svn を Mercurial に変換する。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> convert _wxHexEditor-v0.23-src_svn _wxHexEditor-v0.23-src_hg </pre></html></WRAP> <WRAP color_result><html><pre> 変換先リポジトリ _wxHexEditor-v0.23-src_hg の初期化中 変換元リポジトリの走査中... 並べ替え中... 変換中... </pre></html></WRAP> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">cd</font> _wxHexEditor-v0.23-src_hg <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> update </pre></html></WRAP> </WRAP> === Subversion のリポジトリがリモートにしかない場合 === git-svn を使って svn を一度 git に変換する。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">dnf</font> install git-svn <font color="#FF8700"><b>$</b></font> <font color="#26A269">git</font> svn clone https://svn.code.sf.net/p/wxhexeditor/code/trunk wxHexEditor-v0.23-src_git </pre></html></WRAP> <WRAP color_result><html><pre> Initialized empty Git repository in /home/tomoyan/wxHexEditor-v0.23-src_git/.git/ A testfile A HexEditorCtrl/wx_pch.h A HexEditorCtrl/HexEditorCtrl.cpp 〜省略〜 W: -empty_dir: contrib/wxhexeditor_0.22-1.dsc r464 = 9d76f35dbaf4053a5b90771b65147d5a940f0fca (refs/remotes/git-svn) Checked out HEAD: https://svn.code.sf.net/p/wxhexeditor/code/trunk r464 creating empty directory: mhash/mhash-0.9.9/lib </pre></html></WRAP> </WRAP> hg convert で git を Mercurial に変換する。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> convert wxHexEditor-v0.23-src_git wxHexEditor-v0.23-src_hg </pre></html></WRAP> <WRAP color_result><html><pre> 変換先リポジトリ wxHexEditor-v0.23-src_hg の初期化中 変換元リポジトリの走査中... 並べ替え中... 変換中... 435 Reset svn 434 DataInterpreter Added. 433 DataInterpreter big endian and unsigned swithces fixed. 〜省略〜 2 Last touches for wxMSW. 1 Fixed assertions due ~wxHexCtrl() cleanup code. 0 Updated to v0.23 ブックマークの更新中 </pre></html></WRAP> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">cd</font> wxHexEditor-v0.23-src_hg <font color="#FF8700"><b>$</b></font> <font color="#26A269">hg</font> update </pre></html></WRAP> </WRAP> ===== トラブルシューティング ===== ===== 信頼できないファイル .hg/hgrc (所有者 root, グループ root)と言われる ===== hgrc の所有者やグループが自分ではない時に発生する。\\ 表示される所有者やグループが本当に信頼できるものであれば、~/.hgrc に以下の記述を追加する。\\ <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269">nano</font> ~/.hgrc </pre></html></WRAP> <WRAP color_mincode><file ini ~/.hgrc> [trusted] users = root groups = root </file></html></WRAP> </WRAP> ==== インストール時に「gcc: エラー」が発生する ==== 日本語では、gcc: エラー: /usr/lib/rpm/redhat/redhat-hardened-cc1: そのようなファイルやディレクトリはありません\\ 英語では、g++: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory が発生する。\\ \\ redhat-rpm-config パッケージをインストールしてから行う。 <WRAP color_term> <WRAP color_command><html><pre> <font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">dnf</font> install redhat-rpm-config </pre></html></WRAP> </WRAP> ===== 参考文献 ===== [[http://mercurial.selenic.com/wiki/JapaneseTutorial|JapaneseTutorial - Mercurial]]\\ [[http://www.proton.jp/main/programming/mercurial.html|【Proton.jp】 Mercurial Tips]]\\ [[http://route477.net/w/?MercurialTutorial|Route 477 - Mercurialを使ってみよう]]\\ [[http://mercurial-users.jp/manual/hgignore.5.html|hgignore]]\\ [[https://ask.fedoraproject.org/en/question/61075/mysql_config-cflags-does-not-work-on-fedora-21/|"mysql_config --cflags" does not work on fedora 21]]\\ [[https://swcarpentry.github.io/hg-novice/02-configuration/|Version Control with Mercurial: Configuring Mercurial]]\\ python/mercurial.txt 最終更新: 2024/03/14 09:30by ともやん