SlideShare a Scribd company logo
1 of 16
Download to read offline
はじめての
RELEASEブランチ運用
(SVN編)
高野将
コンテキスト
   VCSはSubversion
   大勢の開発メンバーがバシバシ開発、バグ修正
   モジュール単位で随時リリースする必要あり
運用ルール策定
「いつ?」、「何を?」、「どのように?」リリース
するか
いつ?
   最も頻繁でも日次でリリースする
     これを超えると、リリース作業のコストが高すぎる
      リリースしたモジュール管理できるの?
         どのバグが直った?
         どのフィーチャーが実装されている?
      リリース作業の負荷は高い
         モジュール選定
         出荷可能かどうか判定
         必要なファイルのみ取り出す
         単純なファイルコピー、アーカイブの時間
何を?
   開発チームで選定する
     リリースするモジュールの状態(実現できたフィー
      チャー、修正したバグ)を開発チームで管理する
     開発チームの代表者がリリースモジュールを選定す
      る
      サブチームに分かれていれば、サブチームごとに代表者
     が取りまとめる
     中途半端な状態の物はリリースしない
      最低でもコンパイルが通るものを
どのように?
   releaseブランチを活用する
     releaseブランチのソース=リリース先のソースとなる
      よう同期を取る
     開発メイン(trunk)からリリース対象モジュールをマー
      ジする
     リリース先の環境に合わせてカスタマイズする
releaseブランチ
Subversionでのreleaseブランチ運用
releaseブランチ運用イメージ



trunk     A           D   E       F   H       J   K   L




release       B   C           G           I               M   N
releaseブランチ作成
    trunkをコピーしてreleaseブランチを作成する
         SVNはリポジトリー内の通しリビジョンなのでrelease
          ブランチ作成でもリビジョン番号が付加される



trunk      A




release        B
リリース先向けカスタマイズ
    リリース先に合わせた変更をreleaseブランチにコ
     ミットする
         ファイルパス、URL、環境変数、etc...

    この段階でリリースが可能になる
         リリースブランチをエクスポートするだけ

trunk      A




release        B   C
開発が進む
    開発ブランチであるtrunkにコミットされる
    releaseブランチは変更されない




trunk     A           D   E   F




release       B   C
releaseブランチへのマージ
    trunkの変更を、「対象モジュール単位」でrelease
     ブランチにマージする
         Subversionのマージ機能を活用する

    releaseブランチでは、trunkの複数コミットがまと
     められてコミットされるイメージになる
trunk      A           D   E       F




release        B   C           G
trunk、releaseブランチの成長
    対象モジュールは開発チームが選定するため、
     trunkのコミット内容とreleaseブランチへの反映が
     前後することもある



trunk     A           D   E       F   H       J   K   L




release       B   C           G           I               M   N
releaseブランチの利点
   開発を止める必要がない
     trunkとreleaseはそれぞれ別々に成長する
     trunkが壊れてもreleaseには影響しない

   リリース先に合わせたカスタマイズは初回のみで良い
       リリース環境が複数あるなら、それぞれに対するブランチ
        を作成するだけ
   リリース先のコードがすぐに参照可能
       ただし、正しく同期を行うことが大切
         リリース先でコード修正は原則としてしない
         修正したら即座にreleaseブランチに反映し、trunkに逆マージす
          る
まとめ
まとめ
   リリース作業は日次で区切り、リリース対象機能
    の状態を管理して行う
   リリース作業はreleaseブランチを用いた運用を行
    う
   releaseブランチではリリース先に合わせたカスタ
    マイズを行う
   releaseブランチへはリリース対象モジュール単位
    にtrunkからマージする
     リリースブランチへのマージはVCSの機能で行う

More Related Content

What's hot

Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeENSET, Université Hassan II Casablanca
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptx
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptxc10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptx
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptxSpartRaw
 
