SlideShare a Scribd company logo
1 of 27
Python ではじめる Git。

まえだこうへい mkouhei@debian.or.jp
     a.k.a. mkouhei


       2012 年 7 月 28 日




                         .   .   .   .   .   .
自己紹介

 まえだこうへい
 ▶   Debian JP Project Leader(2011, 2012) / CouchDB JP
 ▶   勤務先:渋谷の会社
 ▶   Python 関連の Debian パッケージのメンテナンスなど
 ▶   職場で使用している OpenStack の構築・運用で必要な、
     周辺ツールの開発、構築とか
 ▶   執筆
       ▶   Git によるバージョン管理 (オーム社)
       ▶   KVM 徹底入門 (翔泳社)
       ▶   ゆったリラックス! CouchDB があるところ (@IT) #5
       ▶   知って見るみる KVM(@IT)


                                   .   .   .   .   .     .
宣伝




 Git によるバージョン管理 http://ssl.ohmsha.co.jp/
     cgi-bin/menu.cgi?ISBN=978-4-274-06864-5




                              .   .   .   .   .   .
ここにいる皆さんはきっと
Git は日常の道具ですよね…




          .   .   .   .   .   .
いや待てよ…。




          .   .   .   .   .   .
私の pyfes に対するイメージ (偏見)




  ▶   参加者の公用語は Python
  ▶   シェルや、シェルスクリプトを使っていたら、怒られる
  ▶   Git なにそれ?Mercurial だろ jk
  ▶   LaTeX なにそれ?Sphi(ry
 怖いところに、のこのこ来てもうた…。




                                 .   .   .   .   .   .
とりあえず、Python で Git を
使う方法をネタにしてみま
した




             .   .   .   .   .   .
Python で Git を扱う方法

   ▶   Git のコマンドを使う
        ▶   blueprint のように subprocess.Popen を使う方法1
        ▶   gittools のように commands.getstatusoutput() を使う方
            法2
   ▶   Python 製の Git ツールを使う
        ▶   legit 3
        ▶   GitPython 4
        ▶   Dulwich 5
        ▶   などなど。


   1
     https://github.com/devstructure/blueprint
   2
     https://github.com/farktronix/gittools
   3
     https://github.com/kennethreitz/legit
   4
     https://github.com/gitpython-developers/GitPython
   5
     http://www.samba.org/~jelmer/dulwich/ .
                                        .        .   .   .   .
今回は GitPython にしてみました。



 選んだ理由は、
  $ apt-cache search git python


 で、
  ▶   最初に目にとまったのが GitPython だった
  ▶API のドキュメントも充実していた
 とただそれだけです。




                                  .   .   .   .   .   .
インストール



 $ sudo apt-get install python-git


 ちなみに、
 ▶   Debian の Python パッケージングポリシーは、パッケー
     ジ名が’python-’ となります
 ▶   blockdiag シリーズも、’python-blockdiag’ のようになり
     ます




                                     .   .   .   .   .   .
GitPython の使い方




                 .   .   .   .   .   .
git init


   ローカルリポジトリ
     import git
     git_repo = git.Git(’/tmp/practice’)
     git_repo.init()


   ベアリポジトリ
     git_repo_bare = git.Git(’/tmp/practice-bare’)
     git_repo_bare.init(bare=True)




                                                     .   .   .   .   .   .
git add




    git_cmd = git.cmd.Git(’/tmp/practice’)
    f = open(’/tmp/practice/hoge’, ’w’)
    f.write(’hoge’)
    f.close()
    git_cmd.add(’hoge’)




                                             .   .   .   .   .   .
git commit




   g_cmd.commit(m=’Add hoge’)




                                .   .   .   .   .   .
ブランチの作成




 git_repo.create_head(’newbranch’)




                                     .   .   .   .   .   .
ブランチのチェックアウト




 git_cmd.checkout(’newbranch’)




                                 .   .   .   .   .   .
working tree のクリア




   git_repo.active_branch.checkout()




                                       .   .   .   .   .   .
ブランチの一覧取得




 git_repo.branches




                     .   .   .   .   .   .
git rm




    git_cmd.rm(’hoge’)




                         .   .   .   .   .   .
(リファレンス6見れば)
簡単ですね。




  6
   http:
//packages.python.org/GitPython/0.3.2/reference.html
                                       .   .   .   .   .   .
困るのは使い道。



 ▶   私は bash の代わりに python の interactive モードや
     ipython で生活しているわけではない、一般人
 ▶   Git コマンドではなく、Python で Git を使うと言って
     も、アイデアがありません
 ▶   ありきたりなのは、Wiki とか Web アプリで Git リポジ
     トリを読み込むとか、それ何て GitLab とか Gitorious




                                .   .   .   .   .   .
そんなときに、(一昨日の)
「CloudFoundry 輪読会での
LXC の話をしてよ」by
@yssk22



             .   .   .   .   .   .
名前は iori「庵」




 ということで GitPython を使って作ってみました。
 https://github.com/mkouhei/iori




                         .   .   .   .   .   .
どの辺が GitPython?


   ▶   LXC ホストおよびコンテナを管理するためのリポジト
       リ ($HOME/.iori)
   ▶   LXC ホストを登録すると、ブランチを一つ作成
   ▶   コンテナを作成すると、XML ファイルを保存して、git
       add/commit
   ▶   コンテナを削除すると、git rm/commit
  と先ほど説明したことをやっているだけですね。
  https://github.com/mkouhei/iori/blob/master/src/
  iori/repo.py



                                   .   .   .   .   .   .
バグ出し
request-pull
お待ちしてます。 :)



           .   .   .   .   .   .
