Updated MSpec source to 46e80081.
[rbx.git] / rakelib / git.rake
blobcb3df20076057b0260f62103af16570a39e65fd4
1 require 'readline'
3 namespace :git do
5   task :fixup do
6     `git config submodule.mspec.url`
7     if $?.exitstatus == 0
8       `git config --remove-section submodule.mspec`
9     end
11     `git config submodule.spec/frozen.url`
12     if $?.exitstatus == 0
13       `git config --remove-section submodule.spec/frozen`
14     end
15   end
17   desc "Executed post update. Lets the new Rakefile perform any fixups"
18   task :post_update do
19     last_commit = ENV['LAST']
21     Rake::Task['git:fixup'].invoke
22   end
24   desc "Switch to the commiter URL"
25   task :committer do
26     sh "git config remote.origin.url git@git.rubini.us:code"
27     puts "\nYou're now accessing rubinius via the committer URL."
28   end
30   desc "Switch to the anonymous URL"
31   task :anon do
32     sh "git config remote.origin.url git://git.rubini.us/code"
33     puts "\nYou're now accessing rubinius via the anonymous URL."
34   end
36   desc "Show the current status of the checkout"
37   task :status do
38     puts "top-level:"
39     puts
40     system "git status"
41     puts
42     puts "spec/ruby:"
43     puts
44     system "(cd spec/ruby; git status)"
45   end
47   desc "Create a new topic branch"
48   task :topic do
49     total = `git branch`.scan("quick").size
50     if total == 0
51       default = "quick"
52     else
53       default = "quick#{total + 1}"
54     end
55     name = Readline.readline "Topic name (default #{default}): "
56     if name.strip.empty?
57       name = default
58     end
59     sh "git checkout -b #{name}"
60   end
62   desc "Push all changes to the rubinius repository"
63   task :push => :update do
64     git_push
65   end
67   desc "Pull new commits from the rubinius repository"
68   task :update => :fixup do
69     cur = `git rev-parse HEAD`.strip
70     git_update
71     sh "rake git:post_update LAST=#{cur}"
72   end
74   task :pull => :update
76   desc "Make patches upto current"
77   task :make_patches do
78     sh "git format-patch HEAD^"
79   end
81   desc "Pull, build, spec, push"
82   task :safe_push => %w[git:pull build spec git:push]
84   desc "Pull, build, spec:full, push (very slow)"
85   task :really_safe_push => %w[git:pull build spec:full git:push]
86 end