L'approche par regles metier
L'approche par regles metierL'approche par regles metier
L'approche par regles metiersenejug
 
ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争goccy
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
Inforsud Diffusion - Présentation Sage FRP 1000 V7
Inforsud Diffusion - Présentation Sage FRP 1000 V7Inforsud Diffusion - Présentation Sage FRP 1000 V7
Inforsud Diffusion - Présentation Sage FRP 1000 V7Agathe Rouviere
 
Les fondamentaux de la gestion de projet
Les fondamentaux de la gestion de projetLes fondamentaux de la gestion de projet
Les fondamentaux de la gestion de projetCOMPETENSIS
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Comprendre l’intelligence artificielle [webinaire]
Comprendre l’intelligence artificielle [webinaire]Comprendre l’intelligence artificielle [webinaire]
Comprendre l’intelligence artificielle [webinaire]Technologia Formation
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleECAM Brussels Engineering School
 
Données liées et Web sémantique : quand le lien fait sens.
Données liées et Web sémantique : quand le lien fait sens. Données liées et Web sémantique : quand le lien fait sens.
Données liées et Web sémantique : quand le lien fait sens. Fabien Gandon
 
Business agility : La transformation Digitale concerne toute l'organisation -...
Business agility : La transformation Digitale concerne toute l'organisation -...Business agility : La transformation Digitale concerne toute l'organisation -...
Business agility : La transformation Digitale concerne toute l'organisation -...Agile En Seine
 
Expression de besoin pour le si
Expression de besoin pour le siExpression de besoin pour le si
Expression de besoin pour le sifatima zahra FANDI
 

What's hot (20)

Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 
凝集度と責務
凝集度と責務凝集度と責務
凝集度と責務
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptx
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptxc10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptx
c10-adopter-lapproche-agile-resume-theorique-6311e1a767ead.pptx
 
L'approche par regles metier
L'approche par regles metierL'approche par regles metier
L'approche par regles metier
 
ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
P4 intents
P4 intentsP4 intents
P4 intents
 
Inforsud Diffusion - Présentation Sage FRP 1000 V7
Inforsud Diffusion - Présentation Sage FRP 1000 V7Inforsud Diffusion - Présentation Sage FRP 1000 V7
Inforsud Diffusion - Présentation Sage FRP 1000 V7
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Les fondamentaux de la gestion de projet
Les fondamentaux de la gestion de projetLes fondamentaux de la gestion de projet
Les fondamentaux de la gestion de projet
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Comprendre l’intelligence artificielle [webinaire]
Comprendre l’intelligence artificielle [webinaire]Comprendre l’intelligence artificielle [webinaire]
Comprendre l’intelligence artificielle [webinaire]
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Données liées et Web sémantique : quand le lien fait sens.
Données liées et Web sémantique : quand le lien fait sens. Données liées et Web sémantique : quand le lien fait sens.
Données liées et Web sémantique : quand le lien fait sens.
 
Business agility : La transformation Digitale concerne toute l'organisation -...
Business agility : La transformation Digitale concerne toute l'organisation -...Business agility : La transformation Digitale concerne toute l'organisation -...
Business agility : La transformation Digitale concerne toute l'organisation -...
 
Expression de besoin pour le si
Expression de besoin pour le siExpression de besoin pour le si
Expression de besoin pour le si
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 

Viewers also liked

Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜
Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜
Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜suga masao
 
ブランチを綺麗に保ち、どうやって本番アップするのか
ブランチを綺麗に保ち、どうやって本番アップするのかブランチを綺麗に保ち、どうやって本番アップするのか
ブランチを綺麗に保ち、どうやって本番アップするのかSaeko Yamamoto
 
Subversionでバージョン管理を!
Subversionでバージョン管理を!Subversionでバージョン管理を!
Subversionでバージョン管理を!Ryuzo Yamamoto
 
怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用CROOZ, inc.
 
Subversion
SubversionSubversion
Subversionghiblar
 
はじめてのSubversion(サブバージョン)
はじめてのSubversion(サブバージョン)はじめてのSubversion(サブバージョン)
はじめてのSubversion(サブバージョン)西畑 一馬
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsyncHidenori Goto
 
