pt-flow 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -13,7 +13,6 @@ Install the gem:
13
13
  - flow start
14
14
  - flow finish
15
15
  - flow review
16
- - flow deliver
17
16
 
18
17
  ### Committer
19
18
 
@@ -21,6 +20,8 @@ Install the gem:
21
20
  $ flow start
22
21
  # shows lists of tasks - choosing one starts/assigns the task on pt and checks out a new branch.
23
22
 
23
+ # Make sure your branch is up-to-date with release branch
24
+
24
25
  $ flow finish
25
26
  # pushes branch, finishes task on pt, and opens github new pull request page.
26
27
  # follow with cap staging deploy:migrations BRANCH=master-325325 etc...
@@ -30,9 +31,11 @@ $ flow finish
30
31
 
31
32
  ```bash
32
33
  $ flow review
33
- # checks out branch and opens github page
34
- # run tests, review code etc...
34
+ # selecting a pull request opens github page, comment :+1: to approve
35
+ ```
36
+
37
+ ### Committer
35
38
 
36
- $ flow deliver
37
- # merges and pushes target branch, deletes local/remote branch, and delivers task on pt
38
- # follow with cap production deploy:migrations etc...
39
+ ```bash
40
+ # pressing merge button on github delivers task on pivotal tracker
41
+ ```
data/lib/pt-flow.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require "pt"
2
2
  require "pt-flow/version"
3
- require "pt-flow/repo"
3
+ require "pt-flow/branch"
4
4
  require "pt-flow/pull_requests_table"
5
+ require "pt-flow/repo"
5
6
  require "pt-flow/ui"
6
7
 
7
8
  module PT
@@ -0,0 +1,33 @@
1
+ module PT::Flow
2
+ class Branch
3
+ require 'i18n'
4
+ require 'active_support/core_ext/string/inflections'
5
+
6
+ attr_accessor :name
7
+
8
+ def self.current
9
+ new(`git rev-parse --abbrev-ref HEAD`.strip)
10
+ end
11
+
12
+ def self.from_task(task)
13
+ new("#{current.target}.#{task.name.parameterize[0..60]}.#{task.id}")
14
+ end
15
+
16
+ def initialize(name)
17
+ @name = name
18
+ end
19
+
20
+ def target
21
+ name.split('.').first
22
+ end
23
+
24
+ def task_id
25
+ name[/\d+$/] || ''
26
+ end
27
+
28
+ def to_s
29
+ name
30
+ end
31
+
32
+ end
33
+ end
data/lib/pt-flow/ui.rb CHANGED
@@ -7,64 +7,67 @@ module PT::Flow
7
7
  end
8
8
 
9
9
  def start
10
- tasks = @client.get_work(@project)
11
- table = PT::TasksTable.new(tasks)
12
- title("Available tasks in #{project_to_s}")
13
- task = select("Please select a task to start working on", table)
10
+ if @params[0]
11
+ task = create
12
+ else
13
+ table = PT::TasksTable.new(@client.get_work(@project))
14
+ title("Available tasks in #{project_to_s}")
15
+ task = select("Please select a task to start working on", table)
16
+ end
14
17
  estimate_task(task, ask("How many points do you estimate for it? (#{@project.point_scale})")) if task.estimate && task.estimate < 0
15
18
  assign_task(task, @local_config[:user_name])
16
19
  start_task(task)
17
- run("git checkout -b #{current_target}-#{task.id}")
20
+ run("git checkout -b #{Branch.from_task(task)}")
18
21
  end
19
22
 
20
23
  def finish
21
- run("git push origin #{current_branch}")
22
- task = PivotalTracker::Story.find(current_task_id, @project.id)
23
- title = task.name.gsub('"',"'") + " [##{task.id}]"
24
- run("hub pull-request -b #{current_target} -h #{repo.user}:#{current_branch} \"#{title}\"")
25
- run("git checkout #{current_target}")
24
+ run("git push origin #{branch}")
25
+ task = PivotalTracker::Story.find(branch.task_id, @project.id)
26
+ title = task.name.gsub('"',"'") + " [Delivers ##{task.id}]"
27
+
28
+ run("hub pull-request -b #{branch.target} -h #{repo.user}:#{branch} \"#{title}\"")
29
+ run("git checkout #{branch.target}")
26
30
  finish_task(task)
27
31
  end
28
32
 
29
- def deliver
30
- run('git fetch')
31
- run("git checkout #{current_target}")
32
- run("git pull --rebase origin #{current_target}")
33
- run("git merge #{current_branch}")
34
- run("git push origin #{current_target}")
35
- run("git push origin :#{current_branch}")
36
- run("git branch -d #{current_branch}")
37
- task = PivotalTracker::Story.find(current_task_id, @project.id)
38
- deliver_task(task)
33
+ def create
34
+ name = @params[0] || ask("Name for the new story:")
35
+ types = { 'c' => 'chore', 'b' => 'bug', 'f' => 'feature' }
36
+ task_type = types[ask('Type? (c)hore, (b)ug, (f)eature')]
37
+ task = @project.stories.create(name: name, requested_by: @local_config[:user_name], story_type: task_type)
38
+ if task.errors.any?
39
+ error(task.errors.errors)
40
+ else
41
+ congrats("#{task_type} created: #{task.url}")
42
+ task
43
+ end
39
44
  end
