SlideShare a Scribd company logo
ソースコード管理システム

   よしおかひろたか
   mailto:hyoshiok@gmail.com
   http://d.hatena.ne.jp/hyoshiok
   twitter @hyoshiok
   セキュリティ&プログラミングキャンプ 2011
目次

   なぜソースコード管理システムが必要なのか
   大規模分散開発
   Git の紹介
バージョン管理システム

   バージョン管理システムはなぜ必要なのか
       VCS (Version Control System), SCM (Source Code
        Manager), RCS (Revision Control System) などとも
        呼ばれている。
       変更を管理したい
       複数の人と共同作業をしたい
大規模分散開発

   特徴
       多くの人が開発に関与
       それぞれ独立に開発をしていて他人の作業について
        すべて知っているわけではない
       開発場所も分散している
ソフトウェア開発のワークフロー

   ソフトウェアを変更するとき
       機能追加、拡張、変更
       バグフィックス
       性能改善
       リファクタリング(機能は変更しないけど、より保
        守しやすい実装へ変更するなど)
ワークフロー

   コミュニティーベースの開発の場合、様々な仕
    事がある。
       テスト
       バグ登録
       バグのトリアージ(優先順度付け)
       バグのアサイン
       コードの修正
       ドキュメント執筆。翻訳。
       レビュー。
       その他いろいろ
ソフトウェア開発のワークフロー

   ソースコードリポジトリから取り出す
   変更する(コンパイルエラー、ビルドエラーを
    取り除く)
   テストをする
   期待どおりでない場合、(変更する、テストす
    る)を繰り返す
   ソースコードリポジトリへ戻す
   コンフリクトがある場合、コンフリクトを解消
    するまで、上記を繰り返す
リポジトリがなぜ必要なのか

   リポジトリ:ソースコードの保管場所
   複数の人が共通のコードで作業をしているから
       共同作業のかなめ
なぜバージョン管理が必要なのか

   変更部分を知りたい
       なぜ、その変更をしたのか
       どのように変更したのか
       自分の変更を追加したときにプログラムが期待通り
        に動かなくなった原因を知りたい
   誰が何をやっているか知りたい
   プロジェクトの進捗を知りたい
   いつからバグが入っているか知りたい
バージョン管理システムの例

   git
   subversion
   cvs
   sccs
   Rational Clearcase ( 商用製品 )
   Microsoft Team Foundation Server ( 商用製品 )
VCS への Linux での要求事項*

   分散開発を容易にする
   何千人の開発者をも扱えること
   高速で効率よく動作すること
   完全性と信頼を維持すること
   説明責任を強制すること



*実用 Git 、 Jon Loeliger ( 著 ) 、吉藤 英明 ( 監訳 ) 、 ISBN: 978-4873114408
VCS への Linux での要求事項、2

   不変性
   アトミックなトランザクション
   分散した開発に対応し後押しをすること
   完全なリポジトリ
   すっきりとした内部設計
   自由という意味でのフリー
Git

   Linux の創始者の Linus Torvalds が必要性にか
    られて開発
   分散型
   特徴
       高速
       分散開発のサポート
       ハッシュ (SHA1) による完全性の維持
git の利用

   help
       $ git help
       $ git help COMMAND
       $ git COMMAND --help
ユーザ設定

   コミッターと著者の設定
       $ git config –globall user.name ”Your Name”
       $ git config –global user.email your@email.address
   設定の確認
       $ git config -l
リポジトリの作成

   既にあるリポジトリからのコピー
    
        $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
       $ git clone https://github.com/ruby/ruby
   新規に作成する
       $ git init
変更

   ファイルの追加、変更など
       $ git add ファイル
   レポジトリへの反映
       $ git commit
                   エディタが起動してコメント記入を求められる
       $ git commit -m ”comments”
差分

   $ git diff
履歴

   $ git log
   $ git whatchanged
レポジトリの更新

   $ git pull レポジトリ名
       外部のレポジトリとマージする
二分探索

     $ git bisect
     バグを発見したとき、どのバージョンからバグ
      が混入したか調べる
$ git bisect start
$ git bisect bad                 # Current version is bad
$ git bisect good v2.6.13­rc2    # v2.6.13­rc2 was the last version
                                 # tested that was good
典型的なワークフロー

   $ git clone レポジトリ
   既存変更、テスト、デバッグなど
   $ git add ファイル名
   $ git commit
   $ git push レポジトリ