Subversionにまつわる試行錯誤 090627.Key
Subversionにまつわる試行錯誤 090627.KeySubversionにまつわる試行錯誤 090627.Key
Subversionにまつわる試行錯誤 090627.Keykazukichop
 
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiAワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiARyutaro YOSHIBA
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 

Viewers also liked (12)

Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜
Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜
Subversion の導入から 運用について 〜ワシのTipsは108つまであるぞ〜
 
ブランチを綺麗に保ち、どうやって本番アップするのか
ブランチを綺麗に保ち、どうやって本番アップするのかブランチを綺麗に保ち、どうやって本番アップするのか
ブランチを綺麗に保ち、どうやって本番アップするのか
 
Subversionでバージョン管理を!
Subversionでバージョン管理を!Subversionでバージョン管理を!
Subversionでバージョン管理を!
 
怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用
 
Subversion
SubversionSubversion
Subversion
 
はじめてのSubversion(サブバージョン)
はじめてのSubversion(サブバージョン)はじめてのSubversion(サブバージョン)
はじめてのSubversion(サブバージョン)
 
SVN入門
SVN入門SVN入門
SVN入門
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsync
 
Subversionにまつわる試行錯誤 090627.Key
Subversionにまつわる試行錯誤 090627.KeySubversionにまつわる試行錯誤 090627.Key
Subversionにまつわる試行錯誤 090627.Key
 
Git超入門
Git超入門Git超入門
Git超入門
 
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiAワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 

Similar to はじめてのReleaseブランチ運用(svn編)

分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介tod esking
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~decode2016
 
ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装Yosuke Matsusaka
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Masaru Horioka
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurialkwatch
 
バージョン管理の断捨離
バージョン管理の断捨離バージョン管理の断捨離
バージョン管理の断捨離Kazushi Kamegawa
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Toshihiro Araki
 
デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みTakeshi Shinmura
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)Masataka Kondo
 
構成管理のアンチパターン
構成管理のアンチパターン構成管理のアンチパターン
構成管理のアンチパターンakipii Oga
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎Noriaki Ando
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWSEiji Shinohara
 

Similar to はじめてのReleaseブランチ運用(svn編) (20)

分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介分散バージョン管理システムGitの紹介
分散バージョン管理システムGitの紹介
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
 
バージョン管理の断捨離
バージョン管理の断捨離バージョン管理の断捨離
バージョン管理の断捨離
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組み
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
構成管理のアンチパターン
構成管理のアンチパターン構成管理のアンチパターン
構成管理のアンチパターン
 
DVCSとGitの基礎
DVCSとGitの基礎DVCSとGitの基礎
DVCSとGitの基礎
 
Devsumi2008
Devsumi2008Devsumi2008
Devsumi2008
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 

More from 将 高野

新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57将 高野
 
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55将 高野
 
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnetC#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet将 高野
 
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51将 高野
 
業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet将 高野
 
仕事が捗る! Office & エディター操作入門 #nds40
仕事が捗る! Office & エディター操作入門 #nds40仕事が捗る! Office & エディター操作入門 #nds40
仕事が捗る! Office & エディター操作入門 #nds40将 高野
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -将 高野
 
設計(≒デザイン)の話をしよう #nds35
設計(≒デザイン)の話をしよう #nds35設計(≒デザイン)の話をしよう #nds35
設計(≒デザイン)の話をしよう #nds35将 高野
 
Lightweight C#
Lightweight C#Lightweight C#
Lightweight C#将 高野
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ将 高野
 
効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法将 高野
 
Lets Enjoy C#!
Lets Enjoy C#!Lets Enjoy C#!
Lets Enjoy C#!将 高野
 
Hello ".NET" World
Hello ".NET" WorldHello ".NET" World
Hello ".NET" World将 高野
 

More from 将 高野 (16)

新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
 
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55
 
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnetC#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
 
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
 
業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet
 
仕事が捗る! Office & エディター操作入門 #nds40
仕事が捗る! Office & エディター操作入門 #nds40仕事が捗る! Office & エディター操作入門 #nds40
仕事が捗る! Office & エディター操作入門 #nds40
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -
 
