差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
ツール:mercurial [2018/02/15 19:04] – [複数のリポジトリの統合 (マージ)] mumeiyamibitoツール:mercurial [2020/10/12 10:17] (現在) mumeiyamibito
行 12: 行 12:
  
 ===== インストール ===== ===== インストール =====
-  - インストール\\ <code bash>$ sudo apt-get install mercurial</code>+==== apt からのインストール ==== 
 +<code bash>$ sudo apt install mercurial</code> 
 + 
 +==== pip からのインストール ==== 
 +<code bash>$ sudo -H pip3 install mercurial</code> 
 + 
 +  * 最新版がインストールされる。 
 +  * ''libbz2-dev'' と ''libffi-dev'' が必要。 
 + 
 +==== 初期設定 ==== 
   - 設定   - 設定
     * ホームディレクトリに .hgrc を作成して編集する\\ <code>     * ホームディレクトリに .hgrc を作成して編集する\\ <code>
行 100: 行 110:
   * 直前のcommit, pull, import, unbundle を 1 回だけ取り消す   * 直前のcommit, pull, import, unbundle を 1 回だけ取り消す
   * 作業領域は変更しない   * 作業領域は変更しない
 +
 +
 +==== 誤って複数のファイルをコミットした場合の取り消し ====
 +  * mercurial では、一度 ''add'' したものは ''remove'' や ''forget'' するまで常にトラッキングされる。
 +  * 特定のファイルのみのコミットの場合、コミットの章で触れたように、''hg commit FILE'' としてファイルを指定する。
 +  * 指定を忘れて誤って全体をコミットしてしまった場合に戻す方法は ''rollback'' 以外では以下の通りである (事前に ''MQ'' エクステンションを有効にしておく必要あり)。\\ <code bash>
 +$ hg qimport -r REV_ID
 +$ hg qrefresh FILE
 +$ hg qfinish -a
 +</code>
 +    * ''REV_ID'': 修正したいリビジョン番号
 +    * ''FILE'': 本来コミットするはずだったファイル群
 +    * これで特定のファイルのみのコミットの修正される。
 +    * ''qimport -r'' の後に、''hg qseries -s'' や ''hg qdiff'' などで誤ったリビジョンの確認をすると確実。
  
 ==== リビジョン表示 ==== ==== リビジョン表示 ====