宣伝その2




        .   .   .   .   .   .
最近の CouchDB



  ▶   (かなり前に)CouchDB 1.2.0 がリリース
  ▶   (Wheezy フリーズ直前に) Debian の CouchDB が 1.2.0
      にアップデート
  ▶   (先週くらい?)Cloudant がロンドンオリンピックのシス
      テムで採用されたというニュースリリース
  ▶   (一昨日)Couchbase T シャツが余ってしょうがないから
      どうしよう?という@yssk22 からの相談




                                .   .   .   .   .   .

More Related Content

What's hot

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Takuto Matsuu
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoShoot Morii
 
fdコマンドを使おう
fdコマンドを使おうfdコマンドを使おう
fdコマンドを使おうHideaki Miyake
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxgion_XY
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方Yosuke Furukawa
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptKazufumi Ohkawa
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Yasutaka Kawamoto
 
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)Shinichi Hirauchi
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with PoudriereYuichiro Naito
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 

What's hot (20)

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内
 
Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
Gentoo Linuxの紹介
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
fdコマンドを使おう
fdコマンドを使おうfdコマンドを使おう
fdコマンドを使おう
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linux
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 

Viewers also liked

Consultant[1]
Consultant[1]Consultant[1]
Consultant[1]Wallage
 
Debianでできる簡単監視システム
Debianでできる簡単監視システムDebianでできる簡単監視システム
Debianでできる簡単監視システムKouhei Maeda
 
Marketeurs, alimentez le #SocialSelling Part 1 - Role du Marketing
Marketeurs, alimentez le #SocialSelling Part 1 - Role du MarketingMarketeurs, alimentez le #SocialSelling Part 1 - Role du Marketing
Marketeurs, alimentez le #SocialSelling Part 1 - Role du MarketingClub Alliances
 
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...Club Alliances
 
Inbound Marketing - Les Mains dans le Digital #1 - Loic Simon
Inbound Marketing -  Les Mains dans le Digital #1 - Loic SimonInbound Marketing -  Les Mains dans le Digital #1 - Loic Simon
Inbound Marketing - Les Mains dans le Digital #1 - Loic SimonClub Alliances
 
Veille et curation - Les Détachés du Numérique #1 - Loic Simon
Veille et curation - Les Détachés du Numérique #1 - Loic SimonVeille et curation - Les Détachés du Numérique #1 - Loic Simon
Veille et curation - Les Détachés du Numérique #1 - Loic SimonClub Alliances
 

Viewers also liked (8)

Consultant[1]
Consultant[1]Consultant[1]
Consultant[1]
 
Debianでできる簡単監視システム
Debianでできる簡単監視システムDebianでできる簡単監視システム
Debianでできる簡単監視システム
 
Forum 9 fev_2011_dsi
Forum 9 fev_2011_dsiForum 9 fev_2011_dsi
Forum 9 fev_2011_dsi
 
Aquaponics for Middle East
Aquaponics for Middle EastAquaponics for Middle East
Aquaponics for Middle East
 
