Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every...
Transcript of Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every...
![Page 1: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/1.jpg)
Hack Your VCS In Ruby
http://www.delicious.com/rauros/amphttp://spkr8.com/t/5050
![Page 2: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/2.jpg)
Justin Love
http://JustinLove.name
@wondible
![Page 3: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/3.jpg)
I am a Mercurial
User
![Page 4: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/4.jpg)
THISshould not matter
![Page 5: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/5.jpg)
ManifestoWe want a piece of software that:
Is Free of religious devotion to one VCS1
![Page 6: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/6.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 7: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/7.jpg)
Overview
•What is Amp?
•Why Amp?
•What will Amp do for me?
•How do I use Amp?
•How can I help?
![Page 8: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/8.jpg)
My VCS Journey
![Page 9: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/9.jpg)
College1994-1998
VCS
![Page 10: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/10.jpg)
VSS
![Page 11: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/11.jpg)
SVN
![Page 12: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/12.jpg)
Interface
git hg
arcane clean2007
![Page 13: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/13.jpg)
Documentation
git hg
2007
![Page 14: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/14.jpg)
Portabillity
git hg
windows ✔
2007
![Page 15: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/15.jpg)
HG
![Page 16: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/16.jpg)
github launched: 2008
![Page 17: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/17.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 18: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/18.jpg)
What Is
![Page 19: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/19.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 20: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/20.jpg)
git
hg
?
.git
.hg
?
Interfaces Repositories
![Page 21: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/21.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 22: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/22.jpg)
hg .hg
Full Mercurial Suppport
![Page 23: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/23.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 24: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/24.jpg)
FlexibleCommandsWritten in
Ruby
![Page 25: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/25.jpg)
Michael ‘adgar’ Edgar
Ari ‘seydar’ Brown
![Page 26: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/26.jpg)
Ari Brown
“Back in the day, someone pointed out that Rails is slang for cocaine. So, obviously, we needed to name it after a drug.”
![Page 27: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/27.jpg)
RubyOn
Rails?
![Page 28: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/28.jpg)
Ari Brown
“We looked online for nicknames for meth, and chose amp because it was short (3 letters) and wasn't blatantly drug related.”
![Page 29: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/29.jpg)
How would you make
a VCS?
![Page 30: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/30.jpg)
$ amp clone hg amp
![Page 31: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/31.jpg)
Existing Implementation
in a
DynamicLanguage
![Page 32: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/32.jpg)
Mercurial (GPL)
Amp (GPL)
![Page 33: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/33.jpg)
Michael Edgar
“Long story short: Amp kicks ass and you should use it. It's still growing and not bug-free.
If you're on Ruby 1.9, beware of Unicode”
![Page 34: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/34.jpg)
JohnLocke
Amp 0.5.3
http://en.wikipedia.org/wiki/File:JohnLocke.png
![Page 35: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/35.jpg)
![Page 36: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/36.jpg)
changeset: 661:7dbef9c17c2euser: seydardate: Sun Aug 08 2010summary: updated bug 24's...
![Page 37: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/37.jpg)
$ amp pull git$ amp merge
![Page 38: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/38.jpg)
changeset: 662:c6fb001fb520user: Justin Love date: Tue Aug 17 2010summary: use ruby format...
![Page 39: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/39.jpg)
RubyConfCFP Close2010-08-30
![Page 40: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/40.jpg)
A funny thing happened on the way to RubyConf...
![Page 41: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/41.jpg)
changeset: 661:7dbef9c17c2euser: seydardate: Sun Aug 08 2010summary: updated bug 24's...
![Page 43: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/43.jpg)
David A. Black2010-09-20
“We're happy to let you know that your proposal, "AMP: Cross-repo version control in Ruby.", has been selected for inclusion in the program.”
![Page 44: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/44.jpg)
changeset: 661:7dbef9c17c2euser: seydardate: Sun Aug 08 2010summary: updated bug 24's...
![Page 45: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/45.jpg)
amp-redux?
![Page 46: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/46.jpg)
$ amp pull gitrequesting all changesadding changesetsadding manifestsadding file changestransaction abort!interrupted!
![Page 47: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/47.jpg)
Ari Brown
“FUN FACT!
Getting git to play right is much more complicated than whatever that law is that says everything is super complicated.”
![Page 48: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/48.jpg)
amp
hg
![Page 49: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/49.jpg)
amp
hg
git
![Page 50: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/50.jpg)
Ari Brown
“HG focuses on the imp-lementation (filelogs, change-logs, indexes/indices), and we wanted to focus on changesets, repositories, and stuff like that”
![Page 51: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/51.jpg)
Ari Brown
“It's like an old car that needs to get scrapped. It sucks, but holy shit man, it got us hundreds of thousands of miles.”
![Page 52: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/52.jpg)
ManifestoWe want a piece of software that:
We want to discover where the limits are on Ruby for use in large applications. Where is the language slow? Where is it fast? What techniques are effective?
6
![Page 53: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/53.jpg)
Fred BrooksThe Mythical Man-Month
“plan to throw one away; you will, anyhow.”
![Page 54: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/54.jpg)
Redux
![Page 55: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/55.jpg)
Not backed by code
http://claudiamarchan.blogspot.com/2008/08/little-unicorn.html
![Page 56: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/56.jpg)
Michael Edgar
“I'm learning a shitton about software design and engineering which will pay back Amp in spades.”
![Page 57: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/57.jpg)
Interface
Implementation
![Page 58: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/58.jpg)
Modular
![Page 59: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/59.jpg)
AmpFront
![Page 60: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/60.jpg)
AmpCore
![Page 61: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/61.jpg)
Amp-hgAmp-git
![Page 62: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/62.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 63: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/63.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 64: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/64.jpg)
Why
![Page 65: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/65.jpg)
git
C
![Page 66: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/66.jpg)
Mercurial
Python
![Page 67: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/67.jpg)
Bazaar
Python
![Page 68: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/68.jpg)
Darcs
Haskell
![Page 69: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/69.jpg)
Monotone
C++
![Page 70: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/70.jpg)
SVN
C
![Page 71: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/71.jpg)
SVK
Perl
![Page 72: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/72.jpg)
C/++ 3Python 2
Perl 1Haskell 1Ruby?
![Page 73: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/73.jpg)
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
-F Ruby
(Find)
![Page 74: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/74.jpg)
ManifestoWe want a piece of software that:
5 We want to prove ruby is viable for large-scale applications, not just web frameworks. Can you think of any non-trivial actual applications written in ruby?
![Page 75: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/75.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 76: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/76.jpg)
Do wereally need
anotherVCS?
![Page 77: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/77.jpg)
RubyRuby Logo © 2006, Yukihiro Matsumoto
![Page 78: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/78.jpg)
![Page 79: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/79.jpg)
![Page 80: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/80.jpg)
Rubinius
![Page 81: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/81.jpg)
![Page 82: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/82.jpg)
Sinatra
![Page 83: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/83.jpg)
merb
![Page 84: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/84.jpg)
3
![Page 85: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/85.jpg)
![Page 86: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/86.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 87: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/87.jpg)
VSSSVN
Mercurial
![Page 88: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/88.jpg)
CVSSVNGit
![Page 89: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/89.jpg)
1?
![Page 90: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/90.jpg)
2?
![Page 91: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/91.jpg)
3?
![Page 92: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/92.jpg)
> 3?
![Page 93: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/93.jpg)
There Will Be a
Next Thing
![Page 94: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/94.jpg)
David Heinemeier Hanssonhttp://news.oreilly.com/2008/08/interview-with-david-heinemeie.html
“If nobody is hating it, you're typically not doing very interesting work."
![Page 95: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/95.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 96: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/96.jpg)
How will
help me?
![Page 97: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/97.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 98: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/98.jpg)
Mercurial Repos
![Page 99: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/99.jpg)
![Page 100: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/100.jpg)
$ amp
![Page 101: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/101.jpg)
require ‘amp’
![Page 102: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/102.jpg)
git
hg
?
.git
.hg
?
![Page 103: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/103.jpg)
git .git
.hg
?
![Page 104: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/104.jpg)
hg
.git
.hg
![Page 105: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/105.jpg)
hg
.git
.hg
n2
![Page 106: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/106.jpg)
git
hg
?
.git
.hg
?
n+m
![Page 107: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/107.jpg)
ActiveRecord
Rails
?
MySQL
Postgres
?
![Page 108: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/108.jpg)
?
AWS
BlueBox
?
![Page 109: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/109.jpg)
git
.git
.hg
?
![Page 113: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/113.jpg)
Inkscape
svn co https://inkscape.svn.sour...
![Page 114: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/114.jpg)
ManifestoWe want a piece of software that:
2 Lets us customize how we interact with it. If we want git's commands because I used it the longest, let us use them with a mercurial repo.
![Page 115: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/115.jpg)
git
hg
?
.git
![Page 116: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/116.jpg)
Mixand
Match
![Page 117: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/117.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 118: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/118.jpg)
• railties
• actionmailer
• actionpack
• activemodel
• activerecord
• activeresource
• activesupport
Rails 3
![Page 119: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/119.jpg)
Redux
• amp-front
• amp-core
• amp-hg
• amp-git
![Page 120: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/120.jpg)
git
hg
?
.git
.hg
![Page 121: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/121.jpg)
git
hg
.git
.hg
?
![Page 122: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/122.jpg)
ManifestoWe want a piece of software that:
3 We want the extension we wrote for HG to work on my github project too. Because they're both DVCS, damnit.
![Page 123: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/123.jpg)
git
hg
?
.git
.hg
?extensions
![Page 124: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/124.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 125: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/125.jpg)
How doI use
![Page 126: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/126.jpg)
$ gem install amp
![Page 127: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/127.jpg)
$ amp help$ amp add$ amp commit$ amp push
![Page 128: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/128.jpg)
ManifestoWe want a piece of software that:
4 We want to be able to directly modify the commands they give us. Git's remove command is `git rm`. It should be dead simple to make `git remove` map directly to that, and we mean less than 1 minute of thought/work.
![Page 129: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/129.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 130: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/130.jpg)
ampfile.rb
![Page 131: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/131.jpg)
Michael Edgar
“One huge feature is open commands: the same syntax for creating a command will re-open an existing one, just like classes in Ruby.”
![Page 132: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/132.jpg)
DANGERLive Coding
![Page 133: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/133.jpg)
command :log do |c| c.workflow :hg c.desc "Prints the commit history." c.opt :verbose, "Verbose output", {:short => "-v"} c.opt :limit, "Limit how many revisions to show", {:short => "-l", :type => :integer, :default => -1} c.opt :template, "Which template to use while printing", {:short => "-t", :type => :string, :default => "default"} c.opt :no_output, "Doesn't print output (useful for benchmarking)" c.on_run do |options, args| repo = options[:repository] limit = options[:limit] limit = repo.size if limit == -1
start = repo.size - 1 stop = start - limit + 1
options.merge! :template_type => :log start.downto stop do |x| puts repo[x].to_templated_s(options) unless options[:no_output] end endend
![Page 134: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/134.jpg)
command :log do |c|
![Page 135: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/135.jpg)
c.workflow :hg
![Page 136: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/136.jpg)
c.desc "Prints the commit history."
![Page 137: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/137.jpg)
c.opt :verbose, "Verbose output", {:short => "-v"}c.opt :limit, "Limit how many revisions to show", {:short => "-l", :type => :integer, :default => -1}c.opt :template, "Which template to use while printing", {:short => "-t", :type => :string, :default => "default"}c.opt :no_output, "Doesn't print output (useful for benchmarking)"
![Page 138: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/138.jpg)
c.on_run do |options, args| repo = options[:repository] limit = options[:limit] limit = repo.size if limit == -1
start = repo.size - 1 stop = start - limit + 1
options.merge! :template_type => :log start.downto stop do |x| puts repo[x].to_templated_s(options) unless options[:no_output] end end
![Page 139: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/139.jpg)
c.on_run do |options, args| repo = options[:repository] limit = options[:limit] limit = repo.size if limit == -1
start = repo.size - 1 stop = start - limit + 1
options.merge! :template_type => :log start.downto stop do |x| puts repo[x].to_templated_s(options) unless options[:no_output] end end
![Page 140: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/140.jpg)
c.on_run do |options, args| repo = options[:repository] limit = options[:limit] limit = repo.size if limit == -1
start = repo.size - 1 stop = start - limit + 1
options.merge! :template_type => :log start.downto stop do |x| puts repo[x].to_templated_s(options) unless options[:no_output] end end
![Page 141: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/141.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 142: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/142.jpg)
User Command:Billing Time
![Page 143: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/143.jpg)
$ amp billing --limit 302010-09-21 0.252010-09-02 2.222010-09-01 0.252010-08-31 4.737.46
![Page 144: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/144.jpg)
DANGERLive Coding
![Page 145: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/145.jpg)
command :billing do |c| c.desc "Estimate time spent" c.opt :limit, "Limit how many revisions to show", {:short => "-l", :type => :integer} c.opt :rate, "Billing Rate", {:type => :integer} c.on_run do |options, args| # boilerplate repo = options[:repository] limit = options[:limit] || repo.size rate = options[:rate] || 1 last = repo.size - 1 first = last - limit + 1
# calculate time hours = repo.to_a[first,last].each_cons(2).map(&BillingTime.method(:new))
# daily summary days = Hash.new(0) hours.each {|b| days[b.date] += b.billable} puts days.keys.sort.reverse.map {|k| "#{k} #{days[k]}"}
# total bills = hours.map {|b| b.billable * rate} puts bills.inject {|a,b| a + b} endend
![Page 146: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/146.jpg)
command :billing do |c| c.desc "Estimate time spent"
![Page 147: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/147.jpg)
...archive Create...billing Estimate...bisect subdivision......
![Page 148: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/148.jpg)
c.opt :limit,"Limit how many revisions to show", {:short => "-l", :type => :integer}c.opt :rate, "Billing Rate", {:type => :integer}
![Page 149: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/149.jpg)
$ amp help billingEstimate time spent --limit, -l <i>: Limit how many revisions to show --rate, -r <i>: Billing Rate --help, -h: Show this message
![Page 150: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/150.jpg)
c.on_run do |options, args| # boilerplate repo = options[:repository] limit = options[:limit] || repo.size rate = options[:rate] || 1 last = repo.size - 1 first = last - limit + 1
![Page 151: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/151.jpg)
# calculate timehours = repo[first..last]. each_cons(2). map(&BillingTime.method(:new))
![Page 152: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/152.jpg)
# daily summarydays = Hash.new(0)hours.each {|b| days[b.date] += b.billable}puts days.keys.sort.reverse. map {|k| "#{k} #{days[k]}"}
![Page 153: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/153.jpg)
# totalbills = hours.map {|b| b.billable * rate}puts bills.inject {|a,b| a + b}
![Page 154: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/154.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 155: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/155.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 156: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/156.jpg)
How canI help
![Page 157: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/157.jpg)
ManifestoWe want a piece of software that:
7 We want to be an example of proper documentation.
![Page 158: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/158.jpg)
![Page 159: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/159.jpg)
MANIFESTO
![Page 160: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/160.jpg)
STYLE
![Page 161: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/161.jpg)
TODO
![Page 162: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/162.jpg)
Amp-front
![Page 163: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/163.jpg)
OptionParsing
![Page 164: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/164.jpg)
Help
![Page 165: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/165.jpg)
Trollop
![Page 166: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/166.jpg)
command==
class
![Page 167: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/167.jpg)
Plugins
![Page 168: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/168.jpg)
Amp-core
![Page 169: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/169.jpg)
VersionControl
![Page 170: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/170.jpg)
GenericRepository
![Page 171: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/171.jpg)
Amp-hg
![Page 172: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/172.jpg)
GPL
![Page 173: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/173.jpg)
Amp-git
![Page 174: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/174.jpg)
MultipleBackends
?
![Page 175: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/175.jpg)
Command line
wrapper
![Page 176: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/176.jpg)
Michael Edgar
“[...] parsing the output of various commands turned into hell, because almost none of the output is standardized.”
![Page 177: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/177.jpg)
Amp-grit?
![Page 178: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/178.jpg)
Pure Ruby
![Page 179: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/179.jpg)
Amp-ribbit?libgit2
![Page 180: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/180.jpg)
Justin,Take aDrink
http://www.flickr.com/photos/mtip/4904103330/
![Page 181: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/181.jpg)
Review
![Page 182: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/182.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 183: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/183.jpg)
$ gem install amp
![Page 184: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/184.jpg)
ManifestoWe want a piece of software that:
Is Free of religious devotion to one VCS1
![Page 185: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/185.jpg)
ManifestoWe want a piece of software that:
2 Lets us customize how we interact with it. If we want git's commands because I used it the longest, let us use them with a mercurial repo.
![Page 186: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/186.jpg)
ManifestoWe want a piece of software that:
3 We want the extension we wrote for HG to work on my github project too. Because they're both DVCS, damnit.
![Page 187: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/187.jpg)
ManifestoWe want a piece of software that:
4 We want to be able to directly modify the commands they give us. Git's remove command is `git rm`. It should be dead simple to make `git remove` map directly to that, and we mean less than 1 minute of thought/work.
![Page 188: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/188.jpg)
ManifestoWe want a piece of software that:
5 We want to prove ruby is viable for large-scale applications, not just web frameworks. Can you think of any non-trivial actual applications written in ruby?
![Page 189: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/189.jpg)
ManifestoWe want a piece of software that:
We want to discover where the limits are on Ruby for use in large applications. Where is the language slow? Where is it fast? What techniques are effective?
6
![Page 190: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/190.jpg)
ManifestoWe want a piece of software that:
7 We want to be an example of proper documentation.
![Page 191: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/191.jpg)
IsA familiar, customizable
interface to every version control repository.
![Page 192: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/192.jpg)
These are our goals
![Page 193: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/193.jpg)
Ruby
Ruby Logo © 2006, Yukihiro Matsumoto
These are our tools RSpec
![Page 194: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/194.jpg)
Now is the
time.
![Page 195: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/195.jpg)
![Page 196: Hack Your VCS In Ruby · Full Mercurial Suppport. Is A familiar, customizable interface to every version control repository. Flexible Commands Written in Ruby. Michael ‘adgar’](https://reader033.fdocuments.in/reader033/viewer/2022060603/60580eb3f20dd90365150c69/html5/thumbnails/196.jpg)
Justin Love
http://JustinLove.name
@wondible
http://www.delicious.com/rauros/amphttp://spkr8.com/t/5050