mattgillooly-grb 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ccd31ce22f8cf8cdfb91b5645e7bbbf7d717f728
4
+ data.tar.gz: 8c2dac1f192b190cbe73ec8056f58c528be23927
5
+ SHA512:
6
+ metadata.gz: 6c7729ee41105d0e7a4d8bbdd4f9a364445df27ad1cc15e98e21ec286bd7a1b497593c229f88690fe8fe46f519c38046f1b92b5110b3accdade9ef8d6931371a
7
+ data.tar.gz: 98607dc56a09533916a7e81a1d6d35896a24effe337cc92ec6344b5d65aa9af2da511f964a603af1b5fcf176e52c937403a6bf59aa2409970b052af7e6d68c89
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,2 @@
1
+ Christian van der Leeden [http://github.com/next2you]
2
+ Renée De Voursney [https://github.com/reneedv]
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in grb.gemspec
4
+ gemspec
@@ -0,0 +1,30 @@
1
+ = GRB
2
+ A tool to simplify working with remote branches.
3
+
4
+ == Install:
5
+ $ sudo gem install grb
6
+
7
+ == USAGE:
8
+ * rename `branch1` to `branch2`
9
+ $ grb mv [branch1] [branch2] [--explain]
10
+ * rename current branch to `branch`
11
+ $ grb mv branch [--explain]
12
+ * add a remote repo
13
+ $ grb remote_add `name` `repo path` [--explain]
14
+ * remove a remote repo
15
+ $ grb remote_rm `name` [--explain]
16
+ * delete branch `branch`,default current_branch
17
+ $ grb rm [branch] [--explain]
18
+ * pull branch `branch`,default current_branch
19
+ $ grb pull [branch] [--explain]
20
+ * push branch `branch`, default current_branch
21
+ $ grb push [branch] [--explain]
22
+ * create new branch `branch`
23
+ $ grb new [branch] [--explain]
24
+ * prune dead remote branches
25
+ $ grb prune
26
+
27
+ Copyright (c) 2009-present MIT
28
+
29
+ Author : Jinzhu Zhang
30
+ Email : wosmvp@gmail.com
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/grb ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (c) 2009-present. MIT.
4
+ # Author: Zhang Jinzhu
5
+
6
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/grb")
7
+
8
+ # easy debugger
9
+ if ARGV.delete('--debug')
10
+ ['rubygems','ruby-debug'].each {|x| require x}
11
+ else
12
+ def debugger;end
13
+ end
14
+
15
+ abort('Version: ' + Grb::VERSION) if ARGV.delete('--version') || ARGV.delete('-v')
16
+
17
+ EXPLAIN = ARGV.delete('--explain') || ARGV.delete('-e')
18
+
19
+ opt = {
20
+ :command => ARGV[0] || 'push',
21
+ :branch => branch = (ARGV[1] || Grb.get_current_branch),
22
+ :branch_ => ARGV[2] || branch,
23
+ }
24
+
25
+ Grb.parse(opt)
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'grb/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mattgillooly-grb"
8
+ spec.version = Grb::VERSION
9
+ spec.authors = ["Jinzhu Zhang"]
10
+ spec.email = ["wosmvp@gmail.com"]
11
+ spec.summary = %{A tool to simplify working with remote branches}
12
+ spec.description = %{A tool to simplify working with remote branches}
13
+ spec.homepage = "http://github.com/jinzhu/grb"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "rake"
22
+ end
@@ -0,0 +1,145 @@
1
+ require "grb/version"
2
+
3
+ class Grb
4
+ GIT = ENV['GRB_GIT'] || 'git'
5
+ ORIGIN = ENV['GRB_ORIGIN'] || 'origin'
6
+
7
+ COMMANDS = {
8
+ :new => {
9
+ :desc => "=> create new branch `branch`\ngrb new [branch] [--explain]",
10
+ :commands => [
11
+ '"#{GIT} push #{origin} #{current_branch}:refs/heads/#{branch}"',
12
+ '"#{GIT} fetch #{origin}"',
13
+ '"#{GIT} branch --track #{branch} #{origin}/#{branch}"',
14
+ '"#{GIT} checkout #{branch}"'
15
+ ]
16
+ },
17
+
18
+ :push => {
19
+ :desc => "=> push branch `branch`, default current_branch\ngrb push [branch] [--explain]",
20
+ :commands => [
21
+ '"#{GIT} push #{origin} #{branch}:refs/heads/#{branch}"',
22
+ '"#{GIT} fetch #{origin}"',
23
+ '"#{GIT} config branch.#{branch}.remote #{origin}"',
24
+ '"#{GIT} config branch.#{branch}.merge refs/heads/#{branch}"',
25
+ '"#{GIT} checkout #{branch}"'
26
+ ]
27
+ },
28
+
29
+ :forcepush => {
30
+ :desc => "=> force push branch `branch`, default current_branch\ngrb forcepush [branch] [--explain]",
31
+ :commands => [
32
+ '"#{GIT} push #{origin} #{branch}:refs/heads/#{branch} --force"',
33
+ '"#{GIT} fetch #{origin}"',
34
+ '"#{GIT} config branch.#{branch}.remote #{origin}"',
35
+ '"#{GIT} config branch.#{branch}.merge refs/heads/#{branch}"',
36
+ '"#{GIT} checkout #{branch}"'
37
+ ]
38
+ },
39
+
40
+ :mv => {
41
+ :desc => "=> rename `branch1` to `branch2`\ngrb mv [branch1] [branch2] [--explain]\n=> rename current branch to `branch`\ngrb mv branch [--explain]",
42
+ :commands => [
43
+ ' if(branch != branch_)
44
+ "#{GIT} push #{origin} #{branch}:refs/heads/#{branch_}
45
+ #{GIT} fetch #{origin}
46
+ #{GIT} branch --track #{branch_} #{origin}/#{branch_}
47
+ #{GIT} checkout #{branch_}
48
+ #{GIT} branch -d #{branch}
49
+ #{GIT} push #{origin} :refs/heads/#{branch}"
50
+ else
51
+ "#{GIT} push #{origin} #{current_branch}:refs/heads/#{branch}
52
+ #{GIT} fetch #{origin}
53
+ #{GIT} branch --track #{branch} #{origin}/#{branch}
54
+ #{GIT} checkout #{branch}
55
+ #{GIT} push #{origin} :refs/heads/#{current_branch}
56
+ #{GIT} branch -d #{current_branch}"
57
+ end'
58
+ ]
59
+ },
60
+
61
+ :rm => {
62
+ :desc => "=> delete branch `branch`,default current_branch\ngrb rm [branch] [--explain]",
63
+ :commands => [
64
+ '"#{GIT} push #{origin} :refs/heads/#{branch}"',
65
+ '"#{GIT} checkout master" if current_branch == branch',
66
+ '"#{GIT} branch -d #{branch}"'
67
+ ]
68
+ },
69
+
70
+ :pull => {
71
+ :desc => "=> pull branch `branch`,default current_branch\ngrb pull [branch] [--explain]",
72
+ :commands => [
73
+ '"#{GIT} fetch #{origin}"',
74
+ 'if local_branches.include?(branch)
75
+ "#{GIT} config branch.#{branch}.remote #{origin}\n" +
76
+ "#{GIT} config branch.#{branch}.merge refs/heads/#{branch}"
77
+ else
78
+ "#{GIT} branch --track #{branch} #{origin}/#{branch}"
79
+ end',
80
+ '"#{GIT} checkout #{branch}" if current_branch != branch',
81
+ '"#{GIT} rebase #{origin}/#{branch}"',
82
+ ]
83
+ },
84
+
85
+ :track => {
86
+ :desc => "=> track branch\ngrb track `branch` [--explain]",
87
+ :commands => [
88
+ '"#{GIT} fetch #{origin}"',
89
+ '"#{GIT} branch --track #{branch} origin/#{branch}"',
90
+ '"#{GIT} checkout #{branch}"'
91
+ ]
92
+ },
93
+
94
+ :remote_add => {
95
+ :desc => "=> add a remote repo\ngrb remote_add `name` `repo path` [--explain]",
96
+ :commands => [
97
+ '"#{GIT} remote add #{branch} #{branch_}"',
98
+ '"#{GIT} fetch #{branch}"'
99
+ ]
100
+ },
101
+
102
+ :remote_rm => {
103
+ :desc => "=> remove a remote repo\ngrb remote_rm `name` [--explain]",
104
+ :commands => [
105
+ '"#{GIT} remote rm #{branch}"',
106
+ ]
107
+ },
108
+
109
+ :prune => {
110
+ :desc => "=> prunes the remote branches from the list\ngrb prune",
111
+ :commands => [
112
+ '"#{GIT} remote prune #{origin}"',
113
+ ]
114
+ }
115
+ }
116
+
117
+ def self.parse(opt)
118
+ if COMMANDS.keys.include?(opt[:command].to_sym)
119
+ current_branch,branch,branch_,origin = get_current_branch,opt[:branch],opt[:branch_],ORIGIN
120
+
121
+ COMMANDS[opt[:command].to_sym][:commands].map {|x| exec_cmd(eval(x))}
122
+ else
123
+ help
124
+ end
125
+ end
126
+
127
+ def self.exec_cmd(str)
128
+ return true unless str
129
+ puts("\e[031m" + str.gsub(/^\s*/,'') + "\e[0m")
130
+ system("#{str}") unless EXPLAIN
131
+ end
132
+
133
+ def self.get_current_branch
134
+ (`#{GIT} branch 2> /dev/null | grep '^\*'`).gsub(/[\*\s]/,'')
135
+ end
136
+
137
+ def self.local_branches
138
+ (`#{GIT} branch -l`).split(/\n/).map{|x| x.gsub(/[\*\s]/,'')}
139
+ end
140
+
141
+ def self.help(*args)
142
+ puts "USAGE:"
143
+ COMMANDS.values.map {|x| puts x[:desc].gsub(/^(\W.*)$/,"\e[31m" + '\1' + "\e[0m").gsub(/^(\w.*)$/,' $ \1')}
144
+ end
145
+ end
@@ -0,0 +1,3 @@
1
+ class Grb
2
+ VERSION = "0.4.1"
3
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mattgillooly-grb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.1
5
+ platform: ruby
6
+ authors:
7
+ - Jinzhu Zhang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A tool to simplify working with remote branches
42
+ email:
43
+ - wosmvp@gmail.com
44
+ executables:
45
+ - grb
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - .gitignore
50
+ - Contributors
51
+ - Gemfile
52
+ - README.rdoc
53
+ - Rakefile
54
+ - bin/grb
55
+ - grb.gemspec
56
+ - lib/grb.rb
57
+ - lib/grb/version.rb
58
+ homepage: http://github.com/jinzhu/grb
59
+ licenses: []
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.0.14
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: A tool to simplify working with remote branches
81
+ test_files: []