=================
5分でわかるBazaar
=================

.. _introduction:

イントロダクション
===================

Bazaarは分散型バージョン管理システムで、ソフトウェアプロジェクトの
共同作業を楽にしてくれます。

これから5分ほどで、ファイルをバージョン管理下に置き、変更を記録して、
作業内容を確認し、公開して作業内容をマージしてもらうためにプロジェクトの
trunk に送る方法などを学びます。

詳細な紹介内容を望むのであれば、 `さらに学ぶ`_ をご覧ください。


インストール方法
=================

このガイドではBazaarをインストールする方法を説明しませんが、通常はとても簡単です。
インストール方法の手引きは次の通りです:

- **GNU/Linux:** おそらくBazaarはあなたのGNU/Linuxディストリビューションに含まれています。
- **Windows:** `Windowsのためのインストールの手引き`_.
- **Mac OS X:** `Mac OS Xのためのインストールの手引き`_.

別のプラットフォームとソースコードからインストールする方法に関しては、 ダウンロード_
と インストール方法_ のページを参照してください。

.. _Windowsのためのインストールの手引き: http://wiki.bazaar.canonical.com/WindowsDownloads
.. _Mac OS Xのためのインストールの手引き: http://wiki.bazaar.canonical.com/MacOSXBundle
.. _ダウンロード: http://wiki.bazaar.canonical.com/Download
.. _インストール方法: http://wiki.bazaar.canonical.com/InstallationFaq


まずは自己紹介
=================

作業にとりかかる前に、まずあなたが誰なのかをBazaarに教えてあげましょう。
そうすることで、履歴の中からあなたの作業を正確に識別することができます。

次のように入力してください(もちろん、あなたの名前とEメールアドレスで)::

  $ bzr whoami "John Doe <john.doe@gmail.com>"

こうするとBazaarは、あなたの名前やEメールアドレスが入った設定ファイルを作成\
もしくは修正します。

名前とEメールアドレスが正しく登録されているか確認しましょう ::

  $ bzr whoami
  John Doe <john.doe@gmail.com>


ファイルをバージョン管理する
=============================

Bazaarで扱うディレクトリといくつかのファイルを作りましょう::

 $ mkdir myproject
 $ cd myproject
 $ mkdir subdirectory
 $ touch test1.txt test2.txt test3.txt subdirectory/test4.txt

**Windowsユーザーのための注意:** Windows Explorerを使ってディレクトリを作成し、\
そのディレクトリの中で右クリックをして ``新規作成`` を選択し、ファイルを作成します。

Bazaarにあなたのプロジェクトディレクトリを初期化させましょう::

  $ bzr init

何も起きていないように見えても心配しないでください。
Bazaarはファイルとリビジョンの履歴を保存する branch_ を作りました。

.. _branch: http://wiki.bazaar.canonical.com/Branch

次のステップはBazaarに管理して欲しいファイルを教えることです。
``bzr add`` を実行するとすべてのディレクトリとファイルがプロジェクトに\
再帰的に追加されます。 ::

 $ bzr add
 added subdirectory
 added test1.txt
 added test2.txt
 added test3.txt
 added subdirectory/test4.txt

次に、これらをブランチにコミットしてスナップショットをとります。
コミットを行った理由を説明するメッセージを追加します。 ::

  $ bzr commit -m "Initial import"

Bazaarは分散型バージョン管理システムなので、コミットするために\
サーバーに接続する必要はありません。
代わりに、Bazaarはブランチとすべてのコミットをあなたが作業している\
ディレクトリ内部に ``.bzr`` というサブディレクトリを作ってそこに
保存します。


ファイルを変更する
===================

ファイルを変更してブランチにその変更をコミットしてみましょう。

好きなエディタで ``test1.txt`` を編集し、何を行ったのかを確認します。 ::

 $ bzr diff
 === modified file 'test1.txt'
 --- test1.txt   2007-10-08 17:56:14 +0000
 +++ test1.txt   2007-10-08 17:46:22 +0000
 @@ -0,0 +1,1 @@
 +test test test

作業をBazaarのブランチにコミットします::

  $ bzr commit -m "Added first line of text"
  Committed revision 2.


リビジョンのログを眺める
=========================

ログを閲覧することでブランチの履歴を調べることができます。 ::

  $ bzr log
  ------------------------------------------------------------
  revno: 2
  committer: John Doe <john.doe@gmail.com>
  branch nick: myproject
  timestamp: Mon 2007-10-08 17:56:14 +0000
  message:
    Added first line of text
  ------------------------------------------------------------
  revno: 1
  committer: John Doe <john.doe@gmail.com>
  branch nick: myproject
  timestamp: Mon 2006-10-08 17:46:22 +0000
  message:
    Initial import


ブランチを Launchpad で公開する
===================================

Launchpad はソフトウェアプロジェクトの開発と運営のためのツールをまとめた
サイトです。自分のブランチを公開するために Launchpad を利用することができます。
(もちろん、自分のサーバーや他のホスティングサービス上で公開することもできます)

まだ Launchpad のアカウントを持っていないのであれば、 `account signup guide`_
に従ってアカウントを作成し、 `SSH 鍵を登録`_ してください。

.. _account signup guide: https://help.launchpad.net/CreatingYourLaunchpadAccount
.. _SSH 鍵を登録: https://launchpad.net/people/+me/+editsshkeys

次のように、 (``john.doe`` は自分のアカウントのユーザー名に置き換えて)
タイプしてください。 [#]_ ::

 $ bzr push lp:~john.doe/+junk/myproject

.. [#] ``lp:`` という URL スキーマは bzr 0.92 以降でサポートされています。

**注意**: ``+junk`` の部分は、このブランチが Launchpad 上の特定のプロジェクトに
属していないことを意味しています。

これで、誰でもあなたのブランチのコピーを、次のようなコマンドで入手できるようになりました。 ::

 $ bzr branch lp:~john.doe/+junk/myproject

ブランチの情報を、履歴も含めて
https://code.launchpad.net/people/+me/+junk/myproject
から閲覧することができます。


別のブランチから自分用のコピーを作る
=====================================

他人のコードに取り組むために、ブランチのコピーを作ることができます。
実際の世界の例として、BazaarのGTKインターフェイスを見てみましょう::

  $ bzr branch lp:~bzr/bzr-gtk/trunk bzr-gtk.john
  Branched 292 revision(s).

Bazaarはbzr-gtkのtrunkブランチからすべてのファイルをダウンロードして
リビジョンの履歴をそろえ、bzr-gtk.johnというコピーを作ります。

これで、ブランチのコピーを手に入れたのでネットの接続のあるなしに
関わらず変更をコミットできます。
ブランチはいつでも公開することで共有でき、bzr-gtkチームがあなたの作品を
使いたいと思ったときにBazaarは彼らがあなたのブランチから彼らのブランチに
マージし直す作業を簡単にしてくれます。


メインのブランチから自分のブランチを更新する
=============================================

変更を自分のブランチにコミットしている間に、他の人がコードを元のブランチに\
コミットしているということもよくあります。

自分のブランチを最新に維持するには、親ブランチから自分のブランチへと変更を\
マージします::

  $ bzr merge
  Merging from saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk
  All changes applied successfully.

何が変更されたのか確認します::

  $ bzr diff

変更に満足したら、それらを自分のブランチにコミットします::

  $ bzr commit -m "Merge from main branch"
  Committed revision 295.


作業を親のブランチにマージする
==============================

bzr-gtkの個人ブランチに取り組んだ後で、あなたの変更を上流のプロジェクトに\
戻したいことがあるかもしれません。
最も簡単な方法はマージディレクティブを使うことです。

マージディレクティブ(merge directive)とは、コンピュータに特定のマージを実行\
させるためのリクエストです。
マージディレクティブは大抵、マージをレビューするためのパッチと、マージを実行する\
のに必要となるリビジョン、もしくはリビジョンを取得できるブランチを含みます。

次のコマンドの ``mycode.patch`` を適当な名前に書き換えて、マージのディレクティブを作ります::

 $ bzr send -o mycode.patch
 Using saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk

これでbzr-gtkのプロジェクトにマージディレクティブをEメールで送ることが可能に\
なりました。彼らが納得すれば、親ブランチにマージすることができます。


さらに学ぶ
==========

Bazaarに関する詳細な内容は `Bazaarのユーザーガイド <../user-guide/index.html>`_ で調べることができます。

コマンドラインでBazaarを学ぶには::

  $ bzr help

Bazaarのコマンドを学ぶには::

  $ bzr help commands

''foo'' トピックもしくはコマンドを学ぶには::

  $ bzr help foo


Licence
=============

Copyright 2007-2011 Canonical Ltd. Bazaar is free software, and you
may use, modify and redistribute both Bazaar and this document under
the terms of the GNU General Public License version 2 or later. See
<http://www.gnu.org/licenses/>.


日本語訳について
-----------------
この日本語訳は、 `Bazaar-jaグループ <https://groups.google.com/group/bazaar-ja>`_
がメンテナンスしています。

日本語訳に着いて間違いや質問等ありましたらこちらへお願いします。