付録:

   github について
   コメントを英語で書くのがなぜ推奨されるのか
github

   https://github.com/
   git レポジトリのホスティングサービス
   Ruby on Rails の開発などにも利用されている
   無料でも使える
   利用方法
       アカウント作成
       プロジェクト登録( git push などをして公開)
       what are you coding ( 日々の活動をコードで表現)
コメントは英語で

   インターネットは英語が公用語
   英語で書く訓練になる
参考書

   入門 Git 、濱野純、 ISBN:978-4798023809
   実用 Git 、 Jon Loeliger ( 著 ) 、吉藤 英明 ( 監
    訳 ) 、 ISBN: 978-4873114408

More Related Content

PDF
Git&GitHub入門
PPTX
Git社内勉強会資料
PDF
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
PDF
GitLab/GitLab.com勉強会 第2回
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
PDF
なるべく噛み砕いたGit基礎講習
PDF
Redmine + gitlab: merge base development
PDF
Git lev 4 -みんなでGit-
Git&GitHub入門
Git社内勉強会資料
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab/GitLab.com勉強会 第2回
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
なるべく噛み砕いたGit基礎講習
Redmine + gitlab: merge base development
Git lev 4 -みんなでGit-

What's hot (20)

PDF
Jenkinsプラグインの中身を覗いてみよう
PDF
GitLab Prometheus
PDF
Gitの設定
PDF
楽しいGit外部公開用
PDF
Git lev 1-おひとりさま用-
PPTX
Git勉強会 #01
PDF
【BS12】Visual Studio 2022 40分一本勝負!
PPTX
GitLabを16万8千光年ワープさせた話(改)
PDF
Git & ブランチモデルで学ぶ バージョン管理入門
PDF
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
PDF
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
PDF
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
PDF
Jenkinsの導入 Vol.01
PPTX
新卒2年目のchef guy
PDF
オールフェスタ Git勉強会資料 (public)
PPTX
Multibranch Pipeline with Docker 入門編
PPTX
Android勉強会 1
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PDF
Android アプリ開発における Gradle ビルドシステム
PDF
CIツールのまとめとSide CI - CIツール勉強会@福岡
Jenkinsプラグインの中身を覗いてみよう
GitLab Prometheus
Gitの設定
楽しいGit外部公開用
Git lev 1-おひとりさま用-
Git勉強会 #01
【BS12】Visual Studio 2022 40分一本勝負!
GitLabを16万8千光年ワープさせた話(改)
Git & ブランチモデルで学ぶ バージョン管理入門
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
Jenkinsの導入 Vol.01
新卒2年目のchef guy
オールフェスタ Git勉強会資料 (public)
Multibranch Pipeline with Docker 入門編
Android勉強会 1
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
Android アプリ開発における Gradle ビルドシステム
CIツールのまとめとSide CI - CIツール勉強会@福岡
Ad

Viewers also liked (20)

PDF
Code Reading at Security and Programming camp 2011
PDF
Version Control System Tutorial バージョン管理システムチュートリアル
PDF
Anatomy of Lightning Talks at Rakuten Technology Conference 2014, After Confe...
PDF
1000 Speakers Conference in English, on December 6th, 2013
PDF
Hacker centric culture @devlove 110423
PDF
English Book Club at 1000 Speakers Conference in English, 3rd, on Feb 7th, 2014
PDF
対人関係におけるアルコールの効用
PDF
Internet and Opensource at Security and Programming camp 2011
PDF
How Changing Mobile Technology Is Changing The Way We Create Economy.
PDF
Tokaido 53 walk
PDF
産業技術大学院大学の2014年度enPiT受講生募集中 #qcontokyo #aiit_enpit
PDF
1000 speakers conference in English, 2nd, 1/20/2013
PDF
1000 Speakers Conference in English, 5th on April 11th, 2014 #1000eng
PDF
Introduction to Git and GitHub #git_nyan
PDF
kernel code reading party on March 28th, 2014
PDF
Project Based Learning using by PaaS
PDF
Hacker culture at an internet company. 文明塾, 2014/04/23
PDF
Business Application Development Course at AIIT
PPTX
20140725 オープンデータ化の価値
PDF
the Histrory of LT and ドラ娘
Code Reading at Security and Programming camp 2011
Version Control System Tutorial バージョン管理システムチュートリアル
Anatomy of Lightning Talks at Rakuten Technology Conference 2014, After Confe...
1000 Speakers Conference in English, on December 6th, 2013
Hacker centric culture @devlove 110423
English Book Club at 1000 Speakers Conference in English, 3rd, on Feb 7th, 2014
対人関係におけるアルコールの効用
Internet and Opensource at Security and Programming camp 2011
How Changing Mobile Technology Is Changing The Way We Create Economy.
Tokaido 53 walk
産業技術大学院大学の2014年度enPiT受講生募集中 #qcontokyo #aiit_enpit
1000 speakers conference in English, 2nd, 1/20/2013
1000 Speakers Conference in English, 5th on April 11th, 2014 #1000eng
Introduction to Git and GitHub #git_nyan
kernel code reading party on March 28th, 2014
Project Based Learning using by PaaS
Hacker culture at an internet company. 文明塾, 2014/04/23
Business Application Development Course at AIIT
20140725 オープンデータ化の価値
the Histrory of LT and ドラ娘
Ad

