Your SlideShare is downloading. ×
0
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
git-svn intro
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

git-svn intro

2,499

Published on

git-svn intro

git-svn intro

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

No Downloads
Views
Total Views
2,499
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
33
Comments
0
Likes
3
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. git-svn intro Kenichirou Oyama (k1LoW)
  • 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. What is git-svn? DistributedHoge 3
  • 4. What is git-svn? • GitリポジトリとSVNリポジトリ を同期するためのもの • GitとSVNの利点を享受すること ができる DistributedHoge 4
  • 5. SVN • 基本は1つのリポジトリ • リポジトリからcheckoutしたワーキングコピーで作業 をする – ワーキングコピーはあくまで作業用 • →[edit]→commit→update→[edit]→ • 利点:リポジトリが1つなのでソースの作業履歴が1つに 集まる – きっちり集中管理しないといけないときに仕様上そうなってい るので何も考えなくてよい • 欠点:commitは1つしかないリポジトリにしかできない – commit権限を持たない人は作業履歴をそのSVN管理化では残す こと(commitすること)ができない→patch? DistributedHoge 5
  • 6. SVN svnリポジトリ svn ci svn co svn up ワーキングコピー DistributedHoge 6
  • 7. Git • 基本は分散した複数のリポジトリ • リポジトリからcloneしたリポジトリで作業をする – cloneされたリポジトリもcloneしたリポジトリもリポジトリ • →[edit]→commit→push→pull→[edit]→ • 利点:それぞれがリポジトリを持つのでそれぞれか作業 履歴を残す(commitする)ことができる – みんな平等。分散。 – ネットワークが切れていてもcommitできる。 • 欠点:(プロジェクトの性質によっては)どれがマスターのリポジ トリかわからなくなると困る – 運用ルールが大事。 DistributedHoge 7
  • 8. Git git commit Gitリポジトリ git clone Gitリポジトリ git push git pull Gitリポジトリ DistributedHoge 8
  • 9. SVNでのワークフロー ある開発者のかつての日常 DistributedHoge 9
  • 10. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 10
  • 11. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 11
  • 12. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 12
  • 13. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 13
  • 14. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 14
  • 15. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 15
  • 16. SVNでのワークフロー 1. ある開発プロジェクトに参加することになっ たのでsvnリポジトリを作成→メンバーに知 らせる • trunkとbranchesとtagsはディレクトリ分けして おく 2. svnリポジトリからcheckout 3. 編集 4. svn up 5. svn ci 6. 編集 7. svn up DistributedHoge 16
  • 17. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 17
  • 18. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 18
  • 19. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 19
  • 20. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 20
  • 21. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 21
  • 22. SVNでのワークフロー 8. svn ci 9. なんかバージョン的に残しておく必要があり そうだからtagsにフォルダを作成してファイ ルをコピー 10. svn ci 11. commit頻度が細かすぎてコミットログを汚 染する 12. commit頻度を下げてまとめていたら、動かな くなって仕方なくリビジョン戻そうにもネッ トワークの調子が悪くて作業停止。 13. branchつくってtrunkにmerge?怖いからやら ない。 DistributedHoge 22
  • 23. githubでのワークフロー tokyotyrant_php開発日常 DistributedHoge 23
  • 24. What is github? • http://github.com • Gitのプロジェクトホスティングサー ビス –CodeReposやcodecheck.inみたいなも の • Gitの分散性を利用したソーシャルな 側面があることが特徴 –分散リポジトリならでは –followとかwatchとか DistributedHoge 24
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 – git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 36
  • 37. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 – git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 37
  • 38. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 1. git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 38
  • 39. githubでのワークフロー 12. commit頻度がさらに細かくなる。 13. なんか動かなくなって仕方なく戻す。という ことでbranch自体を捨てる。 1. git checkout master 14. ネットワークの調子が悪いらしい。気にせず commitを続ける。 15. branchつくってmasterにマージ?Gitの基本。 DistributedHoge 39
  • 40. git-svnでのワークフロー ある開発者の今の日常 DistributedHoge 40
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 51
  • 52. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 52
  • 53. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 53
  • 54. git-svnでのワークフロー 11. commit頻度がさらに細かくなる。 12. なんか動かなくなって仕方なく戻す。 ということでbranch自体を捨てる。 • git checkout master 13. ネットワークの調子が悪いらしい。気 にせずcommitを続ける。 14. branchつくってmasterにマージ?git- svnでも基本。 DistributedHoge 54
  • 55. svnリポジトリでも Gitの恩恵を受けられる! DistributedHoge 55
  • 56. svnリポジトリでの 集中管理もできる! DistributedHoge 56
  • 57. git-svn svnリポジトリ git svn dcommit git svn rebase git commit Gitリポジトリ ワーキングコピー ここらへんがgit-svnだと思う DistributedHoge 57
  • 58. git-svn introまとめ • 従来のsvnリポジトリ下でもGitの恩恵を受けられるgit- svnはすごい! – 正直Gitは万人が理解できるものではないらしい(Joelさんが 言ってた) • 自分もまだ・・・ – TortoiseSVNによるデザイナーへの貢献も大きいのでSVNから は離れにくい – でも便利なのでせめて自分の作業効率だけでも上げる • 今回のgit-svn紹介は導入部分だけなので、各自苦労し てみてください – ちなみに自分はgit-svn→Gitの順で触った – Gitは今後主流になるかもしれないのに触らないのは損 • githubも楽しいけどcodecheck.inも楽しいよ! DistributedHoge 58
  • 59. ちなみに DistributedHoge 59
  • 60. Gitを使っていて思ったこと • branch祭りは楽しい – テーマを決めたりしてガンガン切る – むしろ使い捨てくらいがちょうどいいと思っている • masterからいちいちmergeするくらいなら新しい branch • git checkoutのときに一気にソースコードが変 わる様は楽しい • git-svnというGitとSVNの橋渡しはあるけれど も、リポジトリの考え方は180度変えないとGit には慣れない – でも慣れたら楽しい • Web+DB Vol.50のGit特集は最強 DistributedHoge 60

×