バージョン管理始めませんか? 変ゼミ inajob
こんなことない? ● 今のソースコードは動いている ● ソースコードに大きな改造をしたい ● 現状のソースコードをコメントアウトして、改造してみる – ぐちゃぐちゃ
こんなことない? ● 間違えてデータを上書きしちゃった! ● 大きな変更をする前にバックアップを作ろう – hoge.c.bak , hoge.c.bak2 , ..... ● 昨日まで動いていたんだけど… – 昨日から今日までに何をいじったんだっけ?
バージョン管理 ● ファイルの変更履歴を保存する ● 昔の状態に簡単に戻せる ● 昔の状態との比較が出来る
バージョン管理システム ● CVS – Subversionの方が高機能 集中型 ● Subversion (SVN) – 研究室で導入中 使ってる人も数人いる ● Git – 最近流行り特にRuby使いの間で人気? ● Mercurial – Python 分散型 ● Darcs – Haskell
仕組み ● 中央サーバなどで履歴データを 集中管理 ● 利用者はそこからファイルを チェックアウトする ● 利用者はファイルの変更を反映 させるためにコミットする チェック コミット アウト
仕組み ● 別にサーバは同じマシンでもOK チェック コミット アウト
使いかた(Linux) ● チェックアウト % svn checkout <path> ● コミット % svn commit ● ファイル追加 % svn add ファイル <path> ● file:///home/ina/repos/ ローカルにある ● svn+ssh://<server>/svn/ina リモートにありSSHでアクセスする ● https://server/svn/ina リモートにありhttpsでアクセスする
使い方 ina@server:~/sandbox/inarepos$ svn checkout https://localhost/svn/ina/proj ./ .... A scripts/fileview/tmpl2.py A scripts/ilc.bat A scripts/func2 A scripts/func2/in.txt A scripts/func2/tmpl2.py A scripts/fact A scripts/fact/fact.html A scripts/fact/in.txt A scripts/fact/tmpl2.py A JsTest.java Checked out revision 330. ina@server:~/sandbox/inarepos$
使い方 hoge.txtというファイルを作った ina@server:~/sandbox/inarepos$ svn status ? hoge.txt ina@server:~/sandbox/inarepos$ svn add ./hoge.txt A hoge.txt ina@server:~/sandbox/inarepos$ svn commit -m “svn hensemi test” Adding hoge.txt Transmitting file data . Committed revision 331. ina@server:~/sandbox/inarepos$
使い方(Windows) ● SVNクライアントを導入するのが簡単 TortoiseSVN – TortoiseSVN エクスプローラ上で バージョン管理状態がわかる – SmartSVN SmartSVN 右クリックからコミットが可能 WinSCP風の画面
便利な使い方 ● 開発版と安定版を管理する – 開発中のものと、とりあえず動作するものを同時に管 理できる – 慣習として trunk/ 開発中 brunches/ ブランチ 開発を分岐させて新機能の導入や バグフィックスなどを行う tags/ 安定版。 中でバージョン毎にさらにディレクトリを作る というような名前で管理する事が多い
その他の便利な機能 ● マージ – 複数人での開発やブランチの統合時に双方で変更が あったファイルをいい感じに合わせてくれたりする ● 判断できないときはユーザに聞いてくる ● Diff – あるバージョンのものと比較する ● バックアップ – SVNを使うことでソースコードのバックアップになる。マ シンが死んでも平気! – うっかり上書きしても被害は最小に
その他の便利な機能 ● Svnで公開されてるソフトウェアを利用できる – 世の中にはsvnレポジトリの形で配布されているソフト ウェアが多数ある
まとめ ● バージョン管理 – 楽なソースコード管理 – 悲劇を減らせる ● とりあえず使ってみれば良いと思うよ!
Redmineでプロジェクト管理
プロジェクト管理って? ● 研究はプロジェクトの一種 ● プロジェクトを進めていく上で、管理は重要 – 発見しているバグ一覧 – 実装したい機能 – 仕様を記したドキュメント – 関連研究調査メモ ● 紙のメモとか使ってますか? – ×検索 – ×保存
Redmine ● RubyOnRailsで作られたプロジェクト管理ツール ● 豊富な機能 – チケット – Wiki – リポジトリブラウザ – フォーラム
チケット ● バグや実装したい機能などを「チケット」として登録する ● バグを倒したり、機能が実装できれば「完了」とする <チケット> <チケット> <チケット> こんなバグがありました <チケット> こんなバグがありました こんなバグがありました こんなバグがありました なおしたぜ!
マイページ ● 自分が今かかえているチケットを見ることが出来る ● サーバ管理プロジェクトなどを作ってサーバに関する不 満、要望などを管理するような使い方も出来る? – 担当者を僕とかS君とかにしてタスクを投げる? <チケット> こんなバグがありました <チケット> こんなバグがありました <チケット> こんなバグがありました
リポジトリブラウザ ● SVNで管理しているなら、リポジトリの場所を指定するだ けでOK ● SVNなどのバージョン管理ツールと連携できる ● バグチケットとそれの対応するファイルなどを関連付け できる ● 他の研究室のメンバーが簡単に閲覧することが出来る – 相談するときなどに有効
まとめ ● Redmineを使ってプロジェクトを管理してみませんか? – チケットを使うことでスムーズな開発を!

