gitcycle 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -94,6 +94,12 @@ This will add a "pass" label to the issue and will complete the pull request by
94
94
  More
95
95
  ----
96
96
 
97
+ ### Checkout Upstream Branch
98
+
99
+ If you are working in a fork, it is easy to checkout upstream branches:
100
+
101
+ gitc checkout [BRANCH] [...]
102
+
97
103
  ### Reset Branch
98
104
 
99
105
  If you associate the wrong branch with a ticket, use `gitc reset` to fix it.
@@ -106,20 +112,14 @@ Type `gitc reset` + your ticket URL to reset the branch:
106
112
 
107
113
  gitc reset https://xxx.lighthouseapp.com/projects/0000/tickets/0000-my-ticket
108
114
 
109
- ### Track Upstream Branch
110
-
111
- If you are working in a fork, it is easy to track upstream branches:
112
-
113
- gitc track [BRANCH] [...]
114
-
115
115
  Todo
116
116
  ----
117
117
 
118
+ * Add ability to associate multiple branches/pull requests with one Lighthouse ticket
119
+ * Add comment on lighthouse with issue URL
120
+ * gitc discuss should tag issue with 'Discuss'
118
121
  * On pass or fail, send email to Github email
119
122
  * Note you can use gitc with a string
120
123
  * gitc qa pass, should not set ticket to pending-approval if its already resolved
121
124
  * If gitc reset happens on branch with Github issue, close the existing issue
122
- * Add comment on lighthouse with issue URL
123
- * Instead of detecting CONFLICT, use error status $? != 0
124
- * Label issues with ticket milestone?
125
- * gitc LH-ticket should not created a redis record right away, what happens if someone control-c
125
+ * Tag issue with milestone
@@ -206,16 +206,16 @@ Scenario: QA issue
206
206
  And output includes
207
207
  """
208
208
  Retrieving branch information from gitcycle.
209
- Deleting old QA branch 'qa_master'.
209
+ Deleting old QA branch 'qa_config.user_master'.
210
210
  Adding remote repo 'config.owner/config.repo'.
211
211
  Fetching remote 'config.owner'.
212
- Checking out remote branch 'qa_master' from 'config.owner/config.repo/master'.
212
+ Checking out remote branch 'qa_config.user_master' from 'config.owner/config.repo/master'.
213
213
  Fetching remote 'origin'.
214
- Pushing 'origin/qa_master'.
214
+ Pushing 'origin/qa_config.user_master'.
215
215
  Adding remote repo 'config.user/config.repo'.
216
216
  Fetching remote 'config.user'.
217
217
  Merging remote branch 'ticket.id' from 'config.user/config.repo'.
218
- Pushing branch 'qa_master'.
218
+ Pushing branch 'qa_config.user_master'.
219
219
  Type 'gitc qa pass' to approve all issues in this branch.
220
220
  Type 'gitc qa fail' to reject all issues in this branch.
221
221
  """
data/gitcycle.gemspec CHANGED
@@ -6,7 +6,7 @@ $:.unshift lib unless $:.include?(lib)
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "gitcycle"
9
- s.version = '0.1.20'
9
+ s.version = '0.1.21'
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.authors = [ 'Winton Welsh' ]
12
12
  s.email = [ 'mail@wintoni.us' ]
data/lib/gitcycle.rb CHANGED
@@ -37,6 +37,24 @@ class Gitcycle
37
37
  start(args) if args
38
38
  end
39
39
 
40
+ def checkout(branch)
41
+ require_git && require_config
42
+
43
+ puts "\nRetrieving repo information from gitcycle.\n".green
44
+ repo = get('repo')
45
+
46
+ add_remote_and_fetch(:owner => repo['owner'], :repo => repo['name'])
47
+
48
+ unless branches(:match => branch)
49
+ puts "Creating branch '#{branch}' from '#{repo['owner']}/#{branch}'.\n".green
50
+ run("git branch --no-track #{branch} #{repo['owner']}/#{branch}")
51
+ end
52
+
53
+ puts "Checking out '#{branch}'.\n".green
54
+ run("git checkout #{branch}")
55
+ end
56
+ alias :co :checkout
57
+
40
58
  def create_branch(url_or_title, reset=false)
41
59
  require_git && require_config
42
60
 
