Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 14084] ファイルの概要

このコミットは、Goプロジェクトの貢献ガイドラインに関するドキュメント(doc/contribute.html)の更新です。具体的には、Mercurialの設定ファイルであるhgrcにおける環境変数の扱いに関する記述を修正し、Mercurialがバージョン1.4以降でhgrcファイル内での環境変数展開をサポートしているという事実を反映させています。

コミット

commit 156d85c3e901d7bd7d03183fd4c986386db12446
Author: David Symonds <dsymonds@golang.org>
Date:   Mon Oct 8 22:24:41 2012 +1100

    doc: update text about hgrc and environment variables.
    
    Mercurial has supported environment variables in hgrc files since
    version 1.4 (released November 2009).
    
    R=golang-dev, dave, minux.ma
    CC=golang-dev
    https://golang.org/cl/6619067

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/156d85c3e901d7bd7d03183fd4c986386db12446

元コミット内容

元のコミットメッセージは以下の通りです。

doc: update text about hgrc and environment variables.

Mercurial has supported environment variables in hgrc files since
version 1.4 (released November 2009).

R=golang-dev, dave, minux.ma
CC=golang-dev
https://golang.org/cl/6619067

このコミットは、Mercurialのhgrc設定ファイルにおける環境変数のサポートに関するドキュメントの記述を更新することを目的としています。特に、Mercurialがバージョン1.4(2009年11月リリース)以降、hgrcファイル内で環境変数を展開する機能をサポートしているという重要な事実を反映させています。

変更の背景

この変更の背景には、Mercurialの機能進化と、それに対するドキュメントの追従の必要性があります。以前のGoの貢献ガイドライン(doc/contribute.html)では、Mercurialのhgrcファイルが環境変数の置換をサポートしていないという誤った情報が記載されていました。これは、Mercurialの古いバージョンではその機能がなかったため、過去には正しい情報でした。

しかし、Mercurialはバージョン1.4(2009年11月リリース)でこの機能を追加しました。これにより、hgrcファイル内で$GOROOTのような環境変数を使用してパスを指定することが可能になりました。この機能が追加されたにもかかわらず、Goのドキュメントは更新されておらず、ユーザーに誤解を与える可能性がありました。

このコミットは、この情報の齟齬を解消し、ドキュメントを最新のMercurialの挙動に合わせることを目的としています。これにより、Goプロジェクトへの貢献者がより正確な情報に基づいてMercurialを設定できるようになります。

前提知識の解説

Mercurial (Hg)

Mercurialは、分散型バージョン管理システム(DVCS)の一つで、Gitと同様にコードの変更履歴を管理するために使用されます。Goプロジェクトは、初期にはMercurialを主要なバージョン管理システムとして利用していました(後にGitに移行)。

hgrcファイル

hgrcファイルは、Mercurialの設定ファイルです。ユーザーごとの設定(~/.hgrc)やリポジトリごとの設定(.hg/hgrc)などがあり、Mercurialの動作をカスタマイズするために使用されます。このファイルはINI形式に似た構造をしており、セクションとキー-バリューペアで設定が記述されます。

環境変数

環境変数(Environment Variables)は、オペレーティングシステムが提供する動的な名前付きの値で、実行中のプロセスに影響を与えます。例えば、PATH環境変数は実行可能ファイルの検索パスを指定し、GOROOT環境変数はGoのインストールディレクトリを示します。

codereview拡張

Mercurialには、その機能を拡張するための「拡張(extensions)」の仕組みがあります。Goプロジェクトでは、コードレビュープロセスを支援するためにcodereviewというMercurial拡張が使用されていました。この拡張は、Goのソースコードツリー内の特定のパスに配置されており、hgrcファイルでそのパスを指定して有効にする必要がありました。

環境変数展開の歴史的背景

多くの設定ファイル形式では、パスなどを指定する際に環境変数を直接使用できる「環境変数展開(Environment Variable Expansion)」の機能が提供されています。しかし、Mercurialのhgrcファイルは、初期のバージョンではこの機能を直接サポートしていませんでした。そのため、ユーザーは$GOROOTのような環境変数ではなく、実際の絶対パスをハードコードする必要がありました。

Mercurial 1.4(2009年11月リリース)で、この環境変数展開の機能がhgrcファイルに追加されました。これにより、設定ファイル内で$GOROOTのような変数を記述できるようになり、設定の柔軟性と移植性が向上しました。このコミットは、この機能追加をGoのドキュメントに反映させるものです。

技術的詳細

このコミットの技術的な変更点は、doc/contribute.html内のMercurialのhgrc設定に関する記述の修正です。

具体的には、以下の2つの変更が行われています。

  1. codereview拡張のパス指定の変更:

    • 変更前: codereview = YOUR_GO_ROOT/lib/codereview/codereview.py
    • 変更後: codereview = $GOROOT/lib/codereview/codereview.py この変更は、codereview拡張へのパスをハードコードされたプレースホルダー(YOUR_GO_ROOT)から、Goのインストールディレクトリを示す標準的な環境変数である$GOROOTを使用するように修正しています。これは、Mercurial 1.4以降でhgrcファイル内での環境変数展開がサポートされたため、可能になった変更です。
  2. 環境変数展開に関する説明の削除:

    • 変更前: <p>Replace YOUR_GO_ROOT with the value of <code>$GOROOT</code>. The Mercurial configuration file format does not allow environment variable substitution.</p>
    • 変更後: <p> (この段落全体が削除され、空の段落タグのみが残る形) この変更は、「Mercurialの設定ファイル形式は環境変数置換を許可しない」という誤った記述を削除しています。これは、Mercurial 1.4以降でこの機能がサポートされるようになったため、もはや正確ではない情報となったためです。