SVNのすすめ&Redmineでプロジェクト管理

  • 1.
  • 2.
    こんなことない? ● 今のソースコードは動いている ● ソースコードに大きな改造をしたい ● 現状のソースコードをコメントアウトして、改造してみる – ぐちゃぐちゃ
  • 3.
    こんなことない? ● 間違えてデータを上書きしちゃった! ● 大きな変更をする前にバックアップを作ろう – hoge.c.bak , hoge.c.bak2 , ..... ● 昨日まで動いていたんだけど… – 昨日から今日までに何をいじったんだっけ?
  • 4.
    バージョン管理 ● ファイルの変更履歴を保存する ● 昔の状態に簡単に戻せる ● 昔の状態との比較が出来る
  • 5.
    バージョン管理システム ● CVS – Subversionの方が高機能 集中型 ● Subversion (SVN) – 研究室で導入中 使ってる人も数人いる ● Git – 最近流行り特にRuby使いの間で人気? ● Mercurial – Python 分散型 ● Darcs – Haskell
  • 6.
    仕組み ● 中央サーバなどで履歴データを 集中管理 ● 利用者はそこからファイルを チェックアウトする ● 利用者はファイルの変更を反映 させるためにコミットする チェック コミット アウト
  • 7.
    仕組み ● 別にサーバは同じマシンでもOK チェック コミット アウト
  • 8.
    使いかた(Linux) ● チェックアウト % svn checkout <path> ● コミット % svn commit ● ファイル追加 % svn add ファイル <path> ● file:///home/ina/repos/ ローカルにある ● svn+ssh://<server>/svn/ina リモートにありSSHでアクセスする ● https://server/svn/ina リモートにありhttpsでアクセスする
  • 9.
    使い方 ina@server:~/sandbox/inarepos$ svn checkouthttps://localhost/svn/ina/proj ./ .... A scripts/fileview/tmpl2.py A scripts/ilc.bat A scripts/func2 A scripts/func2/in.txt A scripts/func2/tmpl2.py A scripts/fact A scripts/fact/fact.html A scripts/fact/in.txt A scripts/fact/tmpl2.py A JsTest.java Checked out revision 330. ina@server:~/sandbox/inarepos$
  • 10.
    使い方 hoge.txtというファイルを作った ina@server:~/sandbox/inarepos$ svn status ? hoge.txt ina@server:~/sandbox/inarepos$ svn add ./hoge.txt A hoge.txt ina@server:~/sandbox/inarepos$ svn commit -m “svn hensemi test” Adding hoge.txt Transmitting file data . Committed revision 331. ina@server:~/sandbox/inarepos$
  • 11.
    使い方(Windows) ● SVNクライアントを導入するのが簡単 TortoiseSVN – TortoiseSVN エクスプローラ上で バージョン管理状態がわかる – SmartSVN SmartSVN 右クリックからコミットが可能 WinSCP風の画面
  • 12.
    便利な使い方 ● 開発版と安定版を管理する – 開発中のものと、とりあえず動作するものを同時に管 理できる – 慣習として trunk/ 開発中 brunches/ ブランチ 開発を分岐させて新機能の導入や バグフィックスなどを行う tags/ 安定版。 中でバージョン毎にさらにディレクトリを作る というような名前で管理する事が多い
  • 13.
    その他の便利な機能 ● マージ – 複数人での開発やブランチの統合時に双方で変更が あったファイルをいい感じに合わせてくれたりする ● 判断できないときはユーザに聞いてくる ● Diff – あるバージョンのものと比較する ● バックアップ – SVNを使うことでソースコードのバックアップになる。マ シンが死んでも平気! – うっかり上書きしても被害は最小に
  • 14.
    その他の便利な機能 ● Svnで公開されてるソフトウェアを利用できる – 世の中にはsvnレポジトリの形で配布されているソフト ウェアが多数ある
  • 15.
    まとめ ● バージョン管理 – 楽なソースコード管理 – 悲劇を減らせる ● とりあえず使ってみれば良いと思うよ!
  • 16.
  • 17.
    プロジェクト管理って? ● 研究はプロジェクトの一種 ● プロジェクトを進めていく上で、管理は重要 – 発見しているバグ一覧 – 実装したい機能 – 仕様を記したドキュメント – 関連研究調査メモ ● 紙のメモとか使ってますか? – ×検索 – ×保存
  • 18.
    Redmine ● RubyOnRailsで作られたプロジェクト管理ツール ● 豊富な機能 – チケット – Wiki – リポジトリブラウザ – フォーラム
  • 19.
    チケット ● バグや実装したい機能などを「チケット」として登録する ● バグを倒したり、機能が実装できれば「完了」とする <チケット> <チケット> <チケット> こんなバグがありました <チケット> こんなバグがありました こんなバグがありました こんなバグがありました なおしたぜ!
  • 20.
    マイページ ● 自分が今かかえているチケットを見ることが出来る ● サーバ管理プロジェクトなどを作ってサーバに関する不 満、要望などを管理するような使い方も出来る? – 担当者を僕とかS君とかにしてタスクを投げる? <チケット> こんなバグがありました <チケット> こんなバグがありました <チケット> こんなバグがありました
  • 21.
    リポジトリブラウザ ● SVNで管理しているなら、リポジトリの場所を指定するだ けでOK ● SVNなどのバージョン管理ツールと連携できる ● バグチケットとそれの対応するファイルなどを関連付け できる ● 他の研究室のメンバーが簡単に閲覧することが出来る – 相談するときなどに有効
  • 22.
    まとめ ● Redmineを使ってプロジェクトを管理してみませんか? – チケットを使うことでスムーズな開発を!