git-svn intro

2,786 views

Published on

git-svn intro

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

No Downloads
Views
Total views
2,786
On SlideShare
0
From Embeds
0
Number of Embeds
87
Actions
Shares
0
Downloads
34
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

git-svn intro

  1. 1. git-svn intro Kenichirou Oyama (k1LoW)
  2. 2. (self-introduce quot;k1LoWquot;) • type: – Programmer (PHPer) • Emacs Level: – Enjoy Emacs Lisp • Products: – cake.el – drill-instructor.el(鬼軍曹.el) – tokyotyrant_php – and more. • membership: – Fusic Co.,Ltd >> http://fusic.co.jp – codecheck.in >> http://trac.codecheck.in and 101000code / 3rdSTONE DistributedHoge 2
  3. 3. What is git-svn? DistributedHoge 3
  4. 4. What is git-svn? • GitリポジトリとSVNリポジトリ を同期するためのもの • GitとSVNの利点を享受すること ができる DistributedHoge 4
  5. 5. SVN • 基本は1つのリポジトリ • リポジトリからcheckoutしたワーキングコピーで作業 をする – ワーキングコピーはあくまで作業用 • →[edit]→commit→update→[edit]→ • 利点:リポジトリが1つなのでソースの作業履歴が1つに 集まる – きっちり集中管理しないといけないときに仕様上そうなってい るので何も考えなくてよい • 欠点:commitは1つしかないリポジトリにしかできない – commit権限を持たない人は作業履歴をそのSVN管理化では残す こと(commitすること)ができない→patch? DistributedHoge 5
  6. 6. SVN svnリポジトリ svn ci svn co svn up ワーキングコピー DistributedHoge 6
  7. 7. Git • 基本は分散した複数のリポジトリ • リポジトリからcloneしたリポジトリで作業をする – cloneされたリポジトリもcloneしたリポジトリもリポジトリ • →[edit]→commit→push→pull→[edit]→ • 利点:それぞれがリポジトリを持つのでそれぞれか作業 履歴を残す(commitする)ことができる – みんな平等。分散。 – ネットワークが切れていてもcommitできる。 • 欠点:(プロジェクトの性質によっては)どれがマスターのリポジ トリかわからなくなると困る – 運用ルールが大事。 DistributedHoge 7
  8. 8. Git git commit Gitリポジトリ git clone Gitリポジトリ git push git pull Gitリポジトリ DistributedHoge 8
  9. 9. SVNでのワークフロー ある開発者のかつての日常 DistributedHoge 9
  10. 10. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 10
  11. 11. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 11
  12. 12. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 12
  13. 13. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 13
  14. 14. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 14
  15. 15. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 15
  16. 16. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 16
  17. 17. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 17
  18. 18. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 18
  19. 19. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 19
  20. 20. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 20
  21. 21. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 21
  22. 22. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 22
  23. 23. githubでのワークフロー tokyotyrant_php開発日常 DistributedHoge 23
  24. 24. What is github? • http://github.com • Gitのプロジェクトホスティングサー ビス –CodeReposやcodecheck.inみたいなも の • Gitの分散性を利用したソーシャルな 側面があることが特徴 –分散リポジトリならでは –followとかwatchとか DistributedHoge 24
  25. 25. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 25
  26. 26. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 26
  27. 27. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 27
  28. 28. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 28
  29. 29. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 29
  30. 30. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 30
  31. 31. githubでのワークフロー 1. githubでリポジトリ作成 • trunk?branches?tags?なにそれ 2. githubのリモートリポジトリからclone • git clone git@github.com:k1LoW/tokyotyrant_php.git 3. テーマを決めてbranchを作成 • git branch rdb • git checkout rdb 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 31
  32. 32. githubでのワークフロー 8. いい感じになったのでローカルのマスターリポジト リにまとめてmerge • git checkout master • git merge –squash rdb • git commit 9. リモートリポジトリにpush • git push origin 10. バージョン的にいい感じなのでtagをつけとく • git tag 0.1 • git push –tags 0.1 11. ノリでbranchを作成 • git branch qry_bug • git checkout qry_bug DistributedHoge 32
  33. 33. githubでのワークフロー 8. いい感じになったのでローカルのマスターリポジト リにまとめてmerge • git checkout master • git merge –squash rdb • git commit 9. リモートリポジトリにpush • git push origin 10. バージョン的にいい感じなのでtagをつけとく • git tag 0.1 • git push –tags 0.1 11. ノリでbranchを作成 • git branch qry_bug • git checkout qry_bug DistributedHoge 33
  34. 34. githubでのワークフロー 8. いい感じになったのでローカルのマスターリポジト リにまとめてmerge • git checkout master • git merge –squash rdb • git commit 9. リモートリポジトリにpush • git push origin 10. バージョン的にいい感じなのでtagをつけとく • git tag 0.1 • git push –tags 0.1 11. ノリでbranchを作成 • git branch qry_bug • git checkout qry_bug DistributedHoge 34
  35. 35. githubでのワークフロー 8. いい感じになったのでローカルのマスターリポジト リにまとめてmerge • git checkout master • git merge –squash rdb • git commit 9. リモートリポジトリにpush • git push origin 10. バージョン的にいい感じなのでtagをつけとく • git tag 0.1 • git push –tags 0.1 11. ノリでbranchを作成 • git branch qry_bug • git checkout qry_bug DistributedHoge 35
  36. 36. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 – git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 36
  37. 37. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 – git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 37
  38. 38. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 1. git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 38
  39. 39. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 1. git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 39
  40. 40. git-svnでのワークフロー ある開発者の今の日常 DistributedHoge 40
  41. 41. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 41
  42. 42. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 42
  43. 43. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 43
  44. 44. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 44
  45. 45. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 45
  46. 46. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 46
  47. 47. git-svnでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからgit svn clone 3. テーマを決めてbranchを作成 • git branch calendar • git checkout calendar 4. 編集 5. git commit 6. 編集 7. git commit DistributedHoge 47
  48. 48. git-svnでのワークフロー 8. いい感じになったのでローカルのマスターリ ポジトリにまとめてmerge • git checkout master • git merge –squash calendar • git commit 9. svnリポジトリにdcommit • git svn dcommit 10. ノリでbranchを作成 • git branch bug_fix • git checkout bug_fix DistributedHoge 48
  49. 49. git-svnでのワークフロー 8. いい感じになったのでローカルのマスターリ ポジトリにまとめてmerge • git checkout master • git merge –squash calendar • git commit 9. svnリポジトリにdcommit • git svn dcommit 10. ノリでbranchを作成 • git branch bug_fix • git checkout bug_fix DistributedHoge 49
  50. 50. git-svnでのワークフロー 8. いい感じになったのでローカルのマスターリ ポジトリにまとめてmerge • git checkout master • git merge –squash calendar • git commit 9. svnリポジトリにdcommit • git svn dcommit 10. ノリでbranchを作成 • git branch bug_fix • git checkout bug_fix DistributedHoge 50
  51. 51. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 51
  52. 52. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 52
  53. 53. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 53
  54. 54. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 54
  55. 55. svnリポジトリでも Gitの恩恵を受けられる! DistributedHoge 55
  56. 56. svnリポジトリでの 集中管理もできる! DistributedHoge 56
  57. 57. git-svn svnリポジトリ git svn dcommit git svn rebase git commit Gitリポジトリ ワーキングコピー ここらへんがgit-svnだと思う DistributedHoge 57
  58. 58. git-svn introまとめ • 従来のsvnリポジトリ下でもGitの恩恵を受けられるgit- svnはすごい! – 正直Gitは万人が理解できるものではないらしい(Joelさんが 言ってた) • 自分もまだ・・・ – TortoiseSVNによるデザイナーへの貢献も大きいのでSVNから は離れにくい – でも便利なのでせめて自分の作業効率だけでも上げる • 今回のgit-svn紹介は導入部分だけなので、各自苦労し てみてください – ちなみに自分はgit-svn→Gitの順で触った – Gitは今後主流になるかもしれないのに触らないのは損 • githubも楽しいけどcodecheck.inも楽しいよ! DistributedHoge 58
  59. 59. ちなみに DistributedHoge 59
  60. 60. Gitを使っていて思ったこと • branch祭りは楽しい – テーマを決めたりしてガンガン切る – むしろ使い捨てくらいがちょうどいいと思っている • masterからいちいちmergeするくらいなら新しい branch • git checkoutのときに一気にソースコードが変 わる様は楽しい • git-svnというGitとSVNの橋渡しはあるけれど も、リポジトリの考え方は180度変えないとGit には慣れない – でも慣れたら楽しい • Web+DB Vol.50のGit特集は最強 DistributedHoge 60

×