設計(≒デザイン)の話をしよう #nds35
設計(≒デザイン)の話をしよう #nds35設計(≒デザイン)の話をしよう #nds35
設計(≒デザイン)の話をしよう #nds35
 
Lightweight C#
Lightweight C#Lightweight C#
Lightweight C#
 
git-svn
git-svngit-svn
git-svn
 
GTD on RTM
GTD on RTMGTD on RTM
GTD on RTM
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法
 
Choi LINQ
Choi LINQChoi LINQ
Choi LINQ
 
Lets Enjoy C#!
Lets Enjoy C#!Lets Enjoy C#!
Lets Enjoy C#!
 
Hello ".NET" World
Hello ".NET" WorldHello ".NET" World
Hello ".NET" World
 

はじめてのReleaseブランチ運用(svn編)

  • 2. コンテキスト  VCSはSubversion  大勢の開発メンバーがバシバシ開発、バグ修正  モジュール単位で随時リリースする必要あり
  • 4. いつ?  最も頻繁でも日次でリリースする  これを超えると、リリース作業のコストが高すぎる  リリースしたモジュール管理できるの?  どのバグが直った?  どのフィーチャーが実装されている?  リリース作業の負荷は高い  モジュール選定  出荷可能かどうか判定  必要なファイルのみ取り出す  単純なファイルコピー、アーカイブの時間
  • 5. 何を?  開発チームで選定する  リリースするモジュールの状態(実現できたフィー チャー、修正したバグ)を開発チームで管理する  開発チームの代表者がリリースモジュールを選定す る  サブチームに分かれていれば、サブチームごとに代表者 が取りまとめる  中途半端な状態の物はリリースしない  最低でもコンパイルが通るものを
  • 6. どのように?  releaseブランチを活用する  releaseブランチのソース=リリース先のソースとなる よう同期を取る  開発メイン(trunk)からリリース対象モジュールをマー ジする  リリース先の環境に合わせてカスタマイズする
  • 8. releaseブランチ運用イメージ trunk A D E F H J K L release B C G I M N
  • 9. releaseブランチ作成  trunkをコピーしてreleaseブランチを作成する  SVNはリポジトリー内の通しリビジョンなのでrelease ブランチ作成でもリビジョン番号が付加される trunk A release B
  • 10. リリース先向けカスタマイズ  リリース先に合わせた変更をreleaseブランチにコ ミットする  ファイルパス、URL、環境変数、etc...  この段階でリリースが可能になる  リリースブランチをエクスポートするだけ trunk A release B C
  • 11. 開発が進む  開発ブランチであるtrunkにコミットされる  releaseブランチは変更されない trunk A D E F release B C
  • 12. releaseブランチへのマージ  trunkの変更を、「対象モジュール単位」でrelease ブランチにマージする  Subversionのマージ機能を活用する  releaseブランチでは、trunkの複数コミットがまと められてコミットされるイメージになる trunk A D E F release B C G
  • 13. trunk、releaseブランチの成長  対象モジュールは開発チームが選定するため、 trunkのコミット内容とreleaseブランチへの反映が 前後することもある trunk A D E F H J K L release B C G I M N
  • 14. releaseブランチの利点  開発を止める必要がない  trunkとreleaseはそれぞれ別々に成長する  trunkが壊れてもreleaseには影響しない  リリース先に合わせたカスタマイズは初回のみで良い  リリース環境が複数あるなら、それぞれに対するブランチ を作成するだけ  リリース先のコードがすぐに参照可能  ただし、正しく同期を行うことが大切  リリース先でコード修正は原則としてしない  修正したら即座にreleaseブランチに反映し、trunkに逆マージす る
  • 16. まとめ  リリース作業は日次で区切り、リリース対象機能 の状態を管理して行う  リリース作業はreleaseブランチを用いた運用を行 う  releaseブランチではリリース先に合わせたカスタ マイズを行う  releaseブランチへはリリース対象モジュール単位 にtrunkからマージする  リリースブランチへのマージはVCSの機能で行う