gitnetworkitis 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/Gemfile +6 -5
  2. data/Gemfile.lock +26 -20
  3. data/VERSION +1 -1
  4. data/get_token.rb +40 -0
  5. data/gitnetworkitis.gemspec +41 -76
  6. data/lib/gitnetworkitis/base.rb +10 -40
  7. data/lib/gitnetworkitis/batch_response.rb +24 -0
  8. data/lib/gitnetworkitis/branch.rb +10 -31
  9. data/lib/gitnetworkitis/commit.rb +2 -5
  10. data/lib/gitnetworkitis/commit_getter.rb +50 -0
  11. data/lib/gitnetworkitis/getter.rb +64 -0
  12. data/lib/gitnetworkitis/json_helper.rb +24 -0
  13. data/lib/gitnetworkitis/repository.rb +11 -30
  14. data/lib/gitnetworkitis.rb +10 -5
  15. data/spec/base_spec.rb +13 -20
  16. data/spec/branch_spec.rb +63 -19
  17. data/spec/getter_spec.rb +36 -0
  18. data/spec/github_config.yml.example +2 -0
  19. data/spec/repository_spec.rb +27 -39
  20. data/spec/spec_helper.rb +3 -64
  21. data/spec/support/vcr_setup.rb +8 -0
  22. data/spec/vcr_cassettes/all_branches.json +67 -0
  23. data/spec/vcr_cassettes/all_repos.json +67 -0
  24. data/spec/vcr_cassettes/bad_creds.json +58 -0
  25. data/spec/vcr_cassettes/find_repo.json +67 -0
  26. data/spec/vcr_cassettes/spec-branch-1_commits.json +2277 -0
  27. data/spec/vcr_cassettes/spec-branch-1_since_date.json +1 -0
  28. data/spec/vcr_cassettes/spec-branch-1_since_sha.json +67 -0
  29. data/spec/vcr_cassettes/spec-branch-2_commits.json +70 -0
  30. data/spec/vcr_cassettes/spec-branch-3_commits.json +67 -0
  31. metadata +84 -124
  32. data/lib/gitnetworkitis/network_data.rb +0 -66
  33. data/lib/gitnetworkitis/network_meta.rb +0 -17
  34. data/spec/commit_spec.rb +0 -8
  35. data/spec/network_data_spec.rb +0 -153
  36. data/spec/network_meta_spec.rb +0 -59
  37. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=0.json +0 -1
  38. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=1.json +0 -1
  39. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=2.json +0 -1
  40. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=3.json +0 -1
  41. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=4.json +0 -1
  42. data/spec/responses/branch_pages/turingstudio_loupe_51ac36280d2dfe16c37b66ef344859c9c714c8e1?page=5.json +0 -1
  43. data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=0.json +0 -1
  44. data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=1.json +0 -1
  45. data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=2.json +0 -1
  46. data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=3.json +0 -1
  47. data/spec/responses/branch_pages/turingstudio_loupe_bec7b23dc57b14d89fa2829e8c32a108a18e7248?page=4.json +0 -1
  48. data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=0.json +0 -1
  49. data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=1.json +0 -1
  50. data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=2.json +0 -1
  51. data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=3.json +0 -1
  52. data/spec/responses/branch_pages/turingstudio_loupe_c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e?page=4.json +0 -1
  53. data/spec/responses/girlambition/0-500.json +0 -1
  54. data/spec/responses/girlambition/1002-1502.json +0 -1
  55. data/spec/responses/girlambition/1503-2003.json +0 -1
  56. data/spec/responses/girlambition/2004-2504.json +0 -1
  57. data/spec/responses/girlambition/2505-3005.json +0 -1
  58. data/spec/responses/girlambition/3006-3506.json +0 -1
  59. data/spec/responses/girlambition/3507-4007.json +0 -1
  60. data/spec/responses/girlambition/4008-4508.json +0 -1
  61. data/spec/responses/girlambition/4509-4999.json +0 -1
  62. data/spec/responses/girlambition/501-1001.json +0 -1
  63. data/spec/responses/girlambition/repos_show_turingstudio_website-girlambition_branches.json +0 -1
  64. data/spec/responses/girlambition/turingstudio_website-girlambition_network_meta.json +0 -1
  65. data/spec/responses/loupe/repos_show_turingstudio_loupe.json +0 -1
  66. data/spec/responses/loupe/repos_show_turingstudio_loupe_branches.json +0 -1
  67. data/spec/responses/loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=1&end=5.json +0 -1
  68. data/spec/responses/loupe/turingstudio_loupe_068161e2c05a6b8029a7eb410dd27b1dfa531338?start=130.json +0 -1
  69. data/spec/responses/loupe/turingstudio_loupe_branch.json +0 -1
  70. data/spec/responses/loupe/turingstudio_loupe_network_data.json +0 -1
  71. data/spec/responses/loupe/turingstudio_loupe_network_meta.json +0 -1
  72. data/spec/responses/repos_show_jcoutu.json +0 -1
  73. data/spec/responses/repos_watched_jcoutu.json +0 -1
@@ -1,153 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Gitnetworkitis::NetworkData" do
4
-
5
- before :each do
6
- fake_responses
7
- end
8
-
9
- context "find" do
10
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
11
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "loupe"})}
12
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
13
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "loupe", :network_meta => network_meta})}
14
-
15
- before :each do
16
- fake_responses
17
- end
18
-
19
- it "should set the commits array" do
20
- test.commits.should_not be_empty
21
- test.commits.first.parents.should be_empty
22
- test.commits.length.should == 134
23
- end
24
-
25
- it "should set the network_meta" do
26
- test.network_meta.should == network_meta
27
- end
28
- end
29
-
30
- context "find with start set and no end" do
31
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
32
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "loupe"})}
33
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
34
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "loupe", :network_meta => network_meta, :start => 130})}
35
-
36
- before :each do
37
- fake_responses
38
- end
39
-
40
- it "should set the commits array" do
41
- test.commits.should_not be_empty
42
- test.commits.first.parents.should_not be_empty
43
- test.commits.length.should == 4
44
- end
45
-
46
- it "should set the network_meta" do
47
- test.network_meta.should == network_meta
48
- end
49
- end
50
-
51
- context "find with start set greater than end" do
52
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
53
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "loupe"})}
54
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
55
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "loupe", :network_meta => network_meta, :start => 130, :end => 1})}
56
-
57
- before :each do
58
- fake_responses
59
- end
60
-
61
- it "should set the commits array" do
62
- test.commits.should be_empty
63
- end
64
-
65
- it "should set the network_meta" do
66
- test.network_meta.should == network_meta
67
- end
68
- end
69
-
70
- context "find with start and end set" do
71
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
72
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "loupe"})}
73
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
74
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "loupe", :network_meta => network_meta, :start => 1, :end => 5})}
75
-
76
- before :each do
77
- fake_responses
78
- end
79
-
80
- it "should set the commits array" do
81
- test.commits.should_not be_empty
82
- test.commits.first.parents.should_not be_empty
83
- test.commits.length.should == 5
84
- end
85
-
86
- it "should set the network_meta" do
87
- test.network_meta.should == network_meta
88
- end
89
- end
90
-
91
- context "find with missing aurgument" do
92
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
93
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "loupe"})}
94
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
95
-
96
- before :each do
97
- fake_responses
98
- end
99
-
100
- it "should raise exception if missing owner, repo, and Gitnetworkitis:NetworkMeta" do
101
- lambda {network_data.find({:start => 1, :end => 5})}.should raise_error "You must provide an Owner, Repo and Gitnetworkitis:NetworkMeta"
102
- end
103
-
104
- it "should raise exception if Gitnetworkitis:NetworkMeta" do
105
- lambda {network_data.find({:owner=>"turingstudio", :repo => "loupe", :start => 1, :end => 5})}.should raise_error "You must provide an Owner, Repo and Gitnetworkitis:NetworkMeta"
106
- end
107
-
108
- it "should raise exception if missing owner" do
109
- lambda {network_data.find({:repo => "loupe", :network_meta => network_meta, :start => 1, :end => 5})}.should raise_error "You must provide an Owner, Repo and Gitnetworkitis:NetworkMeta"
110
- end
111
-
112
- it "should raise exception if missing repo" do
113
- lambda {network_data.find({:owner=>"turingstudio", :network_meta => network_meta, :start => 1, :end => 5})}.should raise_error "You must provide an Owner, Repo and Gitnetworkitis:NetworkMeta"
114
- end
115
- end
116
-
117
-
118
- context "find on repo with large amount of commits" do
119
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
120
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "website-girlambition"})}
121
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
122
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "website-girlambition", :network_meta => network_meta})}
123
-
124
- before :each do
125
- fake_responses
126
- end
127
-
128
- it "should set the commits array" do
129
- test.commits.should_not be_empty
130
- test.commits.first.parents.should be_empty
131
- test.commits.length.should == 5000
132
- end
133
- end
134
-
135
- context "find on repo with large amount of commits" do
136
- let(:tester){GitNetworkitis::NetworkMeta.new(@username, @token)}
137
- let(:network_meta){tester.find({:owner=>"turingstudio", :repo => "website-girlambition"})}
138
- let(:network_data){GitNetworkitis::NetworkData.new(@username, @token)}
139
- let(:test){network_data.find({:owner=>"turingstudio", :repo => "website-girlambition", :network_meta => network_meta})}
140
-
141
- before :each do
142
- fake_responses
143
- end
144
-
145
- it "should set the commits array" do
146
- test.commits.should_not be_empty
147
- test.commits.first.parents.should be_empty
148
- test.commits.length.should == 5000
149
- end
150
- end
151
-
152
-
153
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Gitnetworkitis::NetworkMeta" do
4
- context "find" do
5
- let(:network_meta){GitNetworkitis::NetworkMeta.new(@username, @token)}
6
- let(:test){network_meta.find({:owner=>"turingstudio", :repo => "loupe"})}
7
-
8
- before :each do
9
- fake_responses
10
- end
11
-
12
- it "should set the nethash" do
13
- test = network_meta.find({:owner=>"turingstudio", :repo => "loupe"})
14
- test.nethash.should == "068161e2c05a6b8029a7eb410dd27b1dfa531338"
15
- end
16
-
17
- it "should set the date array" do
18
- test.dates.should_not be_empty
19
- test.dates.first.should == "2010-10-08"
20
- test.dates.last.should == "2010-12-28"
21
- end
22
-
23
- it "should set focus" do
24
- test.focus.should == 133
25
- end
26
-
27
- it "should set the users array" do
28
- test.users.should_not == nil
29
- test.users.length.should == 1
30
- test.users[0]["repo"].should == "loupe"
31
- test.users[0]["heads"].length.should == 3
32
- end
33
-
34
- it "should set blocks" do
35
- test.blocks.should_not == nil
36
- test.blocks.length.should == 1
37
- end
38
-
39
- it "should set spacemap" do
40
- test.spacemap.should_not == nil
41
- test.spacemap.length.should == 3
42
- end
43
-
44
- it "should set branches to a collection of branches for a specific repo" do
45
- test.branches.should_not == nil
46
- test.branches.length.should == 3
47
- end
48
-
49
- context "error returns" do
50
-
51
- it "raise an exception when the repo is not found" do
52
- lambda {network_meta.find({:owner=>"bad_owner", :repo => "bad_repo"})}.should raise_error "Unable to find Github Repository"
53
- end
54
-
55
-
56
-
57
- end
58
- end
59
- end
@@ -1 +0,0 @@
1
- {"commits":[{"parents":[{"id":"4556c68b75704c4c6bcd75b6727c31572a685b50"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/51ac36280d2dfe16c37b66ef344859c9c714c8e1","id":"51ac36280d2dfe16c37b66ef344859c9c714c8e1","committed_date":"2010-12-21T15:33:26-08:00","authored_date":"2010-12-21T15:33:26-08:00","message":"adds sad path for signup, creates small issue with error display (account name field not highlighted when invalid)","tree":"7553267e70d292a2cf2b358d92889dd8ddc6abec","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"a52ed073396c126c72ba78bf396bf4a3a2a577a5"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4556c68b75704c4c6bcd75b6727c31572a685b50","id":"4556c68b75704c4c6bcd75b6727c31572a685b50","committed_date":"2010-12-21T10:57:23-08:00","authored_date":"2010-12-21T10:57:23-08:00","message":"adds functional happy path signup","tree":"ebe10e40e05f16d455cf10b6a0b64ebe6c2e72c5","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2caecf6eda00fd92ab284f1b193dceff30674e3a"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/a52ed073396c126c72ba78bf396bf4a3a2a577a5","id":"a52ed073396c126c72ba78bf396bf4a3a2a577a5","committed_date":"2010-12-20T17:16:33-08:00","authored_date":"2010-12-20T17:16:33-08:00","message":"adds initial signup scenario with a functional form that isn't wired to anything yet, fixes accounts_index route to only handle GET requests","tree":"e6dcaad2cd79c3d3d265ebb35f06d078fc4844e4","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"1a34b696cc7939580d3c9634523feb9d1f985c01"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/2caecf6eda00fd92ab284f1b193dceff30674e3a","id":"2caecf6eda00fd92ab284f1b193dceff30674e3a","committed_date":"2010-12-17T16:46:55-08:00","authored_date":"2010-12-17T16:46:55-08:00","message":"changes IterationHours#hours and #hours_with_billing to #total_hours and #total_hours_with_more_billing (more accurate)","tree":"5beddd75dd92333e1939fc7f27f5f59f7313a46d","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"611b5e86d16d2d2f986e02282254a20d2a89fb2b"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/1a34b696cc7939580d3c9634523feb9d1f985c01","id":"1a34b696cc7939580d3c9634523feb9d1f985c01","committed_date":"2010-12-17T14:55:57-08:00","authored_date":"2010-12-17T14:55:57-08:00","message":"more clean up of IterationHours, IterationSummary, and Project","tree":"260c7559d39640c08d40dfd73ccb683fd2e0aa00","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"dc01d9759c577bbd149a245220db388e4134774d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/611b5e86d16d2d2f986e02282254a20d2a89fb2b","id":"611b5e86d16d2d2f986e02282254a20d2a89fb2b","committed_date":"2010-12-17T14:34:53-08:00","authored_date":"2010-12-17T14:34:53-08:00","message":"cleans up, DRYs, and simplifies IterationSummary#hours_with_billing and #hours","tree":"a83e001a886bf39e747a526403e627b3cef52047","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4a209859c330b922ef8b6b5adbddab9d23d70941"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/dc01d9759c577bbd149a245220db388e4134774d","id":"dc01d9759c577bbd149a245220db388e4134774d","committed_date":"2010-12-17T12:07:40-08:00","authored_date":"2010-12-17T12:07:40-08:00","message":"displays a helpful no hours reported message on iteration summaries with no harvest hours","tree":"143496ba6af1b72b6e83a46093202c46f0fc33eb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4a209859c330b922ef8b6b5adbddab9d23d70941","id":"4a209859c330b922ef8b6b5adbddab9d23d70941","committed_date":"2010-12-17T10:29:08-08:00","authored_date":"2010-12-17T10:29:08-08:00","message":"adds warning message about hours\/billing inaccuracy when viewing the current iteration's iteration summary","tree":"af8bb9ee918a74228cf721b842137d7404e307ed","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"72061e400091a7689acc9d47d02cd6615f1f608c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d","id":"29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d","committed_date":"2010-12-16T16:11:58-08:00","authored_date":"2010-12-16T16:11:58-08:00","message":"moves harvest connection info onto Project from HarvestProject","tree":"8810e6cd257dc34337e73be102bb52bc4123bd4c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"11b929dea3cbbcbc120be894899dd0c292afb4a9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/72061e400091a7689acc9d47d02cd6615f1f608c","id":"72061e400091a7689acc9d47d02cd6615f1f608c","committed_date":"2010-12-16T14:52:00-08:00","authored_date":"2010-12-16T14:52:00-08:00","message":"disables updating pivotal projects through the api as a more detailed solution is needed and changing to storing the tokens on Projects makes the current solution unworkable","tree":"3c3a767ddc8c8853f45fe7dbb95c16598b911fd3","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"68394832df7968b8453e9c4a9d7512341623791b"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/11b929dea3cbbcbc120be894899dd0c292afb4a9","id":"11b929dea3cbbcbc120be894899dd0c292afb4a9","committed_date":"2010-12-16T13:52:34-08:00","authored_date":"2010-12-16T13:52:34-08:00","message":"moves pivotal token from a single yaml file to be on Loupe Projects (more sustainable)","tree":"6d6dffa9878aa5e83d31ef9188e9d3add4816970","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"7986c4bbcdcb36ba79011cd99c487aa1abacca35"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/68394832df7968b8453e9c4a9d7512341623791b","id":"68394832df7968b8453e9c4a9d7512341623791b","committed_date":"2010-12-15T22:32:19-08:00","authored_date":"2010-12-15T22:32:19-08:00","message":"fixes bug in ActivityImporter where it wasn't correctly judging the last activity imported (resulting in some duplicates), adds APIImporter class for holding all of the API Import scripts that need to be run on a schedule (with the first one, .import_pivotal_activities)","tree":"f859876ece4ae4804f5438ac34f0f5944bd3624f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"fa84a5871029fb3f0921d566e6e6300b62632f8f"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/7986c4bbcdcb36ba79011cd99c487aa1abacca35","id":"7986c4bbcdcb36ba79011cd99c487aa1abacca35","committed_date":"2010-12-15T14:58:13-08:00","authored_date":"2010-12-15T14:58:13-08:00","message":"refactors pivotal activity import logic into ActivityImporter class for clarity","tree":"420bdaac80806a9acc024af63cc59871448d4e23","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"9767e95cc71564d19a028ef20b6633d69d99d70c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/fa84a5871029fb3f0921d566e6e6300b62632f8f","id":"fa84a5871029fb3f0921d566e6e6300b62632f8f","committed_date":"2010-12-14T17:24:49-08:00","authored_date":"2010-12-14T17:24:49-08:00","message":"adds patched pivotal-tracker gem to vendor\/gems (correctly handles PivotalTracker::Activity.all's :occurred_since_date filter), changes PivotalProject#update_activities_from_api! to stop importing when it runs into an activity it already has","tree":"c65f8be930933b66ff577b1655cbbfb5a96a2c9b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"18dfc5904f41cd7cc4782f796bebd9c64a6320ab"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/9767e95cc71564d19a028ef20b6633d69d99d70c","id":"9767e95cc71564d19a028ef20b6633d69d99d70c","committed_date":"2010-12-10T16:30:13-08:00","authored_date":"2010-12-10T16:30:13-08:00","message":"finishes the refactoring of getting and building the stories for an iteration summary and greatly improves the tests around it","tree":"5bc0b0096b159959f587722823149d2063c86e1e","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"69292338c1fb80bc5868a13a2a4f12b061556615"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/18dfc5904f41cd7cc4782f796bebd9c64a6320ab","id":"18dfc5904f41cd7cc4782f796bebd9c64a6320ab","committed_date":"2010-12-09T15:16:43-08:00","authored_date":"2010-12-09T15:16:43-08:00","message":"refactors some of the iteration summary story logic into a new, more cohesive class","tree":"7cdf17771593058350932121589cbcaa5f134a2b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"15edaaed210afa91b2eeef4e8d93686aaaf92090"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/69292338c1fb80bc5868a13a2a4f12b061556615","id":"69292338c1fb80bc5868a13a2a4f12b061556615","committed_date":"2010-12-09T13:21:48-08:00","authored_date":"2010-12-09T13:21:48-08:00","message":"displays stories created during an iteration as such even if they have a different end-of-iteration state (both are shown)","tree":"ec7605590e939023d076c3aedb3be1bca6adf73c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"3507a0428d895403c6a1952570e816792bc7e6f9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/15edaaed210afa91b2eeef4e8d93686aaaf92090","id":"15edaaed210afa91b2eeef4e8d93686aaaf92090","committed_date":"2010-12-09T10:24:02-08:00","authored_date":"2010-12-09T10:24:02-08:00","message":"removes old IterationSummary#stories method, fixes #stories? to account for created ones (and simplifies the implementation), and cleans up the iteration summary cukes a bit","tree":"15d870860e252fabfe0387028675136d321e657a","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"49f45d3671940cc27a801bdc003a8f37b482b38f"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/3507a0428d895403c6a1952570e816792bc7e6f9","id":"3507a0428d895403c6a1952570e816792bc7e6f9","committed_date":"2010-12-08T16:02:42-08:00","authored_date":"2010-12-08T16:02:42-08:00","message":"updates project gems","tree":"d010b7d8521cd77c6948bd3951c4c1256bca8bc0","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/49f45d3671940cc27a801bdc003a8f37b482b38f","id":"49f45d3671940cc27a801bdc003a8f37b482b38f","committed_date":"2010-12-08T15:57:44-08:00","authored_date":"2010-12-08T15:48:44-08:00","message":"implements the new iteration summary stories display model so you can actually see it (with cukes, but everything's a bit rough and ugly)","tree":"63d856c16286454c10c6b9087aea4863bced4f79","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"da8ef6f4258295d30093afa52361729d1fdd43f1"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e","id":"c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e","committed_date":"2010-12-08T11:50:43-08:00","authored_date":"2010-12-08T11:50:43-08:00","message":"Adds email notification when an invite is accepted by a user.","tree":"9adac4f7eaf78f4d4c13b1048d0cc9da258bdad7","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"9d601bb21297dcf0f904cb4071ca4132857167e0"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/da8ef6f4258295d30093afa52361729d1fdd43f1","id":"da8ef6f4258295d30093afa52361729d1fdd43f1","committed_date":"2010-12-08T09:53:21-08:00","authored_date":"2010-12-08T09:53:21-08:00","message":"Removing spec files no longer needed","tree":"dfec714a1693459a48b887fb23b52665ba84bc99","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837"},{"id":"9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/9d601bb21297dcf0f904cb4071ca4132857167e0","id":"9d601bb21297dcf0f904cb4071ca4132857167e0","committed_date":"2010-12-07T19:06:29-08:00","authored_date":"2010-12-07T19:06:29-08:00","message":"Merge branch 'master' of github.com:turingstudio\/loupe","tree":"4073f5a3192194b319532093ec70a3849f20201a","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"61acd6371d9aa30642654a885f711e8282a11d0d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837","id":"0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837","committed_date":"2010-12-07T19:06:10-08:00","authored_date":"2010-12-07T19:06:10-08:00","message":"Makes julians machine work again. There seems to be a bug in cucumber 10 and capybara","tree":"eec12b57a3a700bef54b5057a6f0064f605240db","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"61acd6371d9aa30642654a885f711e8282a11d0d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe","id":"9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe","committed_date":"2010-12-07T15:54:02-08:00","authored_date":"2010-12-07T15:54:02-08:00","message":"IterationSummary#stories_snapshot handles nil stories (which were most likely deleted)","tree":"73f7bdb0e78335f482c675087a7ee217dea05e6b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c"},{"id":"08040db5ff416d09f3626faa3c097aae64658da3"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/61acd6371d9aa30642654a885f711e8282a11d0d","id":"61acd6371d9aa30642654a885f711e8282a11d0d","committed_date":"2010-12-06T21:45:30-08:00","authored_date":"2010-12-06T21:45:30-08:00","message":"Merge branch 'invite_project_memeber'","tree":"0d34dcabb4471e6f07cde0b133808baae7e8e368","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"c51c166bba28a5854dd2337d8733a82f55877a03"},{"id":"bf36edd1ca755710c80deb6b24469f706fd7519d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c","id":"d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c","committed_date":"2010-12-06T21:42:22-08:00","authored_date":"2010-12-06T21:42:22-08:00","message":"Merge branch 'master' of github.com:turingstudio\/loupe","tree":"50ea9513baca97ac64e8bdd4072745c82ecddb31","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"8df3a76b54feff5250c2ee79b6d40487fbe595e9"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/08040db5ff416d09f3626faa3c097aae64658da3","id":"08040db5ff416d09f3626faa3c097aae64658da3","committed_date":"2010-12-06T21:42:06-08:00","authored_date":"2010-12-06T21:42:06-08:00","message":"Fixes project member invite cukes after project role refactor","tree":"2e250c9b2e4ea55f142f60f2838883c14ba2c208","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"902f71ec25ea768a3a5686502b746184fa5f2965"},{"id":"c51c166bba28a5854dd2337d8733a82f55877a03"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/8df3a76b54feff5250c2ee79b6d40487fbe595e9","id":"8df3a76b54feff5250c2ee79b6d40487fbe595e9","committed_date":"2010-12-06T21:05:33-08:00","authored_date":"2010-12-06T21:05:33-08:00","message":"Merge issue from refactor","tree":"c36b2789d7560b05dd1c06decead684751585c5b","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"6a263c9632ba5c133d6b30166622aa3802b9584d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/c51c166bba28a5854dd2337d8733a82f55877a03","id":"c51c166bba28a5854dd2337d8733a82f55877a03","committed_date":"2010-12-06T20:59:17-08:00","authored_date":"2010-12-06T20:59:17-08:00","message":"Fixes specs for refactor","tree":"2b64de10390203692c0cad6f4c7cff69e48f8911","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/6a263c9632ba5c133d6b30166622aa3802b9584d","id":"6a263c9632ba5c133d6b30166622aa3802b9584d","committed_date":"2010-12-06T20:50:58-08:00","authored_date":"2010-12-06T20:50:58-08:00","message":"Fixes all but project member invites cukes after refactor","tree":"dbe0dedadfd1d0489105655eb92e194cafe9d038","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"acb83e283efa8d825813ff0ea1fd4ae0cf33e292"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/bf36edd1ca755710c80deb6b24469f706fd7519d","id":"bf36edd1ca755710c80deb6b24469f706fd7519d","committed_date":"2010-12-06T17:30:23-08:00","authored_date":"2010-12-06T17:30:23-08:00","message":"IterationSummary#stories_snapshot correctly pieces together the end-of-iteration state info for all stories","tree":"98c40321f72e7f6718dcf43847ae514e58dac910","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/acb83e283efa8d825813ff0ea1fd4ae0cf33e292","id":"acb83e283efa8d825813ff0ea1fd4ae0cf33e292","committed_date":"2010-12-06T14:14:05-08:00","authored_date":"2010-12-06T14:14:05-08:00","message":"fixes PivotalProject#update_activities_from_api! to save the occurred_at date","tree":"b6cd6358a318388c83466a049c47e44ce2c6f186","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2ce7385f58c80ebe6333089ca8a5ba4cd4562442"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/902f71ec25ea768a3a5686502b746184fa5f2965","id":"902f71ec25ea768a3a5686502b746184fa5f2965","committed_date":"2010-12-06T14:05:40-08:00","authored_date":"2010-12-06T14:05:40-08:00","message":"Project Member invites allow role selection","tree":"b639d14bab941ac8576d9446e295fe5b78a12c45","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"120c30e4a9e359daab3ca35173e25c1fd36468a9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/ae64d9377f8e90e10090ac63e1eb6e3095a0e646","id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646","committed_date":"2010-12-03T14:15:28-08:00","authored_date":"2010-12-03T14:15:28-08:00","message":"adds PivotalActivity to store pivotal activity info we care about, adds naive method for grabbing the last 100 pivotal activities","tree":"2e7fd026b0ca0bf79bfce444f92b054531b8c907","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}}]}
@@ -1 +0,0 @@
1
- {"commits":[{"parents":[{"id":"4556c68b75704c4c6bcd75b6727c31572a685b50"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/51ac36280d2dfe16c37b66ef344859c9c714c8e1","id":"51ac36280d2dfe16c37b66ef344859c9c714c8e1","committed_date":"2010-12-21T15:33:26-08:00","authored_date":"2010-12-21T15:33:26-08:00","message":"adds sad path for signup, creates small issue with error display (account name field not highlighted when invalid)","tree":"7553267e70d292a2cf2b358d92889dd8ddc6abec","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"a52ed073396c126c72ba78bf396bf4a3a2a577a5"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4556c68b75704c4c6bcd75b6727c31572a685b50","id":"4556c68b75704c4c6bcd75b6727c31572a685b50","committed_date":"2010-12-21T10:57:23-08:00","authored_date":"2010-12-21T10:57:23-08:00","message":"adds functional happy path signup","tree":"ebe10e40e05f16d455cf10b6a0b64ebe6c2e72c5","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2caecf6eda00fd92ab284f1b193dceff30674e3a"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/a52ed073396c126c72ba78bf396bf4a3a2a577a5","id":"a52ed073396c126c72ba78bf396bf4a3a2a577a5","committed_date":"2010-12-20T17:16:33-08:00","authored_date":"2010-12-20T17:16:33-08:00","message":"adds initial signup scenario with a functional form that isn't wired to anything yet, fixes accounts_index route to only handle GET requests","tree":"e6dcaad2cd79c3d3d265ebb35f06d078fc4844e4","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"1a34b696cc7939580d3c9634523feb9d1f985c01"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/2caecf6eda00fd92ab284f1b193dceff30674e3a","id":"2caecf6eda00fd92ab284f1b193dceff30674e3a","committed_date":"2010-12-17T16:46:55-08:00","authored_date":"2010-12-17T16:46:55-08:00","message":"changes IterationHours#hours and #hours_with_billing to #total_hours and #total_hours_with_more_billing (more accurate)","tree":"5beddd75dd92333e1939fc7f27f5f59f7313a46d","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"611b5e86d16d2d2f986e02282254a20d2a89fb2b"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/1a34b696cc7939580d3c9634523feb9d1f985c01","id":"1a34b696cc7939580d3c9634523feb9d1f985c01","committed_date":"2010-12-17T14:55:57-08:00","authored_date":"2010-12-17T14:55:57-08:00","message":"more clean up of IterationHours, IterationSummary, and Project","tree":"260c7559d39640c08d40dfd73ccb683fd2e0aa00","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"dc01d9759c577bbd149a245220db388e4134774d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/611b5e86d16d2d2f986e02282254a20d2a89fb2b","id":"611b5e86d16d2d2f986e02282254a20d2a89fb2b","committed_date":"2010-12-17T14:34:53-08:00","authored_date":"2010-12-17T14:34:53-08:00","message":"cleans up, DRYs, and simplifies IterationSummary#hours_with_billing and #hours","tree":"a83e001a886bf39e747a526403e627b3cef52047","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4a209859c330b922ef8b6b5adbddab9d23d70941"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/dc01d9759c577bbd149a245220db388e4134774d","id":"dc01d9759c577bbd149a245220db388e4134774d","committed_date":"2010-12-17T12:07:40-08:00","authored_date":"2010-12-17T12:07:40-08:00","message":"displays a helpful no hours reported message on iteration summaries with no harvest hours","tree":"143496ba6af1b72b6e83a46093202c46f0fc33eb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4a209859c330b922ef8b6b5adbddab9d23d70941","id":"4a209859c330b922ef8b6b5adbddab9d23d70941","committed_date":"2010-12-17T10:29:08-08:00","authored_date":"2010-12-17T10:29:08-08:00","message":"adds warning message about hours\/billing inaccuracy when viewing the current iteration's iteration summary","tree":"af8bb9ee918a74228cf721b842137d7404e307ed","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"72061e400091a7689acc9d47d02cd6615f1f608c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d","id":"29cb9c47f2eb1f1d0f2a14ea9e9cbd998523e89d","committed_date":"2010-12-16T16:11:58-08:00","authored_date":"2010-12-16T16:11:58-08:00","message":"moves harvest connection info onto Project from HarvestProject","tree":"8810e6cd257dc34337e73be102bb52bc4123bd4c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"11b929dea3cbbcbc120be894899dd0c292afb4a9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/72061e400091a7689acc9d47d02cd6615f1f608c","id":"72061e400091a7689acc9d47d02cd6615f1f608c","committed_date":"2010-12-16T14:52:00-08:00","authored_date":"2010-12-16T14:52:00-08:00","message":"disables updating pivotal projects through the api as a more detailed solution is needed and changing to storing the tokens on Projects makes the current solution unworkable","tree":"3c3a767ddc8c8853f45fe7dbb95c16598b911fd3","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"68394832df7968b8453e9c4a9d7512341623791b"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/11b929dea3cbbcbc120be894899dd0c292afb4a9","id":"11b929dea3cbbcbc120be894899dd0c292afb4a9","committed_date":"2010-12-16T13:52:34-08:00","authored_date":"2010-12-16T13:52:34-08:00","message":"moves pivotal token from a single yaml file to be on Loupe Projects (more sustainable)","tree":"6d6dffa9878aa5e83d31ef9188e9d3add4816970","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"7986c4bbcdcb36ba79011cd99c487aa1abacca35"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/68394832df7968b8453e9c4a9d7512341623791b","id":"68394832df7968b8453e9c4a9d7512341623791b","committed_date":"2010-12-15T22:32:19-08:00","authored_date":"2010-12-15T22:32:19-08:00","message":"fixes bug in ActivityImporter where it wasn't correctly judging the last activity imported (resulting in some duplicates), adds APIImporter class for holding all of the API Import scripts that need to be run on a schedule (with the first one, .import_pivotal_activities)","tree":"f859876ece4ae4804f5438ac34f0f5944bd3624f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"fa84a5871029fb3f0921d566e6e6300b62632f8f"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/7986c4bbcdcb36ba79011cd99c487aa1abacca35","id":"7986c4bbcdcb36ba79011cd99c487aa1abacca35","committed_date":"2010-12-15T14:58:13-08:00","authored_date":"2010-12-15T14:58:13-08:00","message":"refactors pivotal activity import logic into ActivityImporter class for clarity","tree":"420bdaac80806a9acc024af63cc59871448d4e23","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"9767e95cc71564d19a028ef20b6633d69d99d70c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/fa84a5871029fb3f0921d566e6e6300b62632f8f","id":"fa84a5871029fb3f0921d566e6e6300b62632f8f","committed_date":"2010-12-14T17:24:49-08:00","authored_date":"2010-12-14T17:24:49-08:00","message":"adds patched pivotal-tracker gem to vendor\/gems (correctly handles PivotalTracker::Activity.all's :occurred_since_date filter), changes PivotalProject#update_activities_from_api! to stop importing when it runs into an activity it already has","tree":"c65f8be930933b66ff577b1655cbbfb5a96a2c9b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"18dfc5904f41cd7cc4782f796bebd9c64a6320ab"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/9767e95cc71564d19a028ef20b6633d69d99d70c","id":"9767e95cc71564d19a028ef20b6633d69d99d70c","committed_date":"2010-12-10T16:30:13-08:00","authored_date":"2010-12-10T16:30:13-08:00","message":"finishes the refactoring of getting and building the stories for an iteration summary and greatly improves the tests around it","tree":"5bc0b0096b159959f587722823149d2063c86e1e","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"69292338c1fb80bc5868a13a2a4f12b061556615"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/18dfc5904f41cd7cc4782f796bebd9c64a6320ab","id":"18dfc5904f41cd7cc4782f796bebd9c64a6320ab","committed_date":"2010-12-09T15:16:43-08:00","authored_date":"2010-12-09T15:16:43-08:00","message":"refactors some of the iteration summary story logic into a new, more cohesive class","tree":"7cdf17771593058350932121589cbcaa5f134a2b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"15edaaed210afa91b2eeef4e8d93686aaaf92090"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/69292338c1fb80bc5868a13a2a4f12b061556615","id":"69292338c1fb80bc5868a13a2a4f12b061556615","committed_date":"2010-12-09T13:21:48-08:00","authored_date":"2010-12-09T13:21:48-08:00","message":"displays stories created during an iteration as such even if they have a different end-of-iteration state (both are shown)","tree":"ec7605590e939023d076c3aedb3be1bca6adf73c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"3507a0428d895403c6a1952570e816792bc7e6f9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/15edaaed210afa91b2eeef4e8d93686aaaf92090","id":"15edaaed210afa91b2eeef4e8d93686aaaf92090","committed_date":"2010-12-09T10:24:02-08:00","authored_date":"2010-12-09T10:24:02-08:00","message":"removes old IterationSummary#stories method, fixes #stories? to account for created ones (and simplifies the implementation), and cleans up the iteration summary cukes a bit","tree":"15d870860e252fabfe0387028675136d321e657a","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"49f45d3671940cc27a801bdc003a8f37b482b38f"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/3507a0428d895403c6a1952570e816792bc7e6f9","id":"3507a0428d895403c6a1952570e816792bc7e6f9","committed_date":"2010-12-08T16:02:42-08:00","authored_date":"2010-12-08T16:02:42-08:00","message":"updates project gems","tree":"d010b7d8521cd77c6948bd3951c4c1256bca8bc0","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/49f45d3671940cc27a801bdc003a8f37b482b38f","id":"49f45d3671940cc27a801bdc003a8f37b482b38f","committed_date":"2010-12-08T15:57:44-08:00","authored_date":"2010-12-08T15:48:44-08:00","message":"implements the new iteration summary stories display model so you can actually see it (with cukes, but everything's a bit rough and ugly)","tree":"63d856c16286454c10c6b9087aea4863bced4f79","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"da8ef6f4258295d30093afa52361729d1fdd43f1"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e","id":"c3aeb61e37f94bbb67c4f14b52c23b8e54d30d0e","committed_date":"2010-12-08T11:50:43-08:00","authored_date":"2010-12-08T11:50:43-08:00","message":"Adds email notification when an invite is accepted by a user.","tree":"9adac4f7eaf78f4d4c13b1048d0cc9da258bdad7","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"9d601bb21297dcf0f904cb4071ca4132857167e0"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/da8ef6f4258295d30093afa52361729d1fdd43f1","id":"da8ef6f4258295d30093afa52361729d1fdd43f1","committed_date":"2010-12-08T09:53:21-08:00","authored_date":"2010-12-08T09:53:21-08:00","message":"Removing spec files no longer needed","tree":"dfec714a1693459a48b887fb23b52665ba84bc99","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837"},{"id":"9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/9d601bb21297dcf0f904cb4071ca4132857167e0","id":"9d601bb21297dcf0f904cb4071ca4132857167e0","committed_date":"2010-12-07T19:06:29-08:00","authored_date":"2010-12-07T19:06:29-08:00","message":"Merge branch 'master' of github.com:turingstudio\/loupe","tree":"4073f5a3192194b319532093ec70a3849f20201a","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"61acd6371d9aa30642654a885f711e8282a11d0d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837","id":"0f8392e6c7998bd3c2d6a9cbdbdc998678ed9837","committed_date":"2010-12-07T19:06:10-08:00","authored_date":"2010-12-07T19:06:10-08:00","message":"Makes julians machine work again. There seems to be a bug in cucumber 10 and capybara","tree":"eec12b57a3a700bef54b5057a6f0064f605240db","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"61acd6371d9aa30642654a885f711e8282a11d0d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe","id":"9c2e9a10e7573d54d8a5bc8b6263f35d900bf9fe","committed_date":"2010-12-07T15:54:02-08:00","authored_date":"2010-12-07T15:54:02-08:00","message":"IterationSummary#stories_snapshot handles nil stories (which were most likely deleted)","tree":"73f7bdb0e78335f482c675087a7ee217dea05e6b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c"},{"id":"08040db5ff416d09f3626faa3c097aae64658da3"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/61acd6371d9aa30642654a885f711e8282a11d0d","id":"61acd6371d9aa30642654a885f711e8282a11d0d","committed_date":"2010-12-06T21:45:30-08:00","authored_date":"2010-12-06T21:45:30-08:00","message":"Merge branch 'invite_project_memeber'","tree":"0d34dcabb4471e6f07cde0b133808baae7e8e368","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"c51c166bba28a5854dd2337d8733a82f55877a03"},{"id":"bf36edd1ca755710c80deb6b24469f706fd7519d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c","id":"d8dcba8606e0d475e44b83a57b6ffdb0dd6ea82c","committed_date":"2010-12-06T21:42:22-08:00","authored_date":"2010-12-06T21:42:22-08:00","message":"Merge branch 'master' of github.com:turingstudio\/loupe","tree":"50ea9513baca97ac64e8bdd4072745c82ecddb31","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"8df3a76b54feff5250c2ee79b6d40487fbe595e9"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/08040db5ff416d09f3626faa3c097aae64658da3","id":"08040db5ff416d09f3626faa3c097aae64658da3","committed_date":"2010-12-06T21:42:06-08:00","authored_date":"2010-12-06T21:42:06-08:00","message":"Fixes project member invite cukes after project role refactor","tree":"2e250c9b2e4ea55f142f60f2838883c14ba2c208","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"902f71ec25ea768a3a5686502b746184fa5f2965"},{"id":"c51c166bba28a5854dd2337d8733a82f55877a03"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/8df3a76b54feff5250c2ee79b6d40487fbe595e9","id":"8df3a76b54feff5250c2ee79b6d40487fbe595e9","committed_date":"2010-12-06T21:05:33-08:00","authored_date":"2010-12-06T21:05:33-08:00","message":"Merge issue from refactor","tree":"c36b2789d7560b05dd1c06decead684751585c5b","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"6a263c9632ba5c133d6b30166622aa3802b9584d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/c51c166bba28a5854dd2337d8733a82f55877a03","id":"c51c166bba28a5854dd2337d8733a82f55877a03","committed_date":"2010-12-06T20:59:17-08:00","authored_date":"2010-12-06T20:59:17-08:00","message":"Fixes specs for refactor","tree":"2b64de10390203692c0cad6f4c7cff69e48f8911","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/6a263c9632ba5c133d6b30166622aa3802b9584d","id":"6a263c9632ba5c133d6b30166622aa3802b9584d","committed_date":"2010-12-06T20:50:58-08:00","authored_date":"2010-12-06T20:50:58-08:00","message":"Fixes all but project member invites cukes after refactor","tree":"dbe0dedadfd1d0489105655eb92e194cafe9d038","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"acb83e283efa8d825813ff0ea1fd4ae0cf33e292"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/bf36edd1ca755710c80deb6b24469f706fd7519d","id":"bf36edd1ca755710c80deb6b24469f706fd7519d","committed_date":"2010-12-06T17:30:23-08:00","authored_date":"2010-12-06T17:30:23-08:00","message":"IterationSummary#stories_snapshot correctly pieces together the end-of-iteration state info for all stories","tree":"98c40321f72e7f6718dcf43847ae514e58dac910","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/acb83e283efa8d825813ff0ea1fd4ae0cf33e292","id":"acb83e283efa8d825813ff0ea1fd4ae0cf33e292","committed_date":"2010-12-06T14:14:05-08:00","authored_date":"2010-12-06T14:14:05-08:00","message":"fixes PivotalProject#update_activities_from_api! to save the occurred_at date","tree":"b6cd6358a318388c83466a049c47e44ce2c6f186","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2ce7385f58c80ebe6333089ca8a5ba4cd4562442"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/902f71ec25ea768a3a5686502b746184fa5f2965","id":"902f71ec25ea768a3a5686502b746184fa5f2965","committed_date":"2010-12-06T14:05:40-08:00","authored_date":"2010-12-06T14:05:40-08:00","message":"Project Member invites allow role selection","tree":"b639d14bab941ac8576d9446e295fe5b78a12c45","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"120c30e4a9e359daab3ca35173e25c1fd36468a9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/ae64d9377f8e90e10090ac63e1eb6e3095a0e646","id":"ae64d9377f8e90e10090ac63e1eb6e3095a0e646","committed_date":"2010-12-03T14:15:28-08:00","authored_date":"2010-12-03T14:15:28-08:00","message":"adds PivotalActivity to store pivotal activity info we care about, adds naive method for grabbing the last 100 pivotal activities","tree":"2e7fd026b0ca0bf79bfce444f92b054531b8c907","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}}]}
@@ -1 +0,0 @@
1
- {"commits":[{"parents":[{"id":"0fe6631e3c3df441e0f00ff1149efc8d15e01333"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/120c30e4a9e359daab3ca35173e25c1fd36468a9","id":"120c30e4a9e359daab3ca35173e25c1fd36468a9","committed_date":"2010-12-01T12:55:05-08:00","authored_date":"2010-12-01T12:55:05-08:00","message":"changes login and logout urls to /login and /logout, adds a separate logout page with links to the home page, login page, and a placeholder support page","tree":"db52fd050e92c74c80d16959c7c2ea65c67934dd","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"e8a6e8889dfdb2a2039f826c6d5e36792c2bf3a5"},{"id":"2ce7385f58c80ebe6333089ca8a5ba4cd4562442"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/0fe6631e3c3df441e0f00ff1149efc8d15e01333","id":"0fe6631e3c3df441e0f00ff1149efc8d15e01333","committed_date":"2010-11-30T14:46:43-08:00","authored_date":"2010-11-30T14:46:43-08:00","message":"Merge branch 'invite_project_memeber'","tree":"dde6306445028df2c507efc6d72721b411829812","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"b07f72c3deb9239ed88789b14d1cc2e04d9de41c"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/2ce7385f58c80ebe6333089ca8a5ba4cd4562442","id":"2ce7385f58c80ebe6333089ca8a5ba4cd4562442","committed_date":"2010-11-30T14:09:40-08:00","authored_date":"2010-11-30T14:09:40-08:00","message":"Adds error checking to project member invite join","tree":"89f3fd966206a18cd0cefd1fa1d2296c648baf48","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"6b27343bb65781ab57e91e7759d2207fec4e2b5b"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/e8a6e8889dfdb2a2039f826c6d5e36792c2bf3a5","id":"e8a6e8889dfdb2a2039f826c6d5e36792c2bf3a5","committed_date":"2010-11-30T14:01:00-08:00","authored_date":"2010-11-30T14:01:00-08:00","message":"updates deploy password for cap script","tree":"357d85a38148679cfeb66cbcd5f9535f92732c73","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"ff851fe2397a5adade61f0d292b90ceff5a9cf5c"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/b07f72c3deb9239ed88789b14d1cc2e04d9de41c","id":"b07f72c3deb9239ed88789b14d1cc2e04d9de41c","committed_date":"2010-11-30T12:42:52-08:00","authored_date":"2010-11-30T12:42:52-08:00","message":"Adds scenario and code for adding existing users as project members","tree":"d1bd250aa12b55097a741dca6ec93583ec8d6170","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"a3c26ebdcf8491b66de710b6e0280b8ff878ba53"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/6b27343bb65781ab57e91e7759d2207fec4e2b5b","id":"6b27343bb65781ab57e91e7759d2207fec4e2b5b","committed_date":"2010-11-30T10:51:04-08:00","authored_date":"2010-11-30T10:51:04-08:00","message":"restricts viewing of harvest billing info on iteration summaries to executives, account admins (for the project's account), and the project owner","tree":"539725c173070be00a758268bd3d6ddc732f077f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"ff851fe2397a5adade61f0d292b90ceff5a9cf5c"},{"id":"323e79b7d8d16a28afb0f5d5ba25c72fe34cfe6b"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/a3c26ebdcf8491b66de710b6e0280b8ff878ba53","id":"a3c26ebdcf8491b66de710b6e0280b8ff878ba53","committed_date":"2010-11-29T17:08:31-08:00","authored_date":"2010-11-29T17:08:31-08:00","message":"Merge branch 'master' of github.com:turingstudio/loupe","tree":"f95c9b6e191d72e6c2881ff1e65b8a3ef1031ea0","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"79720af2b2f221fbdac6928c9984ba29a90314cd"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/ff851fe2397a5adade61f0d292b90ceff5a9cf5c","id":"ff851fe2397a5adade61f0d292b90ceff5a9cf5c","committed_date":"2010-11-29T17:07:59-08:00","authored_date":"2010-11-29T17:07:59-08:00","message":"Project member invite simple path","tree":"f0d1449e6914cf7f869b3155f30d1af2b17bde54","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"811608f9f5c373697f43c0fa5efe0482fd5266d3"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/79720af2b2f221fbdac6928c9984ba29a90314cd","id":"79720af2b2f221fbdac6928c9984ba29a90314cd","committed_date":"2010-11-29T17:06:27-08:00","authored_date":"2010-11-29T17:06:27-08:00","message":"Project member invites simple path","tree":"a683bdb633b3e7297d7ef4a4514720d47143f9b7","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"831d9bcf8b663708826af216df90fcc5c79a4466"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/323e79b7d8d16a28afb0f5d5ba25c72fe34cfe6b","id":"323e79b7d8d16a28afb0f5d5ba25c72fe34cfe6b","committed_date":"2010-11-29T16:24:37-08:00","authored_date":"2010-11-29T16:24:37-08:00","message":"displays project billing info broken down by member on the iteration summary page for all users (for now)","tree":"9c3f4dd1fa89813a9b7858f51c61059b8df04322","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"811608f9f5c373697f43c0fa5efe0482fd5266d3"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/831d9bcf8b663708826af216df90fcc5c79a4466","id":"831d9bcf8b663708826af216df90fcc5c79a4466","committed_date":"2010-11-29T11:38:25-08:00","authored_date":"2010-11-29T11:38:25-08:00","message":"changes harvest hours display in iteration summaries to be shown for all users with access to the project","tree":"27749756f911dc8d8eaf40e33ecb2d26e02e435f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"a9de184a2c39b8af9af85e7bce1673f16bdad0ac"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/811608f9f5c373697f43c0fa5efe0482fd5266d3","id":"811608f9f5c373697f43c0fa5efe0482fd5266d3","committed_date":"2010-11-24T18:04:32-08:00","authored_date":"2010-11-24T18:04:32-08:00","message":"Changes user model admin_accounts function. Saves about 1.5 to 2 minutes on cukes","tree":"f17e53ead7906d5d8301de980251e054b80f0788","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"a65647703f7dcaf3d2733fc30fbc8085c315c09a"},{"id":"24b81955672b3c369240d61e5610efa600938afe"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/a9de184a2c39b8af9af85e7bce1673f16bdad0ac","id":"a9de184a2c39b8af9af85e7bce1673f16bdad0ac","committed_date":"2010-11-24T14:39:08-08:00","authored_date":"2010-11-24T14:39:08-08:00","message":"Merge branch 'master' of github.com:turingstudio/loupe","tree":"586bf3ca45223368d4705ce800fb1be006823de1","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"8322edb16ed68bdb8d6f678baf5d5aa43d24ab9c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/24b81955672b3c369240d61e5610efa600938afe","id":"24b81955672b3c369240d61e5610efa600938afe","committed_date":"2010-11-24T14:34:37-08:00","authored_date":"2010-11-24T14:34:37-08:00","message":"fixes create project link on projects/index","tree":"197204db4a29ec7a6e76220dca275c971715d99f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"442133e9ce33d5ab4bbd46664f27df37e7f9334e"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/8322edb16ed68bdb8d6f678baf5d5aa43d24ab9c","id":"8322edb16ed68bdb8d6f678baf5d5aa43d24ab9c","committed_date":"2010-11-24T14:13:58-08:00","authored_date":"2010-11-24T14:13:58-08:00","message":"removes PivotalStory, and PivotalProject#update_stories! because they weren't being used","tree":"f573f50064a1cf1a4251da4e9c6ade423ddf5f2e","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"f01cb86cf41babbea1425b72f63bf2b48b4b78f9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/442133e9ce33d5ab4bbd46664f27df37e7f9334e","id":"442133e9ce33d5ab4bbd46664f27df37e7f9334e","committed_date":"2010-11-24T13:44:10-08:00","authored_date":"2010-11-24T13:44:10-08:00","message":"removes unnecessary PivotalHelper module","tree":"210627a4e7057dc437427a6c4acf264e3c852fc7","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4e038dc8d60ee68cea62d07ac2993b1faced298c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/f01cb86cf41babbea1425b72f63bf2b48b4b78f9","id":"f01cb86cf41babbea1425b72f63bf2b48b4b78f9","committed_date":"2010-11-24T13:29:53-08:00","authored_date":"2010-11-24T13:29:53-08:00","message":"restricts viewing of harvest hours in an iteration summary to account admins, the project owner, and executives","tree":"9bde72e0a0903c7731cf92ebab41bc31ccbe872d","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"7854479a1fbcfc26895d3bad70b2a60c9db7e7ad"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/4e038dc8d60ee68cea62d07ac2993b1faced298c","id":"4e038dc8d60ee68cea62d07ac2993b1faced298c","committed_date":"2010-11-24T11:51:29-08:00","authored_date":"2010-11-24T11:51:29-08:00","message":"displays total harvest hours for the iteration on the iteration summary page","tree":"e1b51fbe34462bcd84734e74c9236cfdbe2eb511","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"c7adfaeeb2c44c70b0f9dd373d7b59bf23e3b965"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/7854479a1fbcfc26895d3bad70b2a60c9db7e7ad","id":"7854479a1fbcfc26895d3bad70b2a60c9db7e7ad","committed_date":"2010-11-24T09:43:27-08:00","authored_date":"2010-11-24T09:43:27-08:00","message":"adds remote harvest project id to HarvestProject, adds functional HarvestProject#remote_project and IterationSummary#hours","tree":"8996007ca69ab483e899e3c46edac5aec23d4a6e","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2276af5194959bce8865f4c9cb507906be9e3914"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/c7adfaeeb2c44c70b0f9dd373d7b59bf23e3b965","id":"c7adfaeeb2c44c70b0f9dd373d7b59bf23e3b965","committed_date":"2010-11-23T17:12:03-08:00","authored_date":"2010-11-23T17:12:03-08:00","message":"adds harvested gem to project (for Harvest access), adds needed connection info to HarvestProject (password s currently stored as clear text)","tree":"bf5abdbc0fe4e7292299571e3226f8865eb3531f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"2dac0004bc8c6c6905c3ba576851abf227609898"},{"id":"2276af5194959bce8865f4c9cb507906be9e3914"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"/turingstudio/loupe/commit/a65647703f7dcaf3d2733fc30fbc8085c315c09a","id":"a65647703f7dcaf3d2733fc30fbc8085c315c09a","committed_date":"2010-11-23T10:42:40-08:00","authored_date":"2010-11-23T10:42:40-08:00","message":"Merge branch 'master' of github.com:turingstudio/loupe","tree":"9a130681e596b22dc8aad925dcfb2a9e330e10cd","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"02717e2b0d3ead402021bf88c34ebaa9e29d1932"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/2276af5194959bce8865f4c9cb507906be9e3914","id":"2276af5194959bce8865f4c9cb507906be9e3914","committed_date":"2010-11-22T16:13:34-08:00","authored_date":"2010-11-22T16:13:34-08:00","message":"DRYs up story display in iteration summaries","tree":"ae4b6ab10b0feb5c91c649a71c6af7eac3284e4b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"b1e8de85747c2c4411687ecfb5e91fbfd157ebc0"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/02717e2b0d3ead402021bf88c34ebaa9e29d1932","id":"02717e2b0d3ead402021bf88c34ebaa9e29d1932","committed_date":"2010-11-22T16:05:08-08:00","authored_date":"2010-11-22T16:05:08-08:00","message":"cleans up display of stories in iteration summaries","tree":"3f8ac3ca8d4a0a2e96d24e6f8f667c1ca0add56f","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"53ffd76c7567c3c49ea04c3e0e27cd6d64cf4871"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/b1e8de85747c2c4411687ecfb5e91fbfd157ebc0","id":"b1e8de85747c2c4411687ecfb5e91fbfd157ebc0","committed_date":"2010-11-22T15:16:03-08:00","authored_date":"2010-11-22T15:16:03-08:00","message":"tells the user if there are no stories associated with the iteration summary she is viewing","tree":"0e46cb74357672e09266f965e6b34a96bdcf2793","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"1793889584614fcb684a47fdc70e9856175fd4b2"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/53ffd76c7567c3c49ea04c3e0e27cd6d64cf4871","id":"53ffd76c7567c3c49ea04c3e0e27cd6d64cf4871","committed_date":"2010-11-22T14:15:17-08:00","authored_date":"2010-11-22T14:15:17-08:00","message":"adds link to pivotal tracker project on iteration summary page","tree":"9d5ae3b1bfb0cc3b22d59c404ad96301d6b4c903","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"f74c457eae8cb7a3253c1ed33668ead03e200a23"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/1793889584614fcb684a47fdc70e9856175fd4b2","id":"1793889584614fcb684a47fdc70e9856175fd4b2","committed_date":"2010-11-22T12:30:02-08:00","authored_date":"2010-11-22T12:30:02-08:00","message":"adds last cuke scenario for initial iteration summary story","tree":"1d8e6f76d0e95b6fca9785fe623f9e3fd8c64130","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4efa83fb3ac1f64f2221b58afdb2eea3ac9cb76d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/f74c457eae8cb7a3253c1ed33668ead03e200a23","id":"f74c457eae8cb7a3253c1ed33668ead03e200a23","committed_date":"2010-11-22T10:25:41-08:00","authored_date":"2010-11-22T10:25:41-08:00","message":"completes full initial cuke around story display on iteration summary page","tree":"cb8b5ae915541e7d48a93f5e2e8096035dfeddbf","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"f67548a2a4d994c08a3ccdf8a750ca1a4a1ea6ca"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/4efa83fb3ac1f64f2221b58afdb2eea3ac9cb76d","id":"4efa83fb3ac1f64f2221b58afdb2eea3ac9cb76d","committed_date":"2010-11-20T12:19:31-08:00","authored_date":"2010-11-20T12:19:31-08:00","message":"gets initial cuke around iteration summaries working","tree":"ad839a4ed151e8a1afcf218e57a0aa617d4e1ebb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"df2164fd436e3b634ab443389eac7f15c3c5b68d"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/f67548a2a4d994c08a3ccdf8a750ca1a4a1ea6ca","id":"f67548a2a4d994c08a3ccdf8a750ca1a4a1ea6ca","committed_date":"2010-11-20T09:44:19-08:00","authored_date":"2010-11-20T09:44:19-08:00","message":"cleans up the display of dates on iteration summaries","tree":"8ff991795464dd8e7fc4efb46bcf2885728c6de3","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"f7f4dede2ec000c49dcae3a49b85b711a9b8911a"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/df2164fd436e3b634ab443389eac7f15c3c5b68d","id":"df2164fd436e3b634ab443389eac7f15c3c5b68d","committed_date":"2010-11-19T15:22:58-08:00","authored_date":"2010-11-19T15:22:58-08:00","message":"iteration summaries use their pivotal ids in the URL instead of their regular ids","tree":"47eeca7bc4d8a05a1cd5b7dce4df3b93c7d574db","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4e501a8d9ab8c69ee961723e671897040bf7d307"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/f7f4dede2ec000c49dcae3a49b85b711a9b8911a","id":"f7f4dede2ec000c49dcae3a49b85b711a9b8911a","committed_date":"2010-11-19T13:54:39-08:00","authored_date":"2010-11-19T13:54:39-08:00","message":"only users who can access the project can see its iteration summaries","tree":"4067eccf6907f54907d24eaf0f650681f5d3044b","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"446322fdfb4ac16c776e39240a59230698a283e9"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/4e501a8d9ab8c69ee961723e671897040bf7d307","id":"4e501a8d9ab8c69ee961723e671897040bf7d307","committed_date":"2010-11-19T13:26:15-08:00","authored_date":"2010-11-19T13:26:15-08:00","message":"highlights releases in the iteration summary (by adding an html class to relevant stories in the list)","tree":"67680f728b880b4c53be7a9c1fdd93b35bbc5384","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"46fd0038b46ba3a610bde79642bbf8a737765eaa"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/446322fdfb4ac16c776e39240a59230698a283e9","id":"446322fdfb4ac16c776e39240a59230698a283e9","committed_date":"2010-11-19T12:31:20-08:00","authored_date":"2010-11-19T12:31:20-08:00","message":"displays the accepted, rejected, delivered, and started (including finished) stories organized by current state for an iteration summary report (no cukes)","tree":"0527704f4dc3274ad7f56795502d3a4ead2551fc","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"7ea565016bf1cbcf0008e17f95df0960d2fdfc1c"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/46fd0038b46ba3a610bde79642bbf8a737765eaa","id":"46fd0038b46ba3a610bde79642bbf8a737765eaa","committed_date":"2010-11-16T16:38:22-08:00","authored_date":"2010-11-16T16:38:22-08:00","message":"adds barebones iteration summary show page and references to a summary's remote iteration and a pivotal project's remote project","tree":"5ac240834a6b5d2a1a26d84df0472999fa45e12c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"525ce34da36fa556b6acc5174c22f524d950b9ed"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"/turingstudio/loupe/commit/7ea565016bf1cbcf0008e17f95df0960d2fdfc1c","id":"7ea565016bf1cbcf0008e17f95df0960d2fdfc1c","committed_date":"2010-11-16T14:14:35-08:00","authored_date":"2010-11-16T14:14:35-08:00","message":"adds IterationSummary, links to existing iteration summaries display on projects/show (nothing behind them yet)","tree":"92018e60dcae45aa33cefa3c763b40f4777b79eb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}}]}
@@ -1 +0,0 @@
1
- {"commits":[{"parents":[{"id":"ab621b7467ec00c935e7a610fde93920d3cd4bcb"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/525ce34da36fa556b6acc5174c22f524d950b9ed","id":"525ce34da36fa556b6acc5174c22f524d950b9ed","committed_date":"2010-11-15T13:54:07-08:00","authored_date":"2010-11-15T13:54:07-08:00","message":"lays some groundwork for navigating to an iteration summary","tree":"096c202cbb6e1266adf25309f0945f3b455d46fb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"ab621b7467ec00c935e7a610fde93920d3cd4bcb"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/2dac0004bc8c6c6905c3ba576851abf227609898","id":"2dac0004bc8c6c6905c3ba576851abf227609898","committed_date":"2010-11-12T11:16:22-08:00","authored_date":"2010-11-12T11:16:22-08:00","message":"Test r2d2 remove","tree":"8557e5d99e0b8c772baeaa73e25974daa2302455","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"6ac0ab3849600094fd15640216f4e79fb4ee4904"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/ab621b7467ec00c935e7a610fde93920d3cd4bcb","id":"ab621b7467ec00c935e7a610fde93920d3cd4bcb","committed_date":"2010-11-12T11:12:29-08:00","authored_date":"2010-11-12T11:12:29-08:00","message":"Test r2d2","tree":"50b9645f2114a070ebc59e2fb59d18cf73820292","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"fc1cefb040d6eb8aa70784d20d1c6422cae4b06d"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/6ac0ab3849600094fd15640216f4e79fb4ee4904","id":"6ac0ab3849600094fd15640216f4e79fb4ee4904","committed_date":"2010-11-11T18:21:54-08:00","authored_date":"2010-11-11T18:21:54-08:00","message":"Project Member initial","tree":"8557e5d99e0b8c772baeaa73e25974daa2302455","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"16c13d1f36ce41ebc7d5fb29ce595a920df33bc3"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/fc1cefb040d6eb8aa70784d20d1c6422cae4b06d","id":"fc1cefb040d6eb8aa70784d20d1c6422cae4b06d","committed_date":"2010-11-11T18:00:19-08:00","authored_date":"2010-11-11T18:00:19-08:00","message":"Completes account invite section","tree":"b099efb27a69787a1c52a1294de45c9e3f7857ec","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"12647539184019178847dc2c14a1f1a813665655"},{"id":"d81f84dc8ace738d0a04cb8ec20079474cacd6e5"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/16c13d1f36ce41ebc7d5fb29ce595a920df33bc3","id":"16c13d1f36ce41ebc7d5fb29ce595a920df33bc3","committed_date":"2010-11-11T12:29:55-08:00","authored_date":"2010-11-11T12:29:55-08:00","message":"Merge branch 'master' into invite_member","tree":"0374a2a0ec28fe5c215e643838e0aa298714ed74","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"beb43628210ac3fe592ea61ce73036a2659db790"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/12647539184019178847dc2c14a1f1a813665655","id":"12647539184019178847dc2c14a1f1a813665655","committed_date":"2010-11-11T12:28:40-08:00","authored_date":"2010-11-11T12:28:40-08:00","message":"Restore","tree":"96a76d52195c9e9bfd0b4453edca966c0078c5ce","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"21ac2630c34c2278aa5177185591f161bd0ead07"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/d81f84dc8ace738d0a04cb8ec20079474cacd6e5","id":"d81f84dc8ace738d0a04cb8ec20079474cacd6e5","committed_date":"2010-11-10T09:50:26-08:00","authored_date":"2010-11-10T09:50:26-08:00","message":"removes User#admin, replacing mostly with User.admin_for?(account) calls, DRYs up Project.for_user","tree":"b8c7b62b157e11bbb3aee14e9d6b5cc0d1920c30","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"54b9e892c5f58f378a394de5a6c0a46ccde90073"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/21ac2630c34c2278aa5177185591f161bd0ead07","id":"21ac2630c34c2278aa5177185591f161bd0ead07","committed_date":"2010-11-09T16:11:58-08:00","authored_date":"2010-11-09T16:11:58-08:00","message":"the admin creating a project now gets set as its creator, and MemberDeletePolicy gets a refactoring","tree":"f789008c294bf0602275999e1dded4e3e163c663","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"27ab02080760b018f99ea61e69a7e70e7e4a72c0"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/54b9e892c5f58f378a394de5a6c0a46ccde90073","id":"54b9e892c5f58f378a394de5a6c0a46ccde90073","committed_date":"2010-11-09T15:06:33-08:00","authored_date":"2010-11-09T15:06:33-08:00","message":"only shows Remove buttons when the user is allowed to revoke project access, finishes cukes for revoking project access, adds custom steps for finding buttons","tree":"921ba5f858d8e509d661870d50bb9a0441ecdc54","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"11d6102613b189179191a8f3117d4feb1e692726"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/27ab02080760b018f99ea61e69a7e70e7e4a72c0","id":"27ab02080760b018f99ea61e69a7e70e7e4a72c0","committed_date":"2010-11-09T09:59:09-08:00","authored_date":"2010-11-09T09:59:09-08:00","message":"combines admin and member lists for a project, adds Project#creator (an AccountAdmin)","tree":"78ec5ddf1c40e437bb5371c53e9a3fff5ed3e036","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"4726e5f5c1937d6978febae6d8a88fa5ff850bee"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/11d6102613b189179191a8f3117d4feb1e692726","id":"11d6102613b189179191a8f3117d4feb1e692726","committed_date":"2010-11-09T09:20:30-08:00","authored_date":"2010-11-09T09:20:30-08:00","message":"live binds the ajax success response when revoking project access from a member so that it can be done multiple times in a row","tree":"794dadab13dc6bd4fff859ff4629f4dd3e8817da","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"16c868f8352fb69fd08625e4ef49724598be5969"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4726e5f5c1937d6978febae6d8a88fa5ff850bee","id":"4726e5f5c1937d6978febae6d8a88fa5ff850bee","committed_date":"2010-11-08T16:20:38-08:00","authored_date":"2010-11-08T16:20:38-08:00","message":"users can revoke project access from members all AJAXy like","tree":"fa702471b647542afbeeb563c3242e88bf272af9","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"e8c5d75ad1f35fcaab91478bd3ec427ce056397b"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/beb43628210ac3fe592ea61ce73036a2659db790","id":"beb43628210ac3fe592ea61ce73036a2659db790","committed_date":"2010-11-08T16:01:32-08:00","authored_date":"2010-11-08T16:01:32-08:00","message":"Add Invite Email and Show view","tree":"bc9280258cac96963b54f7a7b98930ee07cbc5d2","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"4bcda2eeb7ee3a120d92222f49ca8d7da50b26a1"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/e8c5d75ad1f35fcaab91478bd3ec427ce056397b","id":"e8c5d75ad1f35fcaab91478bd3ec427ce056397b","committed_date":"2010-11-05T00:02:49-07:00","authored_date":"2010-11-05T00:02:49-07:00","message":"Add guid gem for account invites url","tree":"0250b7a2ca7958b4907e744c2691f71e5ab875e2","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"16c868f8352fb69fd08625e4ef49724598be5969"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/4bcda2eeb7ee3a120d92222f49ca8d7da50b26a1","id":"4bcda2eeb7ee3a120d92222f49ca8d7da50b26a1","committed_date":"2010-11-04T17:58:05-07:00","authored_date":"2010-11-04T17:58:05-07:00","message":"Account Invites Controller","tree":"4021c4d5dde0807f9c1d1452438957bd62e8326b","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"9e05bd8e7b47aa70bd38f32d4e96d1bb3274f2d0"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/16c868f8352fb69fd08625e4ef49724598be5969","id":"16c868f8352fb69fd08625e4ef49724598be5969","committed_date":"2010-11-04T11:45:36-07:00","authored_date":"2010-11-04T11:45:36-07:00","message":"Adds account invite model.","tree":"3ad31fa54d2eba271adb277e091d637e2557dc45","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"ac786d2653775231f52f8af67d5309662e93e837"},{"id":"e2850714ab80317c6d6eaea711a8b94b01c87c37"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/9e05bd8e7b47aa70bd38f32d4e96d1bb3274f2d0","id":"9e05bd8e7b47aa70bd38f32d4e96d1bb3274f2d0","committed_date":"2010-11-03T19:15:11-07:00","authored_date":"2010-11-03T19:15:11-07:00","message":"Merge branch 'master' of github.com:turingstudio\/loupe","tree":"fe1cb18984ee83abe222888858791a419916d6e7","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"bd306fe8d905e2f72fdee0a5f32d447353c24efc"}],"author":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"},"url":"\/turingstudio\/loupe\/commit\/ac786d2653775231f52f8af67d5309662e93e837","id":"ac786d2653775231f52f8af67d5309662e93e837","committed_date":"2010-11-03T19:15:05-07:00","authored_date":"2010-11-03T19:15:05-07:00","message":"Add jquery.tools for overlay. Configure for controller.js","tree":"0b8bea6bba73354df6c313fda90e4d1cae42fd9e","committer":{"name":"Julian Coutu","login":"","email":"jcoutu@Julian-Coutus-MacBook-Pro"}},{"parents":[{"id":"c1e80da7b1d0fb3a4b3fc3d829853d8db2cdbc92"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/e2850714ab80317c6d6eaea711a8b94b01c87c37","id":"e2850714ab80317c6d6eaea711a8b94b01c87c37","committed_date":"2010-11-03T16:42:15-07:00","authored_date":"2010-11-03T16:42:15-07:00","message":"implements revoking project access from members (not functional b\/c of subdomain issues)","tree":"408488e84059f8c01215493c700b89da7b9fe662","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"bd306fe8d905e2f72fdee0a5f32d447353c24efc"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/c1e80da7b1d0fb3a4b3fc3d829853d8db2cdbc92","id":"c1e80da7b1d0fb3a4b3fc3d829853d8db2cdbc92","committed_date":"2010-11-03T15:17:28-07:00","authored_date":"2010-11-03T15:17:28-07:00","message":"adds support for dom_id to Cucumber, lays groundwork for revoking a member's access to a project","tree":"07946bc5d2ad6ff947c00bd3e406b173f8319f77","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"cda6ddbf2601f5073835a078a2f3dc1162eacd20"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/bd306fe8d905e2f72fdee0a5f32d447353c24efc","id":"bd306fe8d905e2f72fdee0a5f32d447353c24efc","committed_date":"2010-11-03T11:00:47-07:00","authored_date":"2010-11-03T11:00:47-07:00","message":"you can view everyone with access to a project on a project's members page","tree":"9b39df7bde59094a39fc4ce388e03ff580738fee","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"31ad142831e79c6f005b3b06f3e59aa27e4e7da8"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/cda6ddbf2601f5073835a078a2f3dc1162eacd20","id":"cda6ddbf2601f5073835a078a2f3dc1162eacd20","committed_date":"2010-11-02T17:55:55-07:00","authored_date":"2010-11-02T17:55:55-07:00","message":"correctly displays the projects for an account and user based on permissions (Project.for_user should probably go away)","tree":"877e9f0736d16fc4397452537d1a5a29ee9dd9eb","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"190a985f920da9cfcc5bc0f97e53efb7d58f276a"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/31ad142831e79c6f005b3b06f3e59aa27e4e7da8","id":"31ad142831e79c6f005b3b06f3e59aa27e4e7da8","committed_date":"2010-11-02T14:25:28-07:00","authored_date":"2010-11-02T14:25:28-07:00","message":"gets all cukes and specs working with the new permissions system (last step was the project association scenarios)","tree":"a711fcad4798b00b30f2f1b45f784db8d8c32fe9","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"b5e042eb2dce54a605ef7c44646261eac23d9762"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/190a985f920da9cfcc5bc0f97e53efb7d58f276a","id":"190a985f920da9cfcc5bc0f97e53efb7d58f276a","committed_date":"2010-11-02T14:10:40-07:00","authored_date":"2010-11-02T14:10:40-07:00","message":"gets project creation scenarios converted to new permissions setup","tree":"03bdda02853f9c1c588662ec15a1ab50d327b114","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"b95ad91674470c98ed93e3865c4012d3a5dbdd17"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/b5e042eb2dce54a605ef7c44646261eac23d9762","id":"b5e042eb2dce54a605ef7c44646261eac23d9762","committed_date":"2010-11-02T13:45:21-07:00","authored_date":"2010-11-02T13:45:21-07:00","message":"gets account dashboard scenarios working with new account permissions, finetunes User#can_access_project? and #can_access_account? along with specs","tree":"bbac7dd4000b46f9245e269da98faa161830ec44","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"df3c668ebac42a2cba5f959198cf6137982e86be"},{"id":"0ffb7677e5c47ba9a23242682e773c36bd0c3fcb"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/b95ad91674470c98ed93e3865c4012d3a5dbdd17","id":"b95ad91674470c98ed93e3865c4012d3a5dbdd17","committed_date":"2010-11-01T16:25:21-07:00","authored_date":"2010-11-01T16:25:21-07:00","message":"Merge branch 'local' into WIP-role-overhaul","tree":"fb5180bbaab309c66a0164e0e866820602d906f1","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"810cf561d3d2fb4e0e4dae613455495639f15cd1"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/0ffb7677e5c47ba9a23242682e773c36bd0c3fcb","id":"0ffb7677e5c47ba9a23242682e773c36bd0c3fcb","committed_date":"2010-11-01T16:23:29-07:00","authored_date":"2010-11-01T16:23:29-07:00","message":"removes old permissions structure in favor of new one, updates User instance methods accordingly (#accounts, #projects, #can_access_), updates db\/seeds accordingly, removes Account validation requiring admin\/owner to be set (broken Cukes)","tree":"409267f903a392623aaac1ec5b3a77f4ec5d4a7c","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"810cf561d3d2fb4e0e4dae613455495639f15cd1"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/df3c668ebac42a2cba5f959198cf6137982e86be","id":"df3c668ebac42a2cba5f959198cf6137982e86be","committed_date":"2010-11-01T14:29:10-07:00","authored_date":"2010-11-01T14:27:48-07:00","message":"Now can sync stories from Pivotal API","tree":"aed53efb2048c8aa28da74bb7a7ce9024d78dd21","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"e27fbd4da239f58bd81a4b13fda992d6e8c0bd01"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/810cf561d3d2fb4e0e4dae613455495639f15cd1","id":"810cf561d3d2fb4e0e4dae613455495639f15cd1","committed_date":"2010-11-01T14:04:49-07:00","authored_date":"2010-11-01T14:04:49-07:00","message":"adds new account admin ideas (without removing old ones for now), AccountAdmin and ProjectMember belong to User","tree":"d2d258a8c7be2c28f61995d775a509d7b2343704","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"a3af77c29e2042680fe1a329a88413c560c7f9ce"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/e27fbd4da239f58bd81a4b13fda992d6e8c0bd01","id":"e27fbd4da239f58bd81a4b13fda992d6e8c0bd01","committed_date":"2010-11-01T13:20:13-07:00","authored_date":"2010-11-01T13:20:13-07:00","message":"redefines Project#executives to be based off of Project#members","tree":"3c242736108543b5e5dff46a3cce78ac9c0518d0","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"5cf6e9132c202cfdbb56fb1636cdee1394fcab14"}],"author":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/a3af77c29e2042680fe1a329a88413c560c7f9ce","id":"a3af77c29e2042680fe1a329a88413c560c7f9ce","committed_date":"2010-11-01T11:40:37-07:00","authored_date":"2010-11-01T11:39:25-07:00","message":"adds structure for projects including project member-based roles","tree":"1af5b8948bd8e4f959f40902df74f77d270530e8","committer":{"name":"Chris Didyk","login":"cdidyk","email":"cdidyk@gmail.com"}},{"parents":[{"id":"f88131e61e72dad1694d0b70e3ef26c5a835afe5"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/5cf6e9132c202cfdbb56fb1636cdee1394fcab14","id":"5cf6e9132c202cfdbb56fb1636cdee1394fcab14","committed_date":"2010-11-01T11:00:39-07:00","authored_date":"2010-11-01T11:00:39-07:00","message":"Specs: now working in more timezones!","tree":"92280c30c22d09c722775811d80c92c6e721404d","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"52732bde9664012883ba79e00afca97cf1109b24"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/f88131e61e72dad1694d0b70e3ef26c5a835afe5","id":"f88131e61e72dad1694d0b70e3ef26c5a835afe5","committed_date":"2010-10-27T18:11:53-07:00","authored_date":"2010-10-27T18:11:53-07:00","message":"Added per-week iteration support; currently no actual information shows up (but date navigation works)","tree":"5ab60c8798cd49b28ffbbcccce7028e95b2a1644","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"af202aad4a560f56aff6ca138a543d00c25c5702"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/52732bde9664012883ba79e00afca97cf1109b24","id":"52732bde9664012883ba79e00afca97cf1109b24","committed_date":"2010-10-26T13:45:26-07:00","authored_date":"2010-10-26T13:45:26-07:00","message":"Using URLs instead of paths wherever possible.\n\nNeed to add a fail-fast mode for subdomain gem to prevent this.","tree":"95b4626b50bcbb0ab16663cae58a9187e3fc1368","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}}]}
@@ -1 +0,0 @@
1
- {"commits":[{"parents":[{"id":"1683227a90c37b7a4268a73adebc3bf0a60eb33f"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/af202aad4a560f56aff6ca138a543d00c25c5702","id":"af202aad4a560f56aff6ca138a543d00c25c5702","committed_date":"2010-10-26T13:32:47-07:00","authored_date":"2010-10-26T13:32:47-07:00","message":"Another subdomain cookie attempt","tree":"13d6b718a46b5ffc6ddd96f39a3973e0c396d5a0","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"41fad418c1784ab471d1aa7624064c1e0dc82865"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/1683227a90c37b7a4268a73adebc3bf0a60eb33f","id":"1683227a90c37b7a4268a73adebc3bf0a60eb33f","committed_date":"2010-10-26T13:20:39-07:00","authored_date":"2010-10-26T13:20:39-07:00","message":"Attempt to address subdomain session\/cookie issue","tree":"27f27975ccfffa82b01a53e822e53f886e9f549e","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"d0ca5f2bb86d043ee00a700c62e4eb590cd487e4"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/41fad418c1784ab471d1aa7624064c1e0dc82865","id":"41fad418c1784ab471d1aa7624064c1e0dc82865","committed_date":"2010-10-25T23:32:45-07:00","authored_date":"2010-10-25T23:32:45-07:00","message":"Added ability to edit existing projects","tree":"bc725de1cd1b1160e29203188fb05fd9812c2261","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"4e69fd4ee3c7fa8f99fc89b06ca3b46cbc3a1665"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/d0ca5f2bb86d043ee00a700c62e4eb590cd487e4","id":"d0ca5f2bb86d043ee00a700c62e4eb590cd487e4","committed_date":"2010-10-25T17:48:17-07:00","authored_date":"2010-10-25T17:48:17-07:00","message":"Added missing logout message","tree":"06fa305431282f34304c9968130b317d4f010cd9","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"888f5e51cbb1e461f824342d74a0cffeee96490b"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4e69fd4ee3c7fa8f99fc89b06ca3b46cbc3a1665","id":"4e69fd4ee3c7fa8f99fc89b06ca3b46cbc3a1665","committed_date":"2010-10-25T17:46:16-07:00","authored_date":"2010-10-25T17:46:16-07:00","message":"Can now see existing projects on account dashboard","tree":"11ded2da033d1d08a3ebe41068a23636463ce527","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"f66ec142c1d4bab6ae8df651b8d18df2acd4d5d9"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/888f5e51cbb1e461f824342d74a0cffeee96490b","id":"888f5e51cbb1e461f824342d74a0cffeee96490b","committed_date":"2010-10-25T17:45:53-07:00","authored_date":"2010-10-25T17:45:53-07:00","message":"Fixed spec for subdomain routes, caused by tld_length changes","tree":"b160631e6264efd1e54c5e1835d4570455d3adf7","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"8d7745a56e921c26026653d588382a9ec5e98fa8"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/f66ec142c1d4bab6ae8df651b8d18df2acd4d5d9","id":"f66ec142c1d4bab6ae8df651b8d18df2acd4d5d9","committed_date":"2010-10-25T17:31:45-07:00","authored_date":"2010-10-25T17:31:45-07:00","message":"Attempt to get cookies to share across subdomains on production","tree":"100de58e7f3cfcb9a9b5cb5ec0a426cddaf61eac","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"4734a580ad9feda48ca74d03780b6a0a7ed2a0f1"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/8d7745a56e921c26026653d588382a9ec5e98fa8","id":"8d7745a56e921c26026653d588382a9ec5e98fa8","committed_date":"2010-10-25T17:13:42-07:00","authored_date":"2010-10-25T17:13:42-07:00","message":"Upgraded CRUD. should have tests for this :)","tree":"421bc90959453e725fd706f48b50f034ac10c4ce","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"f7f27773ec356c136f0adf4d92ac9d97ebca7703"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/4734a580ad9feda48ca74d03780b6a0a7ed2a0f1","id":"4734a580ad9feda48ca74d03780b6a0a7ed2a0f1","committed_date":"2010-10-25T17:03:30-07:00","authored_date":"2010-10-25T17:03:30-07:00","message":"Updated subdomain gem to use longer TLDs, since Loupe is deployed at loupe.turingstudio.com","tree":"f74b0c06a29957312386e18b123c3c14125d9588","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"35215746174c1342268b01752485436fe370040a"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/f7f27773ec356c136f0adf4d92ac9d97ebca7703","id":"f7f27773ec356c136f0adf4d92ac9d97ebca7703","committed_date":"2010-10-25T15:40:29-07:00","authored_date":"2010-10-25T15:40:29-07:00","message":"Working deployment script","tree":"a0ffcdb639da4b6ddd8a01707618ed3e70820389","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"81e1100ba667f9e7a9113893b98633bfa76d30c6"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/35215746174c1342268b01752485436fe370040a","id":"35215746174c1342268b01752485436fe370040a","committed_date":"2010-10-25T14:27:06-07:00","authored_date":"2010-10-25T14:25:49-07:00","message":"Pivotal API config file extension now .yml, not .yaml","tree":"fd3ea35eb1523b79e0e5c33079cdf920138756a7","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"2f6b33144087f0dd22831d6b161929b8f4b430e7"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/81e1100ba667f9e7a9113893b98633bfa76d30c6","id":"81e1100ba667f9e7a9113893b98633bfa76d30c6","committed_date":"2010-10-25T12:25:38-07:00","authored_date":"2010-10-25T12:25:38-07:00","message":"Tons of changes rolled into one commit. I'll be better next time, I promise!\n\n* Subdomain support using 'subdomainitis' gem\n* Accounts now per-subdomain\n* Starting \"easy-crud\" library to make CRUD easy","tree":"3edc287225f7d0b4c1a98f20b5277aa114edd0d8","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"5bb971ddcf2a579df159dca85ca2c18639a91879"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/2f6b33144087f0dd22831d6b161929b8f4b430e7","id":"2f6b33144087f0dd22831d6b161929b8f4b430e7","committed_date":"2010-10-15T16:00:08-07:00","authored_date":"2010-10-15T15:33:52-07:00","message":"Added new User->Account->Project schema, w\/ CRUD support","tree":"b64e604a71a775edcbd4a2d1fef7fec4c006ea74","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"d2f7caf183ae7a5499638ca03bd5efa460707a3b"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/5bb971ddcf2a579df159dca85ca2c18639a91879","id":"5bb971ddcf2a579df159dca85ca2c18639a91879","committed_date":"2010-10-14T17:18:44-07:00","authored_date":"2010-10-14T17:18:44-07:00","message":"Upgrade Rspec","tree":"da8f806b9f83775e5c38ee05520038d65edea316","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"ab748a3806c6c716f5e6de5969846608460eda03"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/d2f7caf183ae7a5499638ca03bd5efa460707a3b","id":"d2f7caf183ae7a5499638ca03bd5efa460707a3b","committed_date":"2010-10-14T14:47:36-07:00","authored_date":"2010-10-14T14:47:36-07:00","message":"Bump Rails version","tree":"58665c5bc921fa29a7c6b718ddbf120102b352d1","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"83c32a570a500207396366c3eabb1deb04a02f05"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/ab748a3806c6c716f5e6de5969846608460eda03","id":"ab748a3806c6c716f5e6de5969846608460eda03","committed_date":"2010-10-13T21:17:43-07:00","authored_date":"2010-10-13T21:17:43-07:00","message":"Now can associated a project with Pivotal and Harvest projects.\n\nPivotal Syncing has been implemented.\n\nPermissions have been implemented.","tree":"51dca7550af8a8f7a81cef040b85c247455990ab","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[{"id":"0629e71500e084d41e77cb04c8599dfe2e58534c"}],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/83c32a570a500207396366c3eabb1deb04a02f05","id":"83c32a570a500207396366c3eabb1deb04a02f05","committed_date":"2010-10-11T15:26:39-07:00","authored_date":"2010-10-11T15:26:39-07:00","message":"Updated libraries and monkeypatched Rack (until new version is released) to stop spewing warnings during testing","tree":"c6fa59756f28ff7c32d2def2768a731594df4a19","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}},{"parents":[],"author":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"},"url":"\/turingstudio\/loupe\/commit\/0629e71500e084d41e77cb04c8599dfe2e58534c","id":"0629e71500e084d41e77cb04c8599dfe2e58534c","committed_date":"2010-10-08T19:51:22-07:00","authored_date":"2010-10-08T19:51:22-07:00","message":"Initial commit.\n\nUser login\/password recovery works; project permissions are enforced","tree":"9c1561abe32807f4b9e8d260c42c1259e85ee0a3","committer":{"name":"Stephen Judkins","login":"stephenjudkins","email":"stephen.judkins@gmail.com"}}]}