Marketeurs, alimentez le #SocialSelling Part 1 - Role du Marketing
Marketeurs, alimentez le #SocialSelling Part 1 - Role du MarketingMarketeurs, alimentez le #SocialSelling Part 1 - Role du Marketing
Marketeurs, alimentez le #SocialSelling Part 1 - Role du Marketing
 
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...
2011.10.19 - Cloud Partner Day - Annonces Cloud IBM pour Partenaires - Robin ...
 
Inbound Marketing - Les Mains dans le Digital #1 - Loic Simon
Inbound Marketing -  Les Mains dans le Digital #1 - Loic SimonInbound Marketing -  Les Mains dans le Digital #1 - Loic Simon
Inbound Marketing - Les Mains dans le Digital #1 - Loic Simon
 
Veille et curation - Les Détachés du Numérique #1 - Loic Simon
Veille et curation - Les Détachés du Numérique #1 - Loic SimonVeille et curation - Les Détachés du Numérique #1 - Loic Simon
Veille et curation - Les Détachés du Numérique #1 - Loic Simon
 

Similar to Git pyfes201207-presen

Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 
Wiki設置するならgitit!
Wiki設置するならgitit!Wiki設置するならgitit!
Wiki設置するならgitit!Kiwamu Okabe
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る GitYouhei Nitta
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxKouhei Maeda
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdfAyachika Kitazaki
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版VirtualTech Japan Inc./Begi.net Inc.
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみた底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみたYudai Fujita
 

Similar to Git pyfes201207-presen (20)

Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
Git地図
Git地図Git地図
Git地図
 
Wiki設置するならgitit!
Wiki設置するならgitit!Wiki設置するならgitit!
Wiki設置するならgitit!
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
Git 勉強会
Git 勉強会Git 勉強会
Git 勉強会
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみた底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみた
 

More from Kouhei Maeda

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門Kouhei Maeda
 
僕の疑問に答えてください。
僕の疑問に答えてください。僕の疑問に答えてください。
僕の疑問に答えてください。Kouhei Maeda
 
Debian JP会長就任の挨拶
Debian JP会長就任の挨拶Debian JP会長就任の挨拶
Debian JP会長就任の挨拶Kouhei Maeda
 
Debianでできる簡単監視システム。
Debianでできる簡単監視システム。Debianでできる簡単監視システム。
Debianでできる簡単監視システム。Kouhei Maeda
 
CouchDB on Androidでスタンドアローンアプリ。
CouchDB on Androidでスタンドアローンアプリ。CouchDB on Androidでスタンドアローンアプリ。
CouchDB on Androidでスタンドアローンアプリ。Kouhei Maeda
 
あいぽん落としたと聞いたので!
あいぽん落としたと聞いたので!あいぽん落としたと聞いたので!
あいぽん落としたと聞いたので!Kouhei Maeda
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話Kouhei Maeda
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presenKouhei Maeda
 

More from Kouhei Maeda (9)

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門
 
僕の疑問に答えてください。
僕の疑問に答えてください。僕の疑問に答えてください。
僕の疑問に答えてください。
 
Debian JP会長就任の挨拶
Debian JP会長就任の挨拶Debian JP会長就任の挨拶
Debian JP会長就任の挨拶
 
Debianでできる簡単監視システム。
Debianでできる簡単監視システム。Debianでできる簡単監視システム。
Debianでできる簡単監視システム。
 
CouchDB on Androidでスタンドアローンアプリ。
CouchDB on Androidでスタンドアローンアプリ。CouchDB on Androidでスタンドアローンアプリ。
CouchDB on Androidでスタンドアローンアプリ。
 
あいぽん落としたと聞いたので!
あいぽん落としたと聞いたので!あいぽん落としたと聞いたので!
あいぽん落としたと聞いたので!
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
 

Recently uploaded

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (8)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Git pyfes201207-presen

  • 1. Python ではじめる Git。 まえだこうへい mkouhei@debian.or.jp a.k.a. mkouhei 2012 年 7 月 28 日 . . . . . .
  • 2. 自己紹介 まえだこうへい ▶ Debian JP Project Leader(2011, 2012) / CouchDB JP ▶ 勤務先:渋谷の会社 ▶ Python 関連の Debian パッケージのメンテナンスなど ▶ 職場で使用している OpenStack の構築・運用で必要な、 周辺ツールの開発、構築とか ▶ 執筆 ▶ Git によるバージョン管理 (オーム社) ▶ KVM 徹底入門 (翔泳社) ▶ ゆったリラックス! CouchDB があるところ (@IT) #5 ▶ 知って見るみる KVM(@IT) . . . . . .
  • 3. 宣伝 Git によるバージョン管理 http://ssl.ohmsha.co.jp/ cgi-bin/menu.cgi?ISBN=978-4-274-06864-5 . . . . . .
  • 5. いや待てよ…。 . . . . . .
  • 6. 私の pyfes に対するイメージ (偏見) ▶ 参加者の公用語は Python ▶ シェルや、シェルスクリプトを使っていたら、怒られる ▶ Git なにそれ?Mercurial だろ jk ▶ LaTeX なにそれ?Sphi(ry 怖いところに、のこのこ来てもうた…。 . . . . . .
  • 7. とりあえず、Python で Git を 使う方法をネタにしてみま した . . . . . .
  • 8. Python で Git を扱う方法 ▶ Git のコマンドを使う ▶ blueprint のように subprocess.Popen を使う方法1 ▶ gittools のように commands.getstatusoutput() を使う方 法2 ▶ Python 製の Git ツールを使う ▶ legit 3 ▶ GitPython 4 ▶ Dulwich 5 ▶ などなど。 1 https://github.com/devstructure/blueprint 2 https://github.com/farktronix/gittools 3 https://github.com/kennethreitz/legit 4 https://github.com/gitpython-developers/GitPython 5 http://www.samba.org/~jelmer/dulwich/ . . . . . .
  • 9. 今回は GitPython にしてみました。 選んだ理由は、 $ apt-cache search git python で、 ▶ 最初に目にとまったのが GitPython だった ▶API のドキュメントも充実していた とただそれだけです。 . . . . . .
  • 10. インストール $ sudo apt-get install python-git ちなみに、 ▶ Debian の Python パッケージングポリシーは、パッケー ジ名が’python-’ となります ▶ blockdiag シリーズも、’python-blockdiag’ のようになり ます . . . . . .
  • 11. GitPython の使い方 . . . . . .
  • 12. git init ローカルリポジトリ import git git_repo = git.Git(’/tmp/practice’) git_repo.init() ベアリポジトリ git_repo_bare = git.Git(’/tmp/practice-bare’) git_repo_bare.init(bare=True) . . . . . .
  • 13. git add git_cmd = git.cmd.Git(’/tmp/practice’) f = open(’/tmp/practice/hoge’, ’w’) f.write(’hoge’) f.close() git_cmd.add(’hoge’) . . . . . .
  • 14. git commit g_cmd.commit(m=’Add hoge’) . . . . . .
  • 17. working tree のクリア git_repo.active_branch.checkout() . . . . . .
  • 19. git rm git_cmd.rm(’hoge’) . . . . . .
  • 20. (リファレンス6見れば) 簡単ですね。 6 http: //packages.python.org/GitPython/0.3.2/reference.html . . . . . .
  • 21. 困るのは使い道。 ▶ 私は bash の代わりに python の interactive モードや ipython で生活しているわけではない、一般人 ▶ Git コマンドではなく、Python で Git を使うと言って も、アイデアがありません ▶ ありきたりなのは、Wiki とか Web アプリで Git リポジ トリを読み込むとか、それ何て GitLab とか Gitorious . . . . . .
  • 23. 名前は iori「庵」 ということで GitPython を使って作ってみました。 https://github.com/mkouhei/iori . . . . . .
  • 24. どの辺が GitPython? ▶ LXC ホストおよびコンテナを管理するためのリポジト リ ($HOME/.iori) ▶ LXC ホストを登録すると、ブランチを一つ作成 ▶ コンテナを作成すると、XML ファイルを保存して、git add/commit ▶ コンテナを削除すると、git rm/commit と先ほど説明したことをやっているだけですね。 https://github.com/mkouhei/iori/blob/master/src/ iori/repo.py . . . . . .
  • 26. 宣伝その2 . . . . . .
  • 27. 最近の CouchDB ▶ (かなり前に)CouchDB 1.2.0 がリリース ▶ (Wheezy フリーズ直前に) Debian の CouchDB が 1.2.0 にアップデート ▶ (先週くらい?)Cloudant がロンドンオリンピックのシス テムで採用されたというニュースリリース ▶ (一昨日)Couchbase T シャツが余ってしょうがないから どうしよう?という@yssk22 からの相談 . . . . . .