mercurial水銀で始める


備考

Mercurialは、最新のオープンソースの分散バージョン管理システムです。あなたはgitについて聞いたことがあるかもしれませんが、今日はいくぶん人気があります。 gitとMercurialは非常に匹敵し、ほとんど同じような機能を提供します。

開発者はMercurialを使用して、アプリケーションのソースコードの変更を追跡します。これは、ほとんどのソース管理システムと同様、これらのファイルが(バイナリファイルではなく)テキストファイルである場合に最適ですが、ファイルのディレクトリの変更を追跡するために使用できます。 Mercurialは複数の開発者が同じソースコードのディレクトリで同時に作業することを可能にし、各開発者の変更を追跡し、それらの変更をマージするプロセスを管理します。

バージョン

Mercurialは時間ベースのリリース計画に従い、2月、5月、8月、11月に3か月ごとにメジャーリリースを発行します。残りの月ごとにマイナーリリースが発行されます。 Mercurialはセマンティックバージョニングを使用しないので、2.9.2(2.9リリースの最後)と3.0の間には大きな違いはないことに注意してください。

下位互換性はMercurialの重要な要件です。したがって、必要に応じてMercurialのインストールをアップグレードするのが一般的に安全です。しかし、少なくとも3か月に1回は、古いクライアントを新しいリポジトリで操作できないようにすることができるので、少なくとも1回は実行することをお勧めします。

プロジェクトリリースノートでは 、バージョン間で何が変化しているのかを詳しく説明していますがアップグレードノートでアップグレードする際にユーザーが意識する必要があることを明確に説明しています。

注目すべきバージョンの選択:

バージョンノート日付
3.5 Python 2.4と2.5をサポートしています 2015-07-31
2.1 安全な履歴修正を可能にするチェンジセットの「フェーズ」を導入 2012-02-01
1.9 より良いアプリケーション統合をサポートするCommand Server APIを導入 2011-07-01
1.7 新しいリポジトリ形式では一般的でないファイル名もサポート 2010-11-01

分岐

最初に作業を開始するときは、これが作業の別の領域であるか、既存の作業ラインの一部であるかを判断する必要があります。それが存在するならば、私たちはその支店から逃げることができます。新しい場合は、新しい支店を開設します。

私たちのワークフローは次のとおりです。

  • hg branch MyNewFeature
  • 仕事、仕事、仕事
  • hg commit -m "committing my changes"
  • 仕事、仕事、仕事
  • hg commit -m "more changes"

この時点で、私たちは作業をリモートサーバーにプッシュする必要があります。しかし、変更をプッシュする前に(前にプッシュしていない新しいブランチの場合はこれを無視してください)、このブランチに何らかの着信変更があるかどうかを確認する必要があります。これを次のようにチェックすることができます:

hg incoming -b .
 

私たちのブランチに入っているチェンジセットがあれば、プルを行い、変更を変更リストの先頭にリベースする必要があります。

hg pull -b . --rebase
 

これが完了するか、入ってくるチェンジセットがなければ、プッシュを続けることができます。

私たちは今までに行ったことすべてではなく、私たちの現在の仕事を押し進めたいだけです。私はリポジトリ全体を押し込むことは決してありませんが、私の現在の仕事の流れは変わりません。その理由は、複数の作業ラインを統合していると仮定してリポジトリ全体をプッシュすることです。しかし、私は現在の作業ラインを統合したいだけで、一度に1つのラインで作業したいだけです。

私がこのブランチを押すのが初めての場合:

hg push -b . --new-branch
 

私が既にこの枝を押した場合:

hg push -b .
 

"-b。"コマンドは現在のブランチをプッシュするだけで、他のものはプッシュしません。

作業ブランチ間を変更するには

hg update myBranchName
 

入門

Mercurialチュートリアルも参照してください。

Mercurialリポジトリの作成

Mercurialリポジトリは、単にリポジトリの内容に関するメタデータを含む.hg ディレクトリを含むディレクトリ( "作業ディレクトリ"と呼ばれます)です。これにより、Mercurialは非常に軽量で、使い始めが簡単です。新しいリポジトリを作成するには、次のコマンドを実行します。

$ hg init project
 

ここで、 project は作成するディレクトリの名前です。これは、リポジトリ自体を含むproject/.hg ディレクトリと共にproject ディレクトリを作成します。

   $ cd project
   $ echo Hello World > hello.txt
   $ hg stat
   ? hello.txt
 

リポジトリにhello.txt ファイルを作成し、 hg status (またはstat というhello.txt 実行してリポジトリの現在の状態を確認しました。ご覧のhello.txt? が付いてい? つまり、Mercurialはまだそれを認識していません。 add コマンドはこの新しいファイルをMercurialに登録add ので、次のコミットにインクルードされます。

$ hg add hello.txt
 

Mercurialが変更されたファイルを認識したので、 diff を実行して最後のコミット後に変更された内容を正確に見ることができます。この場合、 hello.txt 全内容を追加します:

$ hg diff
diff -r 000000000000 hello.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/hello.txt Sat Jul 23 01:38:44 2016 -0400
@@ -0,0 +1,1 @@
+Hello
 

そして、我々がそれらに満足し、変更をチェックインする準備ができたら、 commit を実行commit ことができます:

$ hg commit -m "Created a hello world file."
 

私たちが持つコミットメッセージ含まれていることに注意してください-m -あなたは指定しない場合は-m Mercurialはあなたがコミットメッセージを入力できるテキストエディタを起動します、あなたが長く複数行のメッセージを提供したい場合に便利です。

変更をコミットした後は、リポジトリが作業ディレクトリの内容と同期しているので、 hg stat を実行すると表示されなくなります。あなたは実行することができますlog コミットのリストを表示し、 -v 、それぞれが触れコミットファイルなどの詳細が含まれています。

$ hg log -v
changeset:   0:b4c06cc77a42
tag:         tip
user:        Michael Diamond@Aodh <dimo414@gmail.com>
date:        Sat Jul 23 01:44:23 2016 -0400
files:       hello.txt
description:
Created a hello world file.
 

インストールとセットアップ

プロジェクトのウェブサイトからMercurialダウンロードすることができます。また 、Windows、Linux、OSX用のグラフィカルユーティリティもあります。ほとんどのUnixパッケージマネージャにはMercurialが含まれています(Debian / Ubuntuなど)。

$ apt-get install mercurial
 

Mercurialがインストールされていることを確認するには、次のコマンドを実行します。

$ hg --version
 

セットアップ

Mercurialはすぐに使えますが、さらに進む前にあなたが誰であるかを知るためにMercurialを設定することをお勧めします。ユーザー名をあなたのコミットと関連付けるには、 ~/.hgrc (またはWindowsのホームディレクトリにあるmercurial.ini を編集し、次の行を追加します:

[ui]
username = Your Name <your@email.address>
 

これをしたくない場合は、 -u フラグを指定してコミットするときに、常にユーザー名を指定することができます。例:

$ hg commit -u "Your Name <your@email.address>"
 

押して引っ張る

Mercurialは仕事を分かち合い、他の開発者からの貢献を引き出すのを容易にします。これには3つの重要なステップがあります。 クローニング引っ張り押し込み

クローン

リモートリポジトリをローカルディスクにコピーするには、それを "クローン"します。これを行うには、クローンを作成するリモートURLを渡します。 Mercurialソースコードを複製するには、次のコマンドを実行します。

$ hg clone https://selenic.com/hg
 

これにより、ビルド、編集、およびコミットできるMercurialリポジトリのコピーを含むローカルhg ディレクトリが作成されます(ただし、コミットを親リポジトリに公開することはできません)。

引く

リポジトリをチェックアウトしたら、他のリポジトリが変更を公開するときに、そのリポジトリを同期した状態に保ちたいと思うでしょう。次のコマンドを実行するだけで、新しい変更をプルダウンできます。

$ hg pull
 

これにより、新しいコミットが取り込まれますが、作業ディレクトリは更新されませんので、すぐに変更が表示されることはありません。実行されている作業ディレクトリの内容を更新するには:

$ hg up
 

作業ディレクトリをリポジトリのヒント(最新)のリビジョンに更新します。

次のコマンドを実行することもできます。

$ hg pull -u
 

新しい変更を取り込んで作業ディレクトリを1つのステップで更新するには

押す

リモートリポジトリへの書き込みアクセス権があると仮定すると、リモートリポジトリにローカルで行ったコミットは、次のように簡単に公開できます。

$ hg push
 

これは、最後に引っ張ってから他のコミットがない限り、変更をアップロードします。 push が拒否された場合、「追加のヘッドを作成する」ということは、それらの新しい変更を取り込んで自分のものとマージする必要があることを意味します。

$ hg pull
$ hg merge  # this creates a new changeset merging your changes with the remote changes
$ hg commit -m "Merged in remote changes"
$ hg push
 

ほとんどの場合、これはMercurialが変更を自動的にマージするために必要な作業ですが、手動でマージの競合を解決する必要があります(トピックのマージを参照)。必要な場合は、いつでもマージをキャンセルして、次のコマンドを使用してクリーンな作業ディレクトリに戻ってください。

$ hg up -c
 

しかし、これは破壊的な操作であることを忘れないでください。作業ディレクトリの変更はすべて消去されます。