行 264: 行 288:
 convert= convert=
 </code> </code>
 +  * 参考サイト: 
 +    * [[https://www.mercurial-scm.org/wiki/ConvertExtension | ConvertExtension - Mercurial]]
 +    * [[https://www.medo64.com/2010/09/extracting-part-of-mercurial-repository/ | Extracting Part of Mercurial Repository – Medo's Home Page]]
  
 +==== リポジトリを修復したい ====
 +  * 何らかの処理によって、mercurial の管理ディレクトリ内のデータが破損した場合、mercurial の操作をしようとすると ''abort: data/FILE.i@XXXXXXXXXXXX: no match found!'' というエラーが現れることがある (''FILE'' はその名前のファイルのトラッキングデータ)。
 +  * 修復するには以下のコマンドを実行すると復旧できる可能性がある\\ <code bash>$ hg convert --config convert.hg.ignoreerrors=True SOURCE_REPO DEST_REPO</code>
 +    * ''SOURCE_REPO'': 修復したいリポジトリ (mercurial で管理しているディレクトリ)
 +    * ''DEST_REPO'': 修復後のリポジトリの出力先
 +  * 参考サイト: [[http://cointoss.hatenablog.com/entry/2012/09/11/211223 | Mercurial で壊れたリポジトリを復旧する方法 - secretbase.log]]
 ==== SSH が利用できるリモートサーバとの連携 ==== ==== SSH が利用できるリモートサーバとの連携 ====
   * mercurial のサーバ構築のサイトの多くは Apache を使った方法を紹介しているが、ただバージョン管理のストレージとして使いたい場合には大掛かり過ぎる気がする (Apache を設定すれば、ウェブ上で公開することが可能である)。ここでは、バージョン管理のストレージとして使う場合を想定して紹介する。   * mercurial のサーバ構築のサイトの多くは Apache を使った方法を紹介しているが、ただバージョン管理のストレージとして使いたい場合には大掛かり過ぎる気がする (Apache を設定すれば、ウェブ上で公開することが可能である)。ここでは、バージョン管理のストレージとして使う場合を想定して紹介する。
行 291: 行 324:
       * ''SERVER_NAME'': SSH のサーバ名 (IP アドレス)       * ''SERVER_NAME'': SSH のサーバ名 (IP アドレス)
       * ''path/to/repository'': サーバ内のパス (''USER_NAME'' が指定されているのであれば、''/home/USER_NAME'' が起点になる)       * ''path/to/repository'': サーバ内のパス (''USER_NAME'' が指定されているのであれば、''/home/USER_NAME'' が起点になる)
 +
 +==== リポジトリの root ディレクトリパスを調べる ====
 +  * シェルスクリプトなどに使えるかも。\\ <code bash>$ hg root</code>
 +  * 参考サイト: [[https://superuser.com/questions/41480/getting-parent-repository-path/44381 | mercurial - Getting parent repository path - Super User]]
  
 ===== エクステンション ===== ===== エクステンション =====
行 328: 行 365:
  
   * 詳しくは [[https://www.mercurial-scm.org/wiki/JapaneseUsingExtensions | JapaneseUsingExtensions - Mercurial]]   * 詳しくは [[https://www.mercurial-scm.org/wiki/JapaneseUsingExtensions | JapaneseUsingExtensions - Mercurial]]
 +
 +==== リポジトリを git リポジトリに変換する ====
 +  - 変換プログラムをダウンロードする。\\ <code bash>
 +$ git clone http://repo.or.cz/r/fast-export.git fast-export
 +</code>
 +  - 転送先の git リポジトリ (空) ''NEW_GIT_REPO'' を作成する。\\ <code bash>
 +$ mkdir NEW_GIT_REPO
 +$ cd NEW_GIT_REPO
 +$ git init 
 +</code>
 +  - 変換する。\\ <code bash>
 +$ ../fast-export/hg-fast-export.sh -r HG_REPO_PATH
 +</code>
 +    * ''HG_REPO_PATH'': 変換したい mercurial のリポジトリパス
 +  * 参考サイト: [[http://var.blog.jp/archives/81872068.html | mercurial リポジトリを git に移行する]]
 +
 +
 +===== Tips =====
 +==== 一部のサブコマンドで pager を無効化する ====
 +  * ''hg status'' や ''hg log'' などの結果はデフォルトでは、''less'' コマンド (pager) のように表示される。
 +  * これらの結果をプロンプトに反映させたい場合や、端末上にその結果を残したい (pager は q キーを押すと、結果が消える) 場合は、設定ファイル ''$HOME/.hgrc'' に以下を追記すると良い。\\ <code>
 +[pager]
 +ignore = SUBCOMMAND [, SUBCOMMND, ...]
 +</code>
 +    * ''SUBCOMMAND'': pager を無効化したいサブコマンド (''log'' や ''status'' など hg の後に付けるキーワード)
 +    * 複数ある場合は、カンマで区切る
 +    * 参考サイト: [[https://www.mercurial-scm.org/wiki/PagerExtension | PagerExtension - Mercurial]]
 +  * 一時的に無効化したい場合は、''--pager false'' を各コマンドの後ろにでも付けておけば良い。
 +    * 例:\\ <code>
 +$ hg log --pager false
 +</code>
 +  * 参考サイト: [[https://stackoverflow.com/questions/44894062/disable-color-and-paging-for-mercurial | Disable color and paging for mercurial - Stack Overflow]]
  
 ===== 参考サイト ===== ===== 参考サイト =====
  • ツール/mercurial.1518689065.txt.gz
  • 最終更新: 2018/02/15 19:04
  • by mumeiyamibito