@@ -59,28 +77,37 @@ class Gitcycle
59
77
 
60
78
  puts "\nRetrieving branch information from gitcycle.\n".green
61
79
  branch = get('branch', params)
62
-
63
80
  name = branch['name']
64
- owner, repo = branch['repo'].split(':')
65
81
 
66
- unless branch['exists']
67
- branch['home'] = @git_login
68
- branch['source'] = branches(:current => true)
82
+ begin
83
+ owner, repo = branch['repo'].split(':')
69
84
 
70
- unless yes?("\nYour work will eventually merge into '#{branch['source']}'. Is this correct?")
71
- branch['source'] = q("What branch would you like to eventually merge into?")
72
- end
85
+ unless branch['exists']
86
+ branch['home'] = @git_login
87
+ branch['source'] = branches(:current => true)
73
88
 
74
- unless yes?("Would you like to name your branch '#{name}'?")
75
- name = q("\nWhat would you like to name your branch?")
76
- name = name.gsub(/[\s\W]/, '-')
77
- end
89
+ unless yes?("\nYour work will eventually merge into '#{branch['source']}'. Is this correct?")
90
+ branch['source'] = q("What branch would you like to eventually merge into?")
91
+ end
92
+
93
+ unless yes?("Would you like to name your branch '#{name}'?")
94
+ name = q("\nWhat would you like to name your branch?")
95
+ name = name.gsub(/[\s\W]/, '-')
96
+ end
78
97
 
79
- checkout_remote_branch(
80
- :owner => owner,
81
- :repo => repo,
82
- :branch => branch['source'],
83
- :target => name
98
+ checkout_remote_branch(
99
+ :owner => owner,
100
+ :repo => repo,
101
+ :branch => branch['source'],
102
+ :target => name
103
+ )
104
+ end
105
+ rescue SystemExit, Interrupt
106
+ puts "\nDeleting branch from gitcycle.\n".green
107
+ branch = get('branch',
108
+ 'branch[name]' => branch['name'],
109
+ 'create' => 0,
110
+ 'reset' => 1
84
111
  )
85
112
  end
86
113
 
@@ -343,18 +370,6 @@ class Gitcycle
343
370
  end
344
371
  end
345
372
 
346
- def track(*branches)
347
- puts "\nRetrieving repo information from gitcycle.\n".green
348
- repo = get('repo')
349
-
350
- branches.each do |branch|
351
- add_remote_and_fetch(:owner => repo['owner'], :repo => repo['name'])
352
-
353
- puts "Creating branch '#{branch}' from '#{repo['owner']}/#{branch}'.\n".green
354
- run("git branch --no-track #{branch} #{repo['owner']}/#{branch}")
355
- end
356
- end
357
-
358
373
  private
359
374
 
360
375
  def add_remote_and_fetch(options={})
@@ -369,7 +384,7 @@ class Gitcycle
369
384
  run("git remote rm #{owner}") if remotes(:match => owner)
370
385
  run("git remote add #{owner} git@github.com:#{owner}/#{repo}.git")
371
386
  end
372
-
387
+
373
388
  puts "Fetching remote '#{owner}'.\n".green
374
389
  run("git fetch -q #{owner}")
375
390
  end
@@ -410,6 +425,7 @@ class Gitcycle
410
425
  if branches(:match => target)
411
426
  if yes?("You already have a branch called '#{target}'. Overwrite?")
412
427
  run("git push origin :#{target}")
428
+ run("git checkout master")
413
429
  run("branch -D #{target}")
414
430
  else
415
431
  run("git checkout #{target}")
@@ -481,7 +497,10 @@ class Gitcycle
481
497
  unless options[:preserve]
482
498
  if branches(:match => name, :all => true)
483
499
  puts "Deleting old QA branch '#{name}'.\n".green
484
- run("git branch -D #{name}") if branches(:match => name)
500
+ if branches(:match => name)
501
+ run("git checkout master")
502
+ run("git branch -D #{name}")
503
+ end
485
504
  run("git push origin :#{name}")
486
505
  end
487
506
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitcycle
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 49
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 20
10
- version: 0.1.20
9
+ - 21
10
+ version: 0.1.21
11
11
  platform: ruby
12
12
  authors:
13
13
  - Winton Welsh
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-01 00:00:00 -08:00
18
+ date: 2012-02-02 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency