(進化計算班議事録) 2011/04/18, 全体概説+イントロ+zsh補足+Mercurial補足
情報工学実験3/進化計算班の1回目が終了しました。MLに議事録を流しているのですが、参照し難い部分もあるので公開を兼ねてHTML版を投稿。
目次
・議事録
・zsh補足
・Mercurial補足
・(1) 環境変数の設定。
・(2) hg 設定ファイルの編集。
・(3) リモートでリポジトリを作成。
・(4) ローカルにリポジトリを複製する。
・(5) リポジトリ内で作業する。
・(6) 必要に応じて古いバージョンに戻す。
・(extra.) マージの例。
・(extra.) 必要ないファイルを add 対象にしてしまった場合。
議事録
・プレガイダンス
・レポート確認: Level0: オープンソース外観
・背景・基礎知識
・課題: Level1
・グループ作成
・グループ1: 095751J 東川上一成, 095720J 慶留間諒太, 095731D 新城幸之佑
・グループ2: 095771C 宮里友美, 095725K 重信琢人
・グループ3: 095708K 太田陽祐, 095701B 青木史林
・オプション: zsh & Mercurial 実習(複数人でシェアする使い方)。
・次回予定: GA概要、auto-complete.el &簡易プログラミング予定。
zsh 補足
参考サイト
・漢のzsh
・zshは、tcshやbash等を使っている以下のような症状に悩んでいる人に有効 である。
今回は便利な設定をコピーして利用しましたが、各設定の意味を理解するには自分で設定を読んだり、上記サイトやドキュメントを読んでください。便利な機能についてもいろいろ解説されてます。
Mercurial 補足
利用前の準備(個別リポジトリの場合)
バージョン管理システムの一例として学科でも提供してるMercurialを利用して開発を進めます。
- (1) 環境変数の設定。
-
~/.zshrc 等のシェル用設定ファイルで
export HGENCODING=UTF-8 EDITOR=emacs
を設定。shark 側は設定済みですので、ローカル側にやっておきましょう。EDITOR は設定しなくても良いですが、デフォルトだと commit 時のエディタが vi になります。vi好きな人はviを指定しましょう。
- (2) hg 設定ファイルの編集。
-
commit する際のユーザ名を指定しておきましょう。
~/.hgrc に[ui] username = Naruaki TOMA
ぐらいを設定。ローカル側でやっときましょう。これを設定しておくと、commit 時の username が見つからなかったとかいうwarning が出なくなります。
- (3) リモートでリポジトリを作成。
-
shark にログインし、リポジトリを作成します。リポジトリの場所は、~info3/HG/2011/ 以下にしてください。
・個人利用のものは ~info3/HG/2011/e095700/
・グループ利用のものは ~info3/HG/2011/groupname/
・全員共同利用のものは ~info3/HG/2011/share2/
とします。例えば、e095700 というアカウントの人が個人利用のリポジトリをつくる場合には以下のようにします。
macbook> ssh info3@shark.nal.ie.u-ryukyu.ac.jp shark% cd HG/2011 shark% hg init e095700
これで shark 側での作業は終了です。
- (4) ローカルにリポジトリを複製する。
-
実際に作業するには、ローカル側で前述のリポジトリを複製し、ローカル内で管理するようにします。リポジトリを複製するためには以下のコマンドを実行しましょう。
macbook> mkdir temp #作業用ディレクトリを作成 macbook> cd temp macbook> hg clone ssh://info3@shark.nal.ie.u-ryukyu.ac.jp//home/info3/HG/2011/e095700/
引数が長ったらしいですが、これも一度zshで実行しておくと、「hg」や「hg clone」まで入力した状態で Ctrl+P で以前利用した引数を自動で補完してくれます。
- (5) リポジトリ内で作業する。
-
ファイル生成したら add して、必要な時に commit します。
macbook> hg add (ファイル名) *ファイル名を省略することが可能ですが、その場合には 未登録のファイル全てが対象になりますので、不要な ファイルまで登録候補になってないか確認してください。 macbook> hg commit *ただし、この時の commit ではメインリポジトリには反映しません ので、ローカルのみの管理になります。サーバ上にも反映するには commit してから push します。 macbook> hg push *普段は commit だけをやっておき、共用が必要になるタイミングで push する使い方になるでしょう。
- (6) 必要に応じて古いバージョンに戻す。
-
macbook> hg log -v で更新履歴を参照できるので、そこで付けられてるバージョン番号を見つけ、 macbook> hg update -r (バージョン番号) として指定したバージョンに戻します。
- (extra.) マージの例。
-
前提:サーバ側に最新状態があり、ローカル側で古いリポジトリで作業をしてしまった。
macbook> emacs test macbook> hg commit macbook> hg push *エラー! macbook> hg pull macbook> hg merge *新旧混ざったファイルが生成されるので、それを目視確認しながら編集。 macbook> emacs test macbook> hg resolve --list # マージ状態の確認 macbook> hg resolve -m test *編集し終えたことを明示。 macbook> hg commit macbook> hg push
- (extra.) 必要ないファイルを add 対象にしてしまった場合。
-
macbook> hg status macbook> hg revert test~ macbook> hg status *問題無ければcommit&push