これらの変更により、Goの貢献ガイドラインは、Mercurialの最新の挙動と機能に合致するようになり、ユーザーはhgrcファイル内で$GOROOTのような環境変数を利用して設定を行うことができるようになりました。これにより、設定の柔軟性が向上し、Goのインストールパスが変更された場合でもhgrcファイルを直接編集する必要がなくなります。

コアとなるコードの変更箇所

diff --git a/doc/contribute.html b/doc/contribute.html
index 7a80fca012..8320657904 100644
--- a/doc/contribute.html
+++ b/doc/contribute.html
@@ -110,14 +110,13 @@ command.
 
 <pre>
 [extensions]
-codereview = YOUR_GO_ROOT/lib/codereview/codereview.py
+codereview = $GOROOT/lib/codereview/codereview.py
 
 [ui]
 username = Your Name &lt;you@server.dom&gt;
 </pre>
 
-<p>Replace YOUR_GO_ROOT with the value of <code>$GOROOT</code>.\n-The Mercurial configuration file format does not allow environment variable substitution.\n+<p>\n The <code>username</code> information will not be used unless\n you are a committer (see below), but Mercurial complains if it is missing.\n </p>\n```

## コアとなるコードの解説

このコミットは、`doc/contribute.html`ファイル内の2つの主要な箇所を変更しています。

1.  **`codereview`拡張のパス指定の変更**:
    ```diff
    -codereview = YOUR_GO_ROOT/lib/codereview/codereview.py
    +codereview = $GOROOT/lib/codereview/codereview.py
    ```
    この行は、Mercurialの`hgrc`設定ファイル内で`codereview`拡張を有効にするためのパス指定です。変更前は、ユーザーが手動で`$GOROOT`の値を`YOUR_GO_ROOT`に置き換える必要がありました。これは、Mercurialの古いバージョンでは`hgrc`ファイル内での環境変数展開がサポートされていなかったためです。
    変更後は、直接`$GOROOT`環境変数を使用するように修正されています。これは、Mercurial 1.4以降で`hgrc`ファイルが環境変数展開をサポートするようになったため、より簡潔で柔軟な設定が可能になったことを示しています。これにより、ユーザーはGoのインストールパスが変わっても`hgrc`ファイルを編集し直す必要がなくなります。

2.  **環境変数展開に関する説明の削除**:
    ```diff
    -<p>Replace YOUR_GO_ROOT with the value of <code>$GOROOT</code>.\n-The Mercurial configuration file format does not allow environment variable substitution.\n+<p>\n```
    この部分では、以前のドキュメントで「`YOUR_GO_ROOT`を`$GOROOT`の値に置き換えてください。Mercurialの設定ファイル形式は環境変数置換を許可しません。」と説明されていました。
    変更後は、この説明全体が削除されています。特に、「Mercurialの設定ファイル形式は環境変数置換を許可しない」という記述は、Mercurial 1.4以降の機能変更により誤りとなったため、削除されました。これにより、ドキュメントはMercurialの現在の挙動と一致し、ユーザーに正しい情報を提供します。

これらの変更は、Goプロジェクトへの貢献者がMercurial環境をより正確かつ効率的に設定できるようにするための、ドキュメントの重要な更新です。

## 関連リンク

*   GoプロジェクトのGitHubリポジトリ: [https://github.com/golang/go](https://github.com/golang/go)
*   このコミットのChange-Id: `6619067` (Goのコードレビューシステムで使用される識別子)

## 参考にした情報源リンク

*   GitHubコミットページ: [https://github.com/golang/go/commit/156d85c3e901d7bd7d03183fd4c986386db12446](https://github.com/golang/go/commit/156d85c3e901d7bd7d03183fd4c986386db12446)
*   Mercurial 1.4 リリースノート (環境変数サポートに関する情報): 関連するMercurialの公式ドキュメントやリリースノートを参照することで、より詳細な情報を得ることができます。例えば、Mercurialの公式ウェブサイトやメーリングリストのアーカイブなどが考えられます。
    *   Mercurialの公式ドキュメント: [https://www.mercurial-scm.org/](https://www.mercurial-scm.org/)
    *   Mercurialのリリース履歴: [https://www.mercurial-scm.org/wiki/ReleaseHistory](https://www.mercurial-scm.org/wiki/ReleaseHistory) (Mercurial 1.4の変更点を確認できます)
*   Goの貢献ガイドライン(当時のバージョン): このコミットが変更した`doc/contribute.html`の当時の内容を比較することで、変更の意図をより深く理解できます。
*   Goのコードレビューシステム (Gerrit): `https://golang.org/cl/6619067` は、Goプロジェクトが使用していたGerritベースのコードレビューシステムへのリンクです。このリンクから、コミットに至るまでの議論やレビューコメントを確認できます。