目次

mercurial

概要

git との違い

インストール

apt からのインストール

$ sudo apt install mercurial

pip からのインストール

$ sudo -H pip3 install mercurial

初期設定

  1. 設定
    • ホームディレクトリに .hgrc を作成して編集する
      [ui]
      username = ユーザ名 <メールアドレス>

設定ファイル

項目 設定名 設定値
uiusernameユーザ名 <メールアドレス>
mergeマージする際に差分を表示する外部ツール (diff3 あたりを書いておけば良さそう)
ignoreすべてのリポジトリに共通な無視リストのファイルパス
aliasエイリアス名mercurialのコマンド (例: ci = commit)
extentionsエクステンション名なし(詳しくは エクステンションに記述)

使い方

基本的には git と同じ

  1. リポジトリを作成 (hg init)
  2. 管理ファイルを追加 (hg add)
  3. コミット (hg commit)

以降は、2を必要に応じて行いつつ、3を繰り返す

コマンド

リポジトリの作成

$ hg init

ファイルの追加

$ hg add [ファイル]

管理ファイルの状態

$ hg status

管理しないファイルを無視する場合

ファイルの削除

ファイルのコピー

$ hg cp <コピー元> <コピー先>

ファイルの移動(リネーム)

$ hg mv <ファイル> <変更後の名前>

コミット

直前のリポジトリ操作の取り消し

$ hg rollback

誤って複数のファイルをコミットした場合の取り消し

リビジョン表示

復元

リビジョンの削除

$ hg strip <リビジョン>

ブランチ

リビジョンのブランチ間の移動

特定のリビジョンを配布

過去のコミットメッセージの変更方法

  1. histedit の実行
    $ hg histedit <リビジョン>
    $ hg histedit 1
    • エディタが立ち上がり、pick <リビジョンのハッシュ> <リビジョン番号> <コミットメッセージ> のリストが表示される
      pick 88774b2a3443 1 2nd commit                                                                                                                                                                                                                
      pick 315becd9db3f 2 3rd commit
      pick c56f122d5366 3 4th commit
       
      # Edit history between 88774b2a3443 and c56f122d5366
      #
      # Commits are listed from least to most recent
      #
      # Commands:
      #
      #  e, edit = use commit, but stop for amending
      #  m, mess = edit commit message without changing commit content
      #  p, pick = use commit
      #  d, drop = remove commit from history
      #  f, fold = use commit, but combine it with the one above
      #  r, roll = like fold, but discard this commit's description
      #
  2. 編集したいリビジョンの pickedit あるいは e に変更する
    edit 88774b2a3443 1 2nd commit                                                                                                                                                                                                                
    edit 315becd9db3f 2 3rd commit
    pick c56f122d5366 3 4th commit
           
    # Edit history between 88774b2a3443 and c56f122d5366
    #   
    # Commits are listed from least to most recent
    #   
    # Commands:
    #   
    #  e, edit = use commit, but stop for amending
    #  m, mess = edit commit message without changing commit content
    #  p, pick = use commit
    #  d, drop = remove commit from history
    #  f, fold = use commit, but combine it with the one above
    #  r, roll = like fold, but discard this commit's description
    #   
  3. リビジョン 1 のコミットメッセージを変更する
    $ hg histedit --continue
    • いつものコミット時のエディタが起動するので、リビジョン 1 に付ける新しいコミットメッセージを記入する
  4. リビジョン 2 のコミットメッセージを変更する
    $ hg histedit --continue
    • いつものコミット時のエディタが起動するので、リビジョン 2 に付ける新しいコミットメッセージを記入する

複数のリポジトリの統合 (マージ)

特定ファイルのみのリポジトリを別に作りたい

リポジトリを修復したい

SSH が利用できるリモートサーバとの連携

リポジトリの root ディレクトリパスを調べる

エクステンション

リポジトリを git リポジトリに変換する

  1. 変換プログラムをダウンロードする。
    $ git clone http://repo.or.cz/r/fast-export.git fast-export
  2. 転送先の git リポジトリ (空) NEW_GIT_REPO を作成する。
    $ mkdir NEW_GIT_REPO
    $ cd NEW_GIT_REPO
    $ git init 
  3. 変換する。
    $ ../fast-export/hg-fast-export.sh -r HG_REPO_PATH
    • HG_REPO_PATH: 変換したい mercurial のリポジトリパス

Tips

一部のサブコマンドで pager を無効化する

参考サイト