0
+desc "This is just here for the other tasks and isn't intended for your use"
0
+ `git-branch | grep \"*\"`.strip[(2..-1)]
0
+ `git-branch`.to_a.map { |b| b[(2..-1)].chomp }
0
+ (not ($?.exitstatus == 128))
0
+ `git-diff-files --quiet`
0
+ if ($?.exitstatus == 1) then
0
+ clear = (`git-stash list`.scan("\n").size == 0)
0
+ puts("* Saving changes...")
0
+ yield rescue puts("* Encountered an error, backing out...")
0
+ puts("* Applying changes...")
0
+ `git-stash clear` if clear
0
+ sh("git#{"-svn" if git_svn?} fetch")
0
+ def git_rebase(what = nil)
0
+ sh("git-rebase git-svn #{what}")
0
+ sh("git-rebase origin/master #{what}")
0
+ git_svn? ? (sh("git-svn dcommit")) : (sh("git-push"))
0
+ `git-branch -a` =~ /^\s*git-svn/
0
+ ARGV.inject([]) do |argv, arg|
0
+ if (argv.last and argv.last =~ /=$/) then
0
+ def correct_env_from_argv
0
+ argv.grep(/^[A-Z]+=/).each { |kv| ENV.send(:[]=, *kv.split("=", 2)) }
0
+desc 'Pull new commits from the repository'
0
+task 'git:update' => [ 'git:helpers' ] do
0
+ if (branch == "master") then
0
+ puts("* Switching back to master...")
0
+ puts("* Pulling in new commits...")
0
+ puts("* Porting changes into #{branch}...")
0
+ `git-checkout #{branch}`
0
+ sh("git-rebase master")
0
+desc 'Push local commits into the Wesabe repository'
0
+task 'git:push' => [ 'git:update' ] do
0
+ puts("* Pushing changes...")
0
+ unless (branch == "master") then
0
+ puts("* Porting changes into master")
0
+ `git-checkout #{branch}`
0
+desc 'Delete the current branch and switch back to master'
0
+task 'git:close' => [ 'git:helpers' ] do
0
+ branch = (env("NAME") or git_branch)
0
+ if (branch == "master") then
0
+ $stderr.puts("* Cannot delete master branch")
0
+ if (current == branch) then
0
+ puts("* Switching to master")
0
+ `git-checkout master 2>/dev/null`
0
+ puts("* Deleting branch #{branch}")
0
+ `git-branch -d #{branch} 2>/dev/null`
0
+ if ($?.exitstatus == 1) then
0
+ $stderr.puts("* Branch #{branch} isn't a strict subset of master, quitting")
0
+ `git-checkout #{current} 2>/dev/null`
0
+ `git-checkout #{current} 2>/dev/null` unless (current == branch)
0
+desc 'Create a new branch off master'
0
+task 'git:open' => [ 'git:helpers' ] do
0
+ newbranch = (env("NAME") or begin
0
+ print("* Name your branch: ")
0
+ Readline.readline.chomp)
0
+ unless (branch == "master") then
0
+ puts("* Switching to master")
0
+ `git-checkout -b #{newbranch}`
0
+ unless $?.exitstatus.zero? then
0
+ puts("* Couldn't create branch #{newbranch}, switching back to #{branch}")
0
+ `git-checkout #{branch}`
0
+desc 'Merge the current branch into the master branch.'
0
+task 'git:fold' => [ 'git:helpers' ] do
0
+ if (branch == "master") then
0
+ $stderr.puts("* Cannot fold master branch")
0
+ puts("* Switching to master")
0
+ `git-checkout master 2>/dev/null`
0
+ puts("* Merging #{branch}")
0
+ system("git-merge #{@merge_flags} #{branch}")
0
+ if ($?.exitstatus == 1) then
0
+ $stderr.puts("* Merge had errors -- see to your friend")
0
+ puts("* Switching to #{branch}")
0
+ `git-checkout #{branch} 2>/dev/null`
0
+desc 'Squash the current branch into the master branch.'
0
+ @merge_flags = "--squash"
0
+ Rake::Task["git:fold"].invoke
0
+desc 'Update all branches'
0
+task 'git:update:all' => [ 'git:helpers' ] do
0
+ git_branches.each do |b|
0
+ puts("* Updating branch #{b}")
0
+ unless $?.exitstatus.zero? then
0
+ puts("* Couldn't rebase #{b}, aborting so you can clean it up")
0
+ `git-checkout #{branch} 2>/dev/null` if switch
Comments
No one has commented yet.