ユーザ用ツール

サイト用ツール


サイドバー

Top

検索タグ

変更履歴

メニュー


python:mercurial

Mercurial - 分散型バージョン管理システム

本家: Mercurial SCM

前提条件

ここでは Python と pip の導入が完了していることを前提とする。

Python のインストール
easy_install、setuptools、pip - パッケージ管理

CentOS の場合は gcc と python-devel をインストールしておく。

$ sudo yum install gcc python-devel

インストール

pip によるインストール。

$ sudo pip install mercurial
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install --user` instead.
Collecting mercurial
  Downloading https://files.pythonhosted.org/packages/79/54/ccc37f1f55b91d48ed1de38ffbb81e32697dc69accea017c8faad21360bf/mercurial-5.3.2.tar.gz (7.5MB)
     |████████████████████████████████| 7.5MB 1.2MB/s
Installing collected packages: mercurial
  Running setup.py install for mercurial ... done
Successfully installed mercurial-5.3.2

dnf によるインストール。

$ sudo dnf install mercurial-py3
Last metadata expiration check: 0:14:18 ago on 2021年05月09日 03時46分00秒.
Dependencies resolved.
====================================================================================================
 Package                    Architecture       Version                    Repository           Size
====================================================================================================
Installing:
 mercurial-py3              x86_64             5.4.2-3.fc33               updates             4.0 M
Installing dependencies:
 mercurial-lang             x86_64             5.4.2-3.fc33               updates             1.0 M

Transaction Summary
====================================================================================================
Install  2 Packages

Total download size: 5.0 M
Installed size: 24 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): mercurial-lang-5.4.2-3.fc33.x86_64.rpm                       189 kB/s | 1.0 MB     00:05
(2/2): mercurial-py3-5.4.2-3.fc33.x86_64.rpm                        237 kB/s | 4.0 MB     00:17
----------------------------------------------------------------------------------------------------
Total                                                               261 kB/s | 5.0 MB     00:19
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                            1/1
  Installing       : mercurial-lang-5.4.2-3.fc33.x86_64                                         1/2
  Installing       : mercurial-py3-5.4.2-3.fc33.x86_64                                          2/2
  Running scriptlet: mercurial-py3-5.4.2-3.fc33.x86_64                                          2/2
  Verifying        : mercurial-lang-5.4.2-3.fc33.x86_64                                         1/2
  Verifying        : mercurial-py3-5.4.2-3.fc33.x86_64                                          2/2

Installed:
  mercurial-lang-5.4.2-3.fc33.x86_64                mercurial-py3-5.4.2-3.fc33.x86_64

Complete!

動作確認

$ hg version
Mercurial Distributed SCM (version 5.4.2)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2020 Matt 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.

使い方

初期設定

$ hg config --edit

もしくは

$ vi ~/.hgrc
~/.hgrc
[ui]
username = Tomoyan <tomoyan@example.com>

hg コマンドのデフォルトエディタは EDITOR 変数が設定されていない限りは vi である。
nano に変更する場合は以下のように実行する。

$ EDITOR=nano hg config --edit

もしくは、.bashrc に設定を保存する。

$ echo 'export EDITOR=nano' >> ~/.bashrc
$ . ~/.bashrc

リポジトリの作成

既存のディレクトリでリポジトリを作成する。

$ mkdir repos
$ cd repos
$ hg init

新たにリポジトリのディレクトリを作成する。

$ hg init repos

ソース管理から除外するファイルの設定

$ vi .hgignore
.hgignore
# Shell 形式パターンマッチ
syntax: glob
 
*.pyc
.hgignore
# 正規表現パターンマッチ
syntax: regexp
 
^\.git/

ファイルの追加

$ hg add file.txt

ステータスの確認

$ hg status
A file.txt

コミット

$ hg commit

差分表示

$ hg diff

編集取り消し

$ hg revert file.txt

コミット取り消し

$ hg rollback

コミットログ表示

$ hg log

リモートリポジトリの複製

ssh経由でリモートリポジトリをローカルに複製する。

$ hg clone ssh://user@server:port//var/hg/hoge/fuga my-fuga

リモートリポジトリの変更取得

$ hg pull
$ hg update

作業領域の変更を破棄する場合

$ hg update -C

リモートリポジトリへ変更反映

$ hg push ssh://user@server:port//var/hg/hoge/fuga

※push 先にリポジトリが存在している必要がある。存在しない場合は作成しておくこと。

$ ssh user@server -p22 hg init /var/hg/hoge/fuga

.hg/hgrc に以下の記載があるなら省略できる。

[paths]
default = ssh://user@server:port//var/hg/hoge/fuga
$ hg push

サーバーでリポジトリを作成する場合。
クライアントからサーバーへクローンすることもできるが…

$ hg init fuga
$ hg clone . ssh://user@server:port//var/hg/hoge/fuga

git を Mercurial へリポジトリ変換

convert エクステンションを有効化する。

$ vi ~/.hgrc
~/.hgrc
[extensions]
convert =

git を Mercurial へ変換

$ hg convert [repository] [new-repository]
変換先リポジトリ new-repository の初期化中
変換元リポジトリの走査中...
並べ替え中...
変換中...
9625 Initial structure
〜省略〜
$ cd new-repository
$ hg update

Subversion のリポジトリ を Mercurial へリポジトリ変換

hg convert で svn を Mercurial に変換する。

$ hg convert _wxHexEditor-v0.23-src_svn _wxHexEditor-v0.23-src_hg
変換先リポジトリ _wxHexEditor-v0.23-src_hg の初期化中
変換元リポジトリの走査中...
並べ替え中...
変換中...
$ cd _wxHexEditor-v0.23-src_hg
$ hg update

Subversion のリポジトリがリモートにしかない場合

git-svn を使って svn を一度 git に変換する。

$ sudo dnf install git-svn
$ git svn clone https://svn.code.sf.net/p/wxhexeditor/code/trunk wxHexEditor-v0.23-src_git
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

hg convert で git を Mercurial に変換する。

$ hg convert wxHexEditor-v0.23-src_git wxHexEditor-v0.23-src_hg
変換先リポジトリ 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                                                                                  
ブックマークの更新中
$ cd wxHexEditor-v0.23-src_hg
$ hg update

トラブルシューティング

信頼できないファイル .hg/hgrc (所有者 root, グループ root)と言われる

hgrc の所有者やグループが自分ではない時に発生する。
表示される所有者やグループが本当に信頼できるものであれば、~/.hgrc に以下の記述を追加する。

$ vi ~/.hgrc
~/.hgrc
[trusted]
users = root
groups = root

インストール時に「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 パッケージをインストールしてから行う。

$ sudo dnf install redhat-rpm-config

参考文献

python/mercurial.txt · 最終更新: 2021/05/10 02:59 by ともやん