40
45
 
41
46
  def review
42
47
  table = PullRequestsTable.new(repo.pull_requests)
43
48
  pull_request = select("Please select a pull request to review", table)
44
- run("git fetch")
45
- run("git checkout #{pull_request.head.ref}")
46
49
  run("open #{pull_request.html_url}/files")
47
50
  rescue Github::Error::Unauthorized => e
48
51
  error("Error from github: #{e.message}")
49
52
  end
50
53
 
51
54
  def cleanup
52
- title("Cleaning merged story branches for [#{current_target}]")
55
+ title("Cleaning merged story branches for [#{branch.target}]")
53
56
 
54
57
  # Update our list of remotes
55
58
  run("git fetch")
56
59
  run("git remote prune origin")
57
60
 
58
61
  # Only clean out merged story branches for current topic
59
- filter = "#{current_target}-[0-9]*$"
62
+ filter = "#{branch.target}.\\+[0-9]\\+$"
60
63
 
61
64
  # Remove local branches fully merged with origin/current_target
62
- run("git branch --merged origin/#{current_target} | grep '#{filter}' | xargs git branch -D")
65
+ run("git branch --merged origin/#{branch.target} | grep '#{filter}' | xargs git branch -D")
63
66
 
64
67
  # Remove remote branches fully merged with origin/master
65
- run("git branch -r --merged origin/#{current_target} | sed 's/ *origin\\///' | grep '#{filter}' | xargs -I% git push origin :%")
68
+ run("git branch -r --merged origin/#{branch.target} | sed 's/ *origin\\///' | grep '#{filter}' | xargs -I% git push origin :%")
66
69
 
67
- congrats("Deleted branches merged with [#{current_target}]")
70
+ congrats("Deleted branches merged with [#{branch.target}]")
68
71
  end
69
72
 
70
73
  def help
@@ -76,14 +79,18 @@ module PT::Flow
76
79
  puts("flow start # start working on a story")
77
80
  puts("flow finish # finish a story and create a pull request")
78
81
  puts("flow review # review a pull request")
79
- puts("flow deliver # merge current branch and clean up")
82
+ #puts("flow deliver # merge current branch and clean up")
80
83
  puts("flow cleanup # deleted merged local/remote branches and prune origin")
81
84
  end
82
85
 
83
86
  private
84
87
 
88
+ def branch
89
+ @branch ||= Branch.current
90
+ end
91
+
85
92
  def repo
86
- Repo.new
93
+ @repo ||= Repo.new
87
94
  end
88
95
 
89
96
  def assign_task(task, owner)
@@ -95,18 +102,6 @@ module PT::Flow
95
102
  end
96
103
  end
97
104
 
98
- def current_branch
99
- @current_branch ||= `git rev-parse --abbrev-ref HEAD`.strip
100
- end
101
-
102
- def current_target
103
- current_branch.sub(current_task_id, '').chomp('-')
104
- end
105
-
106
- def current_task_id
107
- current_branch[/\d+$/] || ''
108
- end
109
-
110
105
  def run(command)
111
106
  title(command)
112
107
  error("Error running: #{command}") unless system(command)
@@ -1,5 +1,5 @@
1
1
  module PT
2
2
  module Flow
3
- VERSION = "0.5.3"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
data/pt-flow.gemspec CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency 'pt'
19
19
  gem.add_dependency 'hub'
20
20
  gem.add_dependency 'github_api'
21
+ gem.add_dependency 'active_support'
22
+ gem.add_dependency 'i18n'
21
23
 
22
24
  gem.add_development_dependency 'rspec', '~> 2.9'
23
25
  gem.add_development_dependency 'webmock'
@@ -2,9 +2,8 @@
2
2
  <story>
3
3
  <id type="integer">4459994</id>
4
4
  <project_id type="integer">102622</project_id>
5
- <story_type>feature</story_type>
5
+ <story_type>chore</story_type>
6
6
  <url>http://www.pivotaltracker.com/story/show/4459994</url>
7
- <estimate type="integer">-1</estimate>
8
7
  <current_state>unstarted</current_state>
9
8
  <description>Generic description</description>
10
9
  <name>Unestimated Feature</name>
@@ -22,7 +22,7 @@
22
22
  <estimate type="integer">-1</estimate>
23
23
  <current_state>unstarted</current_state>
24
24
  <description>Generic description</description>
25
- <name>Unestimated Feature</name>
25
+ <name>As a user I should see an Unestimated Feature with a fairly long name</name>
26
26
  <requested_by>Jon Mischo</requested_by>
27
27
  <created_at type="datetime">2010/07/27 21:51:01 UTC</created_at>
28
28
  <updated_at type="datetime">2010/07/27 22:20:46 UTC</updated_at>
@@ -7,7 +7,7 @@
7
7
  <estimate type="integer">-1</estimate>
8
8
  <current_state>unstarted</current_state>
9
9
  <description>Generic description</description>
10
- <name>It's an Unestimated Feature</name>
10
+ <name>As a user I should see an Unestimated Feature with a fairly long name</name>
11
11
  <requested_by>Jon Mischo</requested_by>
12
12
  <created_at type="datetime">2010/07/27 21:51:01 UTC</created_at>