Similar to VCS - Version Control System at Security and Programming camp 2011 (20)

PDF
Git -分散バージョン管理システム-
PDF
バージョン管理システムチュートリアル
PPT
分散バージョン管理システムGitの紹介
PDF
猫にはわからないGit講座
PDF
Git 20100313
PDF
Github入門2014
PPTX
Git勉強会
PDF
バージョン管理とGit
PDF
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
PDF
Developer-Controlled Packages (DCPs) を試してみた
PDF
Git 初心者講座 by forkwell
PDF
MakeGoodで快適なテスト駆動開発を
PDF
OSSを利用したプロジェクト管理
ODP
20130608 git-0
PPTX
Git勉強会資料
PDF
XPages開発におけるGit/GitHubの利用
ODP
Next-L Enju 開発ワークショップ #02
PDF
Git 20100724
PPT
Gitのススメ
PDF
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
Git -分散バージョン管理システム-
バージョン管理システムチュートリアル
分散バージョン管理システムGitの紹介
猫にはわからないGit講座
Git 20100313
Github入門2014
Git勉強会
バージョン管理とGit
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
Developer-Controlled Packages (DCPs) を試してみた
Git 初心者講座 by forkwell
MakeGoodで快適なテスト駆動開発を
OSSを利用したプロジェクト管理
20130608 git-0
Git勉強会資料
XPages開発におけるGit/GitHubの利用
Next-L Enju 開発ワークショップ #02
Git 20100724
Gitのススメ
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab

More from Hiro Yoshioka (20)

PDF
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
PDF
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
PDF
不揮発性メモリ(NVM)とはなにか
PDF
続・人生100年時代の学び方
PDF
人生100年時代における学び方 定年後の学生生活
PDF
Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persisten...
PDF
人生100年時代の学び方、脳には可塑性がある
PDF
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
PDF
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
PDF
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
PDF
未経験プログラマがコボルコンパイラを作った話 #compiler_study
PDF
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
PDF
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
PDF
理科系の作文技術
PDF
Agile Software Development advanced course (PBL) at AIIT, 2015
PDF
質問される力 #TechGirls
PDF
Oracle vs Google API 著作権裁判を考える
PDF
Using oss at an internet company and hacker culture
PDF
Be Hacker
PDF
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
不揮発性メモリ(NVM)とはなにか
続・人生100年時代の学び方
人生100年時代における学び方 定年後の学生生活
Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persisten...
人生100年時代の学び方、脳には可塑性がある
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
未経験プログラマがコボルコンパイラを作った話 #compiler_study
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
理科系の作文技術
Agile Software Development advanced course (PBL) at AIIT, 2015
質問される力 #TechGirls
Oracle vs Google API 著作権裁判を考える
Using oss at an internet company and hacker culture
Be Hacker
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan

VCS - Version Control System at Security and Programming camp 2011

  • 1. ソースコード管理システム  よしおかひろたか  mailto:hyoshiok@gmail.com  http://d.hatena.ne.jp/hyoshiok  twitter @hyoshiok  セキュリティ&プログラミングキャンプ 2011
  • 2. 目次  なぜソースコード管理システムが必要なのか  大規模分散開発  Git の紹介
  • 3. バージョン管理システム  バージョン管理システムはなぜ必要なのか  VCS (Version Control System), SCM (Source Code Manager), RCS (Revision Control System) などとも 呼ばれている。  変更を管理したい  複数の人と共同作業をしたい
  • 4. 大規模分散開発  特徴  多くの人が開発に関与  それぞれ独立に開発をしていて他人の作業について すべて知っているわけではない  開発場所も分散している
  • 5. ソフトウェア開発のワークフロー  ソフトウェアを変更するとき  機能追加、拡張、変更  バグフィックス  性能改善  リファクタリング(機能は変更しないけど、より保 守しやすい実装へ変更するなど)
  • 6. ワークフロー  コミュニティーベースの開発の場合、様々な仕 事がある。  テスト  バグ登録  バグのトリアージ(優先順度付け)  バグのアサイン  コードの修正  ドキュメント執筆。翻訳。  レビュー。  その他いろいろ
  • 7. ソフトウェア開発のワークフロー  ソースコードリポジトリから取り出す  変更する(コンパイルエラー、ビルドエラーを 取り除く)  テストをする  期待どおりでない場合、(変更する、テストす る)を繰り返す  ソースコードリポジトリへ戻す  コンフリクトがある場合、コンフリクトを解消 するまで、上記を繰り返す
  • 8. リポジトリがなぜ必要なのか  リポジトリ:ソースコードの保管場所  複数の人が共通のコードで作業をしているから  共同作業のかなめ
  • 9. なぜバージョン管理が必要なのか  変更部分を知りたい  なぜ、その変更をしたのか  どのように変更したのか  自分の変更を追加したときにプログラムが期待通り に動かなくなった原因を知りたい  誰が何をやっているか知りたい  プロジェクトの進捗を知りたい  いつからバグが入っているか知りたい
  • 10. バージョン管理システムの例  git  subversion  cvs  sccs  Rational Clearcase ( 商用製品 )  Microsoft Team Foundation Server ( 商用製品 )
  • 11. VCS への Linux での要求事項*  分散開発を容易にする  何千人の開発者をも扱えること  高速で効率よく動作すること  完全性と信頼を維持すること  説明責任を強制すること *実用 Git 、 Jon Loeliger ( 著 ) 、吉藤 英明 ( 監訳 ) 、 ISBN: 978-4873114408
  • 12. VCS への Linux での要求事項、2  不変性  アトミックなトランザクション  分散した開発に対応し後押しをすること  完全なリポジトリ  すっきりとした内部設計  自由という意味でのフリー
  • 13. Git  Linux の創始者の Linus Torvalds が必要性にか られて開発  分散型  特徴  高速  分散開発のサポート  ハッシュ (SHA1) による完全性の維持
  • 14. git の利用  help  $ git help  $ git help COMMAND  $ git COMMAND --help
  • 15. ユーザ設定  コミッターと著者の設定  $ git config –globall user.name ”Your Name”  $ git config –global user.email your@email.address  設定の確認  $ git config -l
  • 16. リポジトリの作成  既にあるリポジトリからのコピー  $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git  $ git clone https://github.com/ruby/ruby  新規に作成する  $ git init
  • 17. 変更  ファイルの追加、変更など  $ git add ファイル  レポジトリへの反映  $ git commit  エディタが起動してコメント記入を求められる  $ git commit -m ”comments”
  • 18. 差分  $ git diff
  • 19. 履歴  $ git log  $ git whatchanged
  • 20. レポジトリの更新  $ git pull レポジトリ名  外部のレポジトリとマージする
  • 21. 二分探索  $ git bisect  バグを発見したとき、どのバージョンからバグ が混入したか調べる $ git bisect start $ git bisect bad                 # Current version is bad $ git bisect good v2.6.13­rc2    # v2.6.13­rc2 was the last version                                  # tested that was good
  • 22. 典型的なワークフロー  $ git clone レポジトリ  既存変更、テスト、デバッグなど  $ git add ファイル名  $ git commit  $ git push レポジトリ
  • 23. 付録:  github について  コメントを英語で書くのがなぜ推奨されるのか
  • 24. github  https://github.com/  git レポジトリのホスティングサービス  Ruby on Rails の開発などにも利用されている  無料でも使える  利用方法  アカウント作成  プロジェクト登録( git push などをして公開)  what are you coding ( 日々の活動をコードで表現)
  • 25. コメントは英語で  インターネットは英語が公用語  英語で書く訓練になる
  • 26. 参考書  入門 Git 、濱野純、 ISBN:978-4798023809  実用 Git 、 Jon Loeliger ( 著 ) 、吉藤 英明 ( 監 訳 ) 、 ISBN: 978-4873114408