Git pyfes201207-presen

  • 942 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
942
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 . . . . . .
  • 4. ここにいる皆さんはきっとGit は日常の道具ですよね… . . . . . .
  • 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’) . . . . . .
  • 15. ブランチの作成 git_repo.create_head(’newbranch’) . . . . . .
  • 16. ブランチのチェックアウト git_cmd.checkout(’newbranch’) . . . . . .
  • 17. working tree のクリア git_repo.active_branch.checkout() . . . . . .
  • 18. ブランチの一覧取得 git_repo.branches . . . . . .
  • 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 . . . . . .
  • 22. そんなときに、(一昨日の)「CloudFoundry 輪読会でのLXC の話をしてよ」by@yssk22 . . . . . .
  • 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 . . . . . .
  • 25. バグ出しrequest-pullお待ちしてます。 :) . . . . . .
  • 26. 宣伝その2 . . . . . .
  • 27. 最近の CouchDB ▶ (かなり前に)CouchDB 1.2.0 がリリース ▶ (Wheezy フリーズ直前に) Debian の CouchDB が 1.2.0 にアップデート ▶ (先週くらい?)Cloudant がロンドンオリンピックのシス テムで採用されたというニュースリリース ▶ (一昨日)Couchbase T シャツが余ってしょうがないから どうしよう?という@yssk22 からの相談 . . . . . .