13
13
  <updated_at type="datetime">2010/07/27 22:20:46 UTC</updated_at>
@@ -9,6 +9,7 @@ describe PT::Flow::UI do
9
9
  HighLine.stub(new: prompt)
10
10
  stub_request(:get, /projects$/).to_return(body: fixture_file('projects.xml'))
11
11
  stub_request(:get, /stories\?/).to_return(body: fixture_file('stories.xml'))
12
+ stub_request(:post, /stories$/).to_return(body: fixture_file('chore.xml'))
12
13
  stub_request(:any, /stories\/\d+/).to_return(body: fixture_file('story.xml'))
13
14
  end
14
15
 
@@ -25,7 +26,7 @@ describe PT::Flow::UI do
25
26
  WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<owned_by>Jon Mischo<\/owned_by>/)
26
27
  WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<current_state>started<\/current_state>/)
27
28
 
28
- current_branch.should == 'master-4459994'
29
+ current_branch.should == 'master.as-a-user-i-should-see-an-unestimated-feature-with-a-fairly-l.4459994'
29
30
  end
30
31
  end
31
32
 
@@ -42,17 +43,29 @@ describe PT::Flow::UI do
42
43
  it "creates an appropriately namespaced branch" do
43
44
  prompt.should_receive(:ask).and_return('3')
44
45
  PT::Flow::UI.new %w{ start }
45
- current_branch.should == 'new_feature-4460038'
46
+ current_branch.should == 'new_feature.this-is-for-comments.4460038'
46
47
  end
47
48
  end
48
49
 
49
50
  context 'when run from an existing story branch' do
50
- before { system('git checkout -B new_feature-12345') }
51
+ before { system('git checkout -B new_feature.as-a-user-i-should.4459994') }
51
52
 
52
53
  it "creates a branch within the same namespace" do
53
54
  prompt.should_receive(:ask).and_return('3')
54
55
  PT::Flow::UI.new %w{ start }
55
- current_branch.should == 'new_feature-4460038'
56
+ current_branch.should == 'new_feature.this-is-for-comments.4460038'
57
+ end
58
+ end
59
+
60
+ context 'given a string' do
61
+ it "creates and starts a new story with that name" do
62
+ prompt.should_receive(:ask).with("Type? (c)hore, (b)ug, (f)eature".bold).and_return('c')
63
+
64
+ PT::Flow::UI.new ['start','a new feature']
65
+
66
+ WebMock.should have_requested(:post, "#{endpoint}/projects/102622/stories").with(body: /<name>a new feature<\/name>/).with(body: /<story_type>chore<\/story_type>/).with(body: /<requested_by>Jon Mischo<\/requested_by>/)
67
+ WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<owned_by>Jon Mischo<\/owned_by>/)
68
+ WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<current_state>started<\/current_state>/)
56
69
  end
57
70
  end
58
71
  end
@@ -60,36 +73,16 @@ describe PT::Flow::UI do
60
73
  describe '#finish' do
61
74
  before do
62
75
  #TODO: Stubbed endpoint ALWAYS returns story 4459994, need a way to check it is actually getting the right id from the branch
63
- system('git checkout -B new_feature-4459994')
76
+ system('git checkout -B new_feature.as-a-user-i-should.4459994')
64
77
  system('git remote add origin git@github.com:cookpad/pt-flow.git')
65
78
  end
66
79
 
67
80
  it "pushes the current branch to origin, flags the story as finished, and opens a github pull request" do
68
- PT::Flow::UI.any_instance.should_receive(:run).with('git push origin new_feature-4459994')
69
- PT::Flow::UI.any_instance.should_receive(:run).with("hub pull-request -b new_feature -h cookpad:new_feature-4459994 \"It's an Unestimated Feature [#4459994]\"")
81
+ PT::Flow::UI.any_instance.should_receive(:run).with('git push origin new_feature.as-a-user-i-should.4459994')
82
+ PT::Flow::UI.any_instance.should_receive(:run).with("hub pull-request -b new_feature -h cookpad:new_feature.as-a-user-i-should.4459994 \"As a user I should see an Unestimated Feature with a fairly long name [Delivers #4459994]\"")
70
83
  PT::Flow::UI.any_instance.should_receive(:run).with('git checkout new_feature')
71
84
  PT::Flow::UI.new %w{ finish }
72
85
  WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<current_state>finished<\/current_state>/)
73
86
  end
74
87
  end
75
-
76
- describe '#deliver' do
77
- before do
78
- #TODO: Stubbed endpoint ALWAYS returns story 4459994, need a way to check it is actually getting the right id from the branch
79
- system('git checkout -B new_feature-4459994')
80
- end
81
-
82
- it "pushes the current branch to origin, flags the story as finished, and opens a github pull request" do
83
- PT::Flow::UI.any_instance.should_receive(:run).with('git fetch')
84
- PT::Flow::UI.any_instance.should_receive(:run).with('git checkout new_feature')
85
- PT::Flow::UI.any_instance.should_receive(:run).with('git pull --rebase origin new_feature')
86
- PT::Flow::UI.any_instance.should_receive(:run).with('git merge new_feature-4459994')
87
- PT::Flow::UI.any_instance.should_receive(:run).with('git push origin new_feature')
88
- PT::Flow::UI.any_instance.should_receive(:run).with('git push origin :new_feature-4459994')
89
- PT::Flow::UI.any_instance.should_receive(:run).with('git branch -d new_feature-4459994')
90
-
91
- PT::Flow::UI.new %w{ deliver }
92
- WebMock.should have_requested(:put, "#{endpoint}/projects/102622/stories/4459994").with(body: /<current_state>delivered<\/current_state>/)
93
- end
94
- end
95
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pt-flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-19 00:00:00.000000000 Z
12
+ date: 2012-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pt
@@ -59,6 +59,38 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: active_support
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: i18n
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  - !ruby/object:Gem::Dependency
63
95
  name: rspec
64
96
  requirement: !ruby/object:Gem::Requirement
@@ -139,22 +171,17 @@ files:
139
171
  - Rakefile
140
172
  - bin/flow
141
173
  - lib/pt-flow.rb
174
+ - lib/pt-flow/branch.rb
142
175
  - lib/pt-flow/pull_requests_table.rb
143
176
  - lib/pt-flow/repo.rb
144
177
  - lib/pt-flow/ui.rb
145
178
  - lib/pt-flow/version.rb
146
179
  - pt-flow.gemspec
147
- - spec/fixtures/features.xml
180
+ - spec/fixtures/chore.xml
148
181
  - spec/fixtures/global_config.yml
149
182
  - spec/fixtures/local_config.yml
150
- - spec/fixtures/memberships.xml
151
- - spec/fixtures/project.xml
152
183
  - spec/fixtures/projects.xml
153
184
  - spec/fixtures/stories.xml
154
- - spec/fixtures/story-4459994.xml
155
- - spec/fixtures/story-4460038.xml
156
- - spec/fixtures/story-4460598.xml
157
- - spec/fixtures/story-4473735.xml
158
185
  - spec/fixtures/story.xml
159
186
  - spec/lib/pt-flow/ui_spec.rb
160
187
  - spec/spec_helper.rb
@@ -176,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
203
  version: '0'
177
204
  segments:
178
205
  - 0
179
- hash: 1501218618260700308
206
+ hash: 1622382141531473024
180
207
  required_rubygems_version: !ruby/object:Gem::Requirement
181
208
  none: false
182
209
  requirements:
@@ -185,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
212
  version: '0'
186
213
  segments:
187
214
  - 0
188
- hash: 1501218618260700308
215
+ hash: 1622382141531473024
189
216
  requirements: []
190
217
  rubyforge_project:
191
218
  rubygems_version: 1.8.23
@@ -193,17 +220,11 @@ signing_key:
193
220
  specification_version: 3
194
221
  summary: Some extra methods for the pt gem to use in our dev flow.
195
222
  test_files:
196
- - spec/fixtures/features.xml
223
+ - spec/fixtures/chore.xml
197
224
  - spec/fixtures/global_config.yml
198
225
  - spec/fixtures/local_config.yml
199
- - spec/fixtures/memberships.xml
200
- - spec/fixtures/project.xml
201
226
  - spec/fixtures/projects.xml
202
227
  - spec/fixtures/stories.xml
203
- - spec/fixtures/story-4459994.xml
204
- - spec/fixtures/story-4460038.xml
205
- - spec/fixtures/story-4460598.xml
206
- - spec/fixtures/story-4473735.xml
207
228
  - spec/fixtures/story.xml
208
229
  - spec/lib/pt-flow/ui_spec.rb
209
230
  - spec/spec_helper.rb
@@ -1,293 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <stories type="array" count="14" limit="20" total="14">
3
- <story>
4
- <id type="integer">4460116</id>
5
- <project_id type="integer">102622</project_id>
6
- <story_type>feature</story_type>
7
- <url>http://www.pivotaltracker.com/story/show/4460116</url>
8
- <estimate type="integer">0</estimate>
9
- <current_state>accepted</current_state>
10
- <description>This is a story that's finished.</description>
11
- <name>Old, accepted story</name>
12
- <requested_by>Jon Mischo</requested_by>
13
- <created_at type="datetime">2010/07/27 21:58:28 UTC</created_at>
14
- <updated_at type="datetime">2010/07/27 22:21:17 UTC</updated_at>
15
- <accepted_at type="datetime">2010/07/18 17:00:00 UTC</accepted_at>
16
- </story>
17
- <story>
18
- <id type="integer">4459994</id>
19
- <project_id type="integer">102622</project_id>
20
- <story_type>feature</story_type>
21
- <url>http://www.pivotaltracker.com/story/show/4459994</url>
22
- <estimate type="integer">2</estimate>
23
- <current_state>unstarted</current_state>
24
- <description>Generic description</description>
25
- <name>Tasks Test</name>
26
- <requested_by>Jon Mischo</requested_by>
27
- <created_at type="datetime">2010/07/27 21:51:01 UTC</created_at>
28
- <updated_at type="datetime">2010/07/27 22:20:46 UTC</updated_at>
29
- <tasks type="array">
30
- <task>
31
- <id type="integer">468113</id>
32
- <description>Task number 1</description>
33
- <position>1</position>
34
- <complete>false</complete>
35
- <created_at type="datetime">2010/07/27 21:51:28 UTC</created_at>
36
- </task>
37
- <task>
38
- <id type="integer">468114</id>
39
- <description>Number 2 Task</description>
40
- <position>2</position>
41
- <complete>false</complete>
42
- <created_at type="datetime">2010/07/27 21:51:32 UTC</created_at>
43
- </task>
44
- <task>
45
- <id type="integer">468117</id>
46
- <description>3rd task is a charm</description>
47
- <position>3</position>
48
- <complete>true</complete>
49
- <created_at type="datetime">2010/07/27 21:51:42 UTC</created_at>
50
- </task>
51
- </tasks>
52
- </story>
53
- <story>
54
- <id type="integer">4460038</id>
55
- <project_id type="integer">102622</project_id>
56
- <story_type>feature</story_type>
57
- <url>http://www.pivotaltracker.com/story/show/4460038</url>
58
- <estimate type="integer">1</estimate>
59
- <current_state>unstarted</current_state>
60
- <description>This is a story that has comments.</description>
61
- <name>This is for comments</name>
62
- <requested_by>Jon Mischo</requested_by>
63
- <created_at type="datetime">2010/07/27 21:53:16 UTC</created_at>
64
- <updated_at type="datetime">2010/07/27 22:20:48 UTC</updated_at>
65
- <notes type="array">
66
- <note>
67
- <id type="integer">2111593</id>
68
- <text>This is a comment...whee!</text>
69
- <author>Jon</author>
70
- <noted_at type="datetime">2010/07/27 22:15:48 UTC</noted_at>
71
- </note>
72
- <note>
73
- <id type="integer">2128955</id>
74
- <text>Test note</text>
75
- <author>Test Suite Access</author>
76
- <noted_at type="datetime">2010/07/29 18:15:09 UTC</noted_at>
77
- </note>
78
- <note>
79
- <id type="integer">2128959</id>
80
- <text>Test note</text>
81
- <author>Test Suite Access</author>
82
- <noted_at type="datetime">2010/07/29 18:16:12 UTC</noted_at>
83
- </note>
84
- <note>
85
- <id type="integer">2129077</id>
86
- <text>Test note</text>
87
- <author>Test Suite Access</author>
88
- <noted_at type="datetime">2010/07/29 18:22:26 UTC</noted_at>
89
- </note>
90
- <note>
91
- <id type="integer">2129374</id>
92
- <text>Test note</text>
93
- <author>Test Suite Access</author>
94
- <noted_at type="datetime">2010/07/29 18:55:44 UTC</noted_at>
95
- </note>
96
- </notes>
97
- </story>
98
- <story>
99
- <id type="integer">4460598</id>
100
- <project_id type="integer">102622</project_id>
101
- <story_type>feature</story_type>
102
- <url>http://www.pivotaltracker.com/story/show/4460598</url>
103
- <estimate type="integer">3</estimate>
104
- <current_state>unstarted</current_state>
105
- <description>This story has attachments.</description>
106
- <name>Story with attachments</name>
107
- <requested_by>Jon Mischo</requested_by>
108
- <created_at type="datetime">2010/07/27 22:33:13 UTC</created_at>
109
- <updated_at type="datetime">2010/07/27 22:33:28 UTC</updated_at>
110
- <attachments type="array">
111
- <attachment>
112
- <id type="integer">491576</id>
113
- <filename>LICENSE</filename>
114
- <description></description>
115
- <uploaded_by>Jon</uploaded_by>
116
- <uploaded_at type="datetime">2010/07/27 22:34:23 UTC</uploaded_at>
117
- <url>http://www.pivotaltracker.com/resource/download/491576</url>
118
- </attachment>
119
- <attachment>
120
- <id type="integer">493019</id>
121
- <filename>README.rdoc</filename>
122
- <description>README file from api gem</description>
123
- <uploaded_by>Jon</uploaded_by>
124
- <uploaded_at type="datetime">2010/07/28 15:16:18 UTC</uploaded_at>
125
- <url>http://www.pivotaltracker.com/resource/download/493019</url>
126
- </attachment>
127
- </attachments>
128
- </story>
129
- <story>
130
- <id type="integer">4473735</id>
131
- <project_id type="integer">102622</project_id>
132
- <story_type>feature</story_type>
133
- <url>http://www.pivotaltracker.com/story/show/4473735</url>
134
- <estimate type="integer">1</estimate>
135
- <current_state>unstarted</current_state>
136
- <description></description>
137
- <name>Attachment upload test story</name>
138
- <requested_by>Jon</requested_by>
139
- <created_at type="datetime">2010/07/28 18:17:33 UTC</created_at>
140
- <updated_at type="datetime">2010/07/28 18:17:44 UTC</updated_at>
141
- <attachments type="array">
142
- <attachment>
143
- <id type="integer">495851</id>
144
- <filename>LICENSE</filename>
145
- <description></description>
146
- <uploaded_by>Test Suite Access</uploaded_by>
147
- <uploaded_at type="datetime">2010/07/29 19:07:19 UTC</uploaded_at>
148
- <url>http://www.pivotaltracker.com/resource/download/495851</url>
149
- </attachment>
150
- <attachment>
151
- <id type="integer">495856</id>
152
- <filename>LICENSE</filename>
153
- <description></description>
154
- <uploaded_by>Test Suite Access</uploaded_by>
155
- <uploaded_at type="datetime">2010/07/29 19:09:27 UTC</uploaded_at>
156
- <url>http://www.pivotaltracker.com/resource/download/495856</url>
157
- </attachment>
158
- <attachment>
159
- <id type="integer">495858</id>
160
- <filename>LICENSE</filename>
161
- <description></description>
162
- <uploaded_by>Test Suite Access</uploaded_by>
163
- <uploaded_at type="datetime">2010/07/29 19:11:44 UTC</uploaded_at>
164
- <url>http://www.pivotaltracker.com/resource/download/495858</url>
165
- </attachment>
166
- <attachment>
167
- <id type="integer">495863</id>
168
- <filename>LICENSE</filename>
169
- <description></description>
170
- <uploaded_by>Test Suite Access</uploaded_by>
171
- <uploaded_at type="datetime">2010/07/29 19:13:06 UTC</uploaded_at>
172
- <url>http://www.pivotaltracker.com/resource/download/495863</url>
173
- </attachment>
174
- </attachments>
175
- </story>
176
- <story>
177
- <id type="integer">4490874</id>
178
- <project_id type="integer">102622</project_id>
179
- <story_type>feature</story_type>
180
- <url>http://www.pivotaltracker.com/story/show/4490874</url>
181
- <estimate type="integer">0</estimate>
182
- <current_state>unstarted</current_state>
183
- <description></description>
184
- <name>Movable Story</name>
185
- <requested_by>Test Suite Access</requested_by>
186
- <created_at type="datetime">2010/07/29 18:12:31 UTC</created_at>
187
- <updated_at type="datetime">2010/07/29 19:13:12 UTC</updated_at>
188
- </story>
189
- <story>
190
- <id type="integer">4492080</id>
191
- <project_id type="integer">102622</project_id>
192
- <story_type>feature</story_type>
193
- <url>http://www.pivotaltracker.com/story/show/4492080</url>
194
- <estimate type="integer">-1</estimate>
195
- <current_state>unscheduled</current_state>
196
- <description></description>
197
- <name>Create stuff</name>
198
- <requested_by>Test Suite Access</requested_by>
199
- <created_at type="datetime">2010/07/29 19:13:04 UTC</created_at>
200
- <updated_at type="datetime">2010/07/29 19:13:04 UTC</updated_at>
201
- </story>
202
- <story>
203
- <id type="integer">4492078</id>
204
- <project_id type="integer">102622</project_id>
205
- <story_type>feature</story_type>
206
- <url>http://www.pivotaltracker.com/story/show/4492078</url>
207
- <estimate type="integer">-1</estimate>
208
- <current_state>unscheduled</current_state>
209
- <description></description>
210
- <name>Create stuff</name>
211
- <requested_by>Test Suite Access</requested_by>
212
- <created_at type="datetime">2010/07/29 19:13:01 UTC</created_at>
213
- <updated_at type="datetime">2010/07/29 19:13:01 UTC</updated_at>
214
- </story>
215
- <story>
216
- <id type="integer">4492060</id>
217
- <project_id type="integer">102622</project_id>
218
- <story_type>feature</story_type>
219
- <url>http://www.pivotaltracker.com/story/show/4492060</url>
220
- <estimate type="integer">-1</estimate>
221
- <current_state>unscheduled</current_state>
222
- <description></description>
223
- <name>Create stuff</name>
224
- <requested_by>Test Suite Access</requested_by>
225
- <created_at type="datetime">2010/07/29 19:11:43 UTC</created_at>
226
- <updated_at type="datetime">2010/07/29 19:11:43 UTC</updated_at>
227
- </story>
228
- <story>
229
- <id type="integer">4492059</id>
230
- <project_id type="integer">102622</project_id>
231
- <story_type>feature</story_type>
232
- <url>http://www.pivotaltracker.com/story/show/4492059</url>
233
- <estimate type="integer">-1</estimate>
234
- <current_state>unscheduled</current_state>
235
- <description></description>
236
- <name>Create stuff</name>
237
- <requested_by>Test Suite Access</requested_by>
238
- <created_at type="datetime">2010/07/29 19:11:38 UTC</created_at>
239
- <updated_at type="datetime">2010/07/29 19:11:38 UTC</updated_at>
240
- </story>
241
- <story>
242
- <id type="integer">4491973</id>
243
- <project_id type="integer">102622</project_id>
244
- <story_type>feature</story_type>
245
- <url>http://www.pivotaltracker.com/story/show/4491973</url>
246
- <estimate type="integer">-1</estimate>
247
- <current_state>unscheduled</current_state>
248
- <description></description>
249
- <name>Create stuff</name>
250
- <requested_by>Test Suite Access</requested_by>
251
- <created_at type="datetime">2010/07/29 19:09:26 UTC</created_at>
252
- <updated_at type="datetime">2010/07/29 19:09:26 UTC</updated_at>
253
- </story>
254
- <story>
255
- <id type="integer">4491971</id>
256
- <project_id type="integer">102622</project_id>
257
- <story_type>feature</story_type>
258
- <url>http://www.pivotaltracker.com/story/show/4491971</url>
259
- <estimate type="integer">-1</estimate>
260
- <current_state>unscheduled</current_state>
261
- <description></description>
262
- <name>Create stuff</name>
263
- <requested_by>Test Suite Access</requested_by>
264
- <created_at type="datetime">2010/07/29 19:09:24 UTC</created_at>
265
- <updated_at type="datetime">2010/07/29 19:09:24 UTC</updated_at>
266
- </story>
267
- <story>
268
- <id type="integer">4491741</id>
269
- <project_id type="integer">102622</project_id>
270
- <story_type>feature</story_type>
271
- <url>http://www.pivotaltracker.com/story/show/4491741</url>
272
- <estimate type="integer">-1</estimate>
273
- <current_state>unscheduled</current_state>
274
- <description></description>
275
- <name>Create Stuff</name>
276
- <requested_by>Test Suite Access</requested_by>
277
- <created_at type="datetime">2010/07/29 18:56:02 UTC</created_at>
278
- <updated_at type="datetime">2010/07/29 18:56:02 UTC</updated_at>
279
- </story>
280
- <story>
281
- <id type="integer">4490944</id>
282
- <project_id type="integer">102622</project_id>
283
- <story_type>feature</story_type>
284
- <url>http://www.pivotaltracker.com/story/show/4490944</url>
285
- <estimate type="integer">-1</estimate>
286
- <current_state>unscheduled</current_state>
287
- <description></description>
288
- <name>Create Stuff</name>
289
- <requested_by>Test Suite Access</requested_by>
290
- <created_at type="datetime">2010/07/29 18:17:23 UTC</created_at>
291
- <updated_at type="datetime">2010/07/29 18:17:23 UTC</updated_at>
292
- </story>
293
- </stories>
@@ -1,42 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <memberships type="array">
3
- <membership>
4
- <id>331822</id>
5
- <person>
6
- <email>jmischo@sittercity.com</email>
7
- <name>Jon</name>
8
- <initials>JM</initials>
9
- </person>
10
- <role>Owner</role>
11
- <project>
12
- <id>102622</id>
13
- <name>Pivotal Tracker API Gem</name>
14
- </project>
15
- </membership>
16
- <membership>
17
- <id>331823</id>
18
- <person>
19
- <email>jmischo@quagility.com</email>
20
- <name>Jon Mischo</name>
21
- <initials>JM</initials>
22
- </person>
23
- <role>Owner</role>
24
- <project>
25
- <id>102622</id>
26
- <name>Pivotal Tracker API Gem</name>
27
- </project>
28
- </membership>
29
- <membership>
30
- <id>331832</id>
31
- <person>
32
- <email>pivotal-tracker-api-gem@quagility.com</email>
33
- <name>Test Suite Access</name>
34
- <initials>TEST</initials>
35
- </person>
36
- <role>Member</role>
37
- <project>
38
- <id>102622</id>
39
- <name>Pivotal Tracker API Gem</name>
40
- </project>
41
- </membership>
42
- </memberships>
@@ -1,53 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project>
3
- <id>102622</id>
4
- <name>Pivotal Tracker API Gem</name>
5
- <first_iteration_start_time type="datetime">2011/12/05 06:00:00 UTC</first_iteration_start_time>
6
- <current_iteration_number type="integer">4</current_iteration_number>
7
- <iteration_length type="integer">1</iteration_length>
8
- <week_start_day>Monday</week_start_day>
9
- <point_scale>0,1,2,3</point_scale>
10
- <account>Jon</account>
11
- <velocity_scheme>Average of 3 iterations</velocity_scheme>
12
- <current_velocity>2</current_velocity>
13
- <initial_velocity>2</initial_velocity>
14
- <number_of_done_iterations_to_show>12</number_of_done_iterations_to_show>
15
- <labels></labels>
16
- <last_activity_at type="datetime">2010/07/29 19:13:13 UTC</last_activity_at>
17
- <allow_attachments>true</allow_attachments>
18
- <public>true</public>
19
- <use_https>false</use_https>
20
- <bugs_and_chores_are_estimatable>true</bugs_and_chores_are_estimatable>
21
- <commit_mode>true</commit_mode>
22
- <memberships>
23
- <membership>
24
- <id>331822</id>
25
- <person>
26
- <email>jmischo@sittercity.com</email>
27
- <name>Jon</name>
28
- <initials>JM</initials>
29
- </person>
30
- <role>Owner</role>
31
- </membership>
32
- <membership>
33
- <id>331823</id>
34
- <person>
35
- <email>jmischo@quagility.com</email>
36
- <name>Jon Mischo</name>
37
- <initials>JM</initials>
38
- </person>
39
- <role>Owner</role>
40
- </membership>
41
- <membership>
42
- <id>331832</id>
43
- <person>
44
- <email>pivotal-tracker-api-gem@quagility.com</email>
45
- <name>Test Suite Access</name>
46
- <initials>TEST</initials>
47
- </person>
48
- <role>Member</role>
49
- </membership>
50
- </memberships>
51
- <integrations>
52
- </integrations>
53
- </project>
@@ -1,46 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <story>
3
- <id type="integer">4460038</id>
4
- <project_id type="integer">102622</project_id>
5
- <story_type>feature</story_type>
6
- <url>http://www.pivotaltracker.com/story/show/4460038</url>
7
- <estimate type="integer">1</estimate>
8
- <current_state>unstarted</current_state>
9
- <description>This is a story that has comments.</description>
10
- <name>This is for comments</name>
11
- <requested_by>Jon Mischo</requested_by>
12
- <created_at type="datetime">2010/07/27 21:53:16 UTC</created_at>
13
- <updated_at type="datetime">2010/07/27 22:20:48 UTC</updated_at>
14
- <notes type="array">
15
- <note>
16
- <id type="integer">2111593</id>
17
- <text>This is a comment...whee!</text>
18
- <author>Jon</author>
19
- <noted_at type="datetime">2010/07/27 22:15:48 UTC</noted_at>
20
- </note>
21
- <note>
22
- <id type="integer">2128955</id>
23
- <text>Test note</text>
24
- <author>Test Suite Access</author>
25
- <noted_at type="datetime">2010/07/29 18:15:09 UTC</noted_at>
26
- </note>
27
- <note>
28
- <id type="integer">2128959</id>
29
- <text>Test note</text>
30
- <author>Test Suite Access</author>
31
- <noted_at type="datetime">2010/07/29 18:16:12 UTC</noted_at>
32
- </note>
33
- <note>
34
- <id type="integer">2129077</id>
35
- <text>Test note</text>
36
- <author>Test Suite Access</author>
37
- <noted_at type="datetime">2010/07/29 18:22:26 UTC</noted_at>
38
- </note>
39
- <note>
40
- <id type="integer">2129374</id>
41
- <text>Test note</text>
42
- <author>Test Suite Access</author>
43
- <noted_at type="datetime">2010/07/29 18:55:44 UTC</noted_at>
44
- </note>
45
- </notes>
46
- </story>
@@ -1,32 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <story>
3
- <id type="integer">4460598</id>
4
- <project_id type="integer">102622</project_id>
5
- <story_type>feature</story_type>
6
- <url>http://www.pivotaltracker.com/story/show/4460598</url>
7
- <estimate type="integer">3</estimate>
8
- <current_state>unstarted</current_state>
9
- <description>This story has attachments.</description>
10
- <name>Story with attachments</name>
11
- <requested_by>Jon Mischo</requested_by>
12
- <created_at type="datetime">2010/07/27 22:33:13 UTC</created_at>
13
- <updated_at type="datetime">2010/07/27 22:33:28 UTC</updated_at>
14
- <attachments type="array">
15
- <attachment>
16
- <id type="integer">491576</id>
17
- <filename>LICENSE</filename>
18
- <description></description>
19
- <uploaded_by>Jon</uploaded_by>
20
- <uploaded_at type="datetime">2010/07/27 22:34:23 UTC</uploaded_at>
21
- <url>http://www.pivotaltracker.com/resource/download/491576</url>
22
- </attachment>
23
- <attachment>
24
- <id type="integer">493019</id>
25
- <filename>README.rdoc</filename>
26
- <description>README file from api gem</description>
27
- <uploaded_by>Jon</uploaded_by>
28
- <uploaded_at type="datetime">2010/07/28 15:16:18 UTC</uploaded_at>
29
- <url>http://www.pivotaltracker.com/resource/download/493019</url>
30
- </attachment>
31
- </attachments>
32
- </story>
@@ -1,48 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <story>
3
- <id type="integer">4473735</id>
4
- <project_id type="integer">102622</project_id>
5
- <story_type>feature</story_type>
6
- <url>http://www.pivotaltracker.com/story/show/4473735</url>
7
- <estimate type="integer">1</estimate>
8
- <current_state>unstarted</current_state>
9
- <description></description>
10
- <name>Attachment upload test story</name>
11
- <requested_by>Jon</requested_by>
12
- <created_at type="datetime">2010/07/28 18:17:33 UTC</created_at>
13
- <updated_at type="datetime">2010/07/28 18:17:44 UTC</updated_at>
14
- <attachments type="array">
15
- <attachment>
16
- <id type="integer">495851</id>
17
- <filename>LICENSE</filename>
18
- <description></description>
19
- <uploaded_by>Test Suite Access</uploaded_by>
20
- <uploaded_at type="datetime">2010/07/29 19:07:19 UTC</uploaded_at>
21
- <url>http://www.pivotaltracker.com/resource/download/495851</url>
22
- </attachment>
23
- <attachment>
24
- <id type="integer">495856</id>
25
- <filename>LICENSE</filename>
26
- <description></description>
27
- <uploaded_by>Test Suite Access</uploaded_by>
28
- <uploaded_at type="datetime">2010/07/29 19:09:27 UTC</uploaded_at>
29
- <url>http://www.pivotaltracker.com/resource/download/495856</url>
30
- </attachment>
31
- <attachment>
32
- <id type="integer">495858</id>
33
- <filename>LICENSE</filename>
34
- <description></description>
35
- <uploaded_by>Test Suite Access</uploaded_by>
36
- <uploaded_at type="datetime">2010/07/29 19:11:44 UTC</uploaded_at>
37
- <url>http://www.pivotaltracker.com/resource/download/495858</url>
38
- </attachment>
39
- <attachment>
40
- <id type="integer">495863</id>
41
- <filename>LICENSE</filename>
42
- <description></description>
43
- <uploaded_by>Test Suite Access</uploaded_by>
44
- <uploaded_at type="datetime">2010/07/29 19:13:06 UTC</uploaded_at>
45
- <url>http://www.pivotaltracker.com/resource/download/495863</url>
46
- </attachment>
47
- </attachments>
48
- </story>