現: 2020-12-26 (土) 15:08:10 yuji ソース
Line 1: Line 1:
 +*Subversion [#j97cd161]
 +Subversionは,バージョン管理システムとして広く利用されているCVSの管理スタイルを踏襲しつつ,CVSの欠点を解決したバージョン管理システムだそうだ。
 +#ls2(,pagename)
 +
 +*Subversionはじめ [#jd51fcab]
 +-リポジトリ(サーバー)からファイルを手元に取り出すことを''checkout''と言う。
 +-手元に''checkout''したファイルを作業コピーと呼ぶ。
 +-作業コピーに加えた変更をリポジトリに反映することを,''コミット(commit)''と言う。
 +--''コミット''したファイルは,いつでも過去に''コミット''した時の状態で取り出すことが出来ます。バージョン管理と言われる由縁。
 +--''コミット''すると,その時のバージョンを指す番号(リビジョン)が付く。
 +-作業コピーにリポジトリのファイルの内容を反映することを''更新(update)''と言う。
 +--作業コピーを''checkout''してからリポジトリに変更が''コミット''されたかも知れない。作業コピーをリポジトリの最新の状態に''更新 (update)''するのが重要。
 +--作業コピーに変更を加えられていた場合,リポジトリに''コミット''されている変更が''マージ(merge)''される。
 +-ファイルをバージョン管理しない状態に取り出すことを''export''と言う。
 +-あるバージョンに付けた目印を,''タグ(tag)''と言う。
 +--自動的に付く''タグ''がいくつかある。
 + HEAD:作業コピーに対するリポジトリ上の最新リビジョンを指す
 + BASE:作業コピーの元になっているリビジョンを指す
 +-バージョン管理の中心となるフォルダを''トランク(trunk)''と呼ぶ。
 +-trunkに平行してバージョン管理するフォルダを''ブランチ(branch)''と呼ぶ。
 +-リポジトリは仮想的なファイルシステム。
 +--ローカルのディスク上でファイルやフォルダをコピーするような感覚で使える。 現在の状態のファイルを残しておくのが''tag'',平行して別の変更を加える為のコピーが''branch''になる。
 +--リポジトリ上でコピーを行ってもファイル内容がコピーされるわけではないので,ディスク容量を気にする必要はない。
 +
 +*Subversionの入門 [#t3aeeb52]
 +-タグもブランチも,リポジトリ上でコピーすることにより行う。 →''copy''サブコマンド
 +--GUIクライアントには,タグやブランチのための専用UIが有るので,大丈夫かな。
 +--コピーだから,HEADリビジョンは各コピー毎にあることになる。つまり,ブランチの作業コピー上でHEADリビジョンはそのブランチの最新リビジョンを指し,trunkを指さない。
 +-リポジトリを変更すると,リポジトリ全体のリビジョンが更新される。ファイル毎ではない。
 +--タグを作成しなくても,リビジョンを指定して取り出せば全てのファイルがそのリビジョンの状態(チェンジセットに相当)で得られることになる。
 +-フォルダが管理されます。
 +-リネーム,移動が出来る。 →''move''サブコマンド
 +-コミット前の変更の取り消しが出来る。 →''revert''サブコマンド
 +-''update''すると現在の作業コピーにマージが発生するんだけど,マージには専用コマンドがある。 → mergeサブコマンド
 +-作業コピーのBASEを別のリビジョン・タグ・ブランチに移動するために専用のコマンドがある。 →''swicth''サブコマンド
 +
 +*Subversionの特徴 [#rddfbab1]
 +-チェンジセットによるリビジョン管理~
 +CVSでは,このコミット作業はファイルごとになるんで,ファイルごとにリビジョン番号が振られちゃう。そのため,変更点が複数のファイルにまたがっている場合とかだと,変更点を把握するのがすごく大変になっちゃう。~
 +Subversionだと,リポジトリ全体にリビジョン番号を付けてバージョンの管理をしているので,コミット作業は関連ファイル全体を一度に行うようなっている。仕様変更によってどのファイルがどのように変更されたのか割合に分かるようになっています。このおかげでバグトラッキングシステム等の変更管理システムと一緒に利用すると,それぞれの変更の差分を確認しやすくなる。
 +-ファイルのコピー,リネームとかでも履歴が引き継げる~
 +CVSは,ファイルをコピーしたりファイルの名前を変更したりすると,ファイルの履歴を残せなかった。~
 +Subversionだと,ファイルをコピーする場合やファイル名の変更をする場合でも,ファイルの履歴を引き継げる。
 +-プロトコルにHTTPを利用できる~
 +CVSは,リポジトリへのアクセスは独自プロトコルか,SSH接続を使う。これだと,ファイアウォールとかあると接続出来なくて困ることがある。~
 +Subversionだと,WebDAVが利用できるんでHTTPプロトコルが通れば使用できる。
 +-柔軟なマージ機能~
 +CVSは,基本的にはタグ付けからのみマージ出来たが,Subversionだと任意のリビジョン間の差分をマージできるようになっている。
 +-フック機能がある~
 +CVSと同様に,フックの機能がある。これでコミットの前後で特定の処理を実行できる。
 + コミットログが記述されていない場合は,コミットさせない
 + コミットログに故障管理IDや仕様変更IDが記述されていない場合は,コミットさせない
 + コードチェックを行い問題があった場合,コミットさせない
 + コミット後自動的にビルド/テストを行い,テスト結果やカバレッジのレポートを作成する
 +といった事ができるようだ。
 +
 +*ドキュメント管理なんかにも使うと結構便利な気がする [#q4b643e5]
 ++バージョン管理~
 +Subversionみたいな管理ソフトがない場合,以下のような感じでファイル名などを工夫して世代を管理していると思う。
 + 1_企画書.ppt → 2_企画書.ppt → 3_企画書.ppt
 + 設計書_V1.doc → 設計書_V2.doc → 設計書_V3.doc
 + 20090814_設計書.doc → 20090815_設計書.doc → 20090816_設計書.doc
 ++ベースラインの管理~
 +開発過程の“ある時点”で関係性を維持している状態のことを「ベースライン」と呼ぶらしい。~
 +お客さんとかに初めて提出したときの文書なんかがバージョン1としたら,1回目の修正で企画書だけ修正したとすると,そのときは企画書をバージョン2にして保存します(ファイル名とか変更して)。最終提出する時,微調整した企画書をバージョン3,他の文書なんかもあるんで,それをなんたら仕様書のバージョン2って感じで,これらもファイル名とかフォルダーとか作って保存しています。~
 +これを繰り返していくと頭の中に入っていた事も,お客さんに出した書類がどの書類がどのバージョンだったかとかわからなくなっちゃいます。これが複数のお客さんがいた時なんか尚更です。~
 +この場合,変更しなかった文書のバージョンも上げちゃえば少し管理が楽になる。あるお客さんに提出したのはバージョン2とか,このお客さんの時はバージョン3とか,って感じ。
  

  • 開発/バージョン管理システム/Subversion のバックアップ差分(No. All)
    • 現: 2020-12-26 (土) 15:08:10 yuji

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 564, today: 1, yesterday: 0