Git pyfes201207-presen

1,424 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,424
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Git pyfes201207-presen

  1. 1. Python ではじめる Git。まえだこうへい mkouhei@debian.or.jp a.k.a. mkouhei 2012 年 7 月 28 日 . . . . . .
  2. 2. 自己紹介 まえだこうへい ▶ Debian JP Project Leader(2011, 2012) / CouchDB JP ▶ 勤務先:渋谷の会社 ▶ Python 関連の Debian パッケージのメンテナンスなど ▶ 職場で使用している OpenStack の構築・運用で必要な、 周辺ツールの開発、構築とか ▶ 執筆 ▶ Git によるバージョン管理 (オーム社) ▶ KVM 徹底入門 (翔泳社) ▶ ゆったリラックス! CouchDB があるところ (@IT) #5 ▶ 知って見るみる KVM(@IT) . . . . . .
  3. 3. 宣伝 Git によるバージョン管理 http://ssl.ohmsha.co.jp/ cgi-bin/menu.cgi?ISBN=978-4-274-06864-5 . . . . . .
  4. 4. ここにいる皆さんはきっとGit は日常の道具ですよね… . . . . . .
  5. 5. いや待てよ…。 . . . . . .
  6. 6. 私の pyfes に対するイメージ (偏見) ▶ 参加者の公用語は Python ▶ シェルや、シェルスクリプトを使っていたら、怒られる ▶ Git なにそれ?Mercurial だろ jk ▶ LaTeX なにそれ?Sphi(ry 怖いところに、のこのこ来てもうた…。 . . . . . .
  7. 7. とりあえず、Python で Git を使う方法をネタにしてみました . . . . . .
  8. 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. 9. 今回は GitPython にしてみました。 選んだ理由は、 $ apt-cache search git python で、 ▶ 最初に目にとまったのが GitPython だった ▶API のドキュメントも充実していた とただそれだけです。 . . . . . .
  10. 10. インストール $ sudo apt-get install python-git ちなみに、 ▶ Debian の Python パッケージングポリシーは、パッケー ジ名が’python-’ となります ▶ blockdiag シリーズも、’python-blockdiag’ のようになり ます . . . . . .
  11. 11. GitPython の使い方 . . . . . .
  12. 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. 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. 14. git commit g_cmd.commit(m=’Add hoge’) . . . . . .
  15. 15. ブランチの作成 git_repo.create_head(’newbranch’) . . . . . .
  16. 16. ブランチのチェックアウト git_cmd.checkout(’newbranch’) . . . . . .
  17. 17. working tree のクリア git_repo.active_branch.checkout() . . . . . .
  18. 18. ブランチの一覧取得 git_repo.branches . . . . . .
  19. 19. git rm git_cmd.rm(’hoge’) . . . . . .
  20. 20. (リファレンス6見れば)簡単ですね。 6 http://packages.python.org/GitPython/0.3.2/reference.html . . . . . .
  21. 21. 困るのは使い道。 ▶ 私は bash の代わりに python の interactive モードや ipython で生活しているわけではない、一般人 ▶ Git コマンドではなく、Python で Git を使うと言って も、アイデアがありません ▶ ありきたりなのは、Wiki とか Web アプリで Git リポジ トリを読み込むとか、それ何て GitLab とか Gitorious . . . . . .
  22. 22. そんなときに、(一昨日の)「CloudFoundry 輪読会でのLXC の話をしてよ」by@yssk22 . . . . . .
  23. 23. 名前は iori「庵」 ということで GitPython を使って作ってみました。 https://github.com/mkouhei/iori . . . . . .
  24. 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. 25. バグ出しrequest-pullお待ちしてます。 :) . . . . . .
  26. 26. 宣伝その2 . . . . . .
  27. 27. 最近の CouchDB ▶ (かなり前に)CouchDB 1.2.0 がリリース ▶ (Wheezy フリーズ直前に) Debian の CouchDB が 1.2.0 にアップデート ▶ (先週くらい?)Cloudant がロンドンオリンピックのシス テムで採用されたというニュースリリース ▶ (一昨日)Couchbase T シャツが余ってしょうがないから どうしよう?という@yssk22 からの相談 . . . . . .

×