tracco 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +28 -0
- data/.rspec +3 -0
- data/.rvmrc.template +2 -0
- data/.travis.yml +20 -0
- data/CHANGELOG +32 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +110 -0
- data/LICENSE.txt +15 -0
- data/README.md +292 -0
- data/Rakefile +8 -0
- data/config/config.template.yml +6 -0
- data/config/config.yml.trackinguser_for_test +7 -0
- data/config/mongoid.template.yml +24 -0
- data/lib/patches/trello/card.rb +19 -0
- data/lib/patches/trello/member.rb +20 -0
- data/lib/startup_trello.rb +2 -0
- data/lib/tasks/rspec.rake +17 -0
- data/lib/tasks/tasks.rake +55 -0
- data/lib/tracco.rb +30 -0
- data/lib/tracco/effort.rb +35 -0
- data/lib/tracco/estimate.rb +25 -0
- data/lib/tracco/google_docs_exporter.rb +67 -0
- data/lib/tracco/member.rb +61 -0
- data/lib/tracco/mongoid_helper.rb +13 -0
- data/lib/tracco/tracked_card.rb +121 -0
- data/lib/tracco/tracking/base.rb +82 -0
- data/lib/tracco/tracking/card_done_tracking.rb +10 -0
- data/lib/tracco/tracking/effort_tracking.rb +45 -0
- data/lib/tracco/tracking/estimate_tracking.rb +23 -0
- data/lib/tracco/tracking/invalid_tracking.rb +19 -0
- data/lib/tracco/tracking_factory.rb +22 -0
- data/lib/tracco/trello_authorize.rb +16 -0
- data/lib/tracco/trello_configuration.rb +39 -0
- data/lib/tracco/trello_tracker.rb +44 -0
- data/lib/tracco/version.rb +3 -0
- data/script/ci/before_script.sh +1 -0
- data/script/ci/run_build.sh +2 -0
- data/script/crontab.template +8 -0
- data/script/mate.sh +1 -0
- data/spec/effort_spec.rb +59 -0
- data/spec/estimate_spec.rb +38 -0
- data/spec/integration/trello_authorization_spec.rb +12 -0
- data/spec/integration/trello_tracker_spec.rb +66 -0
- data/spec/member_spec.rb +81 -0
- data/spec/patches/trello/card_spec.rb +25 -0
- data/spec/spec_helper.rb +66 -0
- data/spec/support/database_cleaner.rb +12 -0
- data/spec/tracked_card_spec.rb +336 -0
- data/spec/tracking/card_done_tracking_spec.rb +18 -0
- data/spec/tracking/effort_tracking_spec.rb +114 -0
- data/spec/tracking/estimate_tracking_spec.rb +44 -0
- data/spec/tracking_factory_spec.rb +42 -0
- data/spec/trello_authorize_spec.rb +65 -0
- data/spec/trello_configuration_spec.rb +43 -0
- data/spec/trello_tracker_spec.rb +26 -0
- data/tracco.gemspec +41 -0
- data/tracco.sublime-project +10 -0
- metadata +316 -0
data/.gitignore
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
config.yml
|
2
|
+
mongoid.yml
|
3
|
+
.rvmrc
|
4
|
+
tracco.sublime-workspace
|
5
|
+
|
6
|
+
.tmtags
|
7
|
+
.tags
|
8
|
+
.tags_sorted_by_file
|
9
|
+
|
10
|
+
.DS_Store
|
11
|
+
*.gem
|
12
|
+
*.rbc
|
13
|
+
.bundle
|
14
|
+
.config
|
15
|
+
coverage
|
16
|
+
InstalledFiles
|
17
|
+
lib/bundler/man
|
18
|
+
pkg
|
19
|
+
rdoc
|
20
|
+
spec/reports
|
21
|
+
test/tmp
|
22
|
+
test/version_tmp
|
23
|
+
tmp
|
24
|
+
|
25
|
+
# YARD artifacts
|
26
|
+
.yardoc
|
27
|
+
_yardoc
|
28
|
+
doc/
|
data/.rspec
ADDED
data/.rvmrc.template
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 1.9.3
|
4
|
+
|
5
|
+
env:
|
6
|
+
global:
|
7
|
+
- developer_public_key: e/zPNGKOwapoxFWZs/CBTAhaoqrDTkqqz+InOmCUvGBcZBpUxH398nPLv8Hi\nNQSvWuspzqanyNbbQrTA/2XhsWF1gIFX+gNexYM7S+MxtRwUD3cpVT8DzVOS\nMuckdMTEAADVsm92vIX/bUs5igxD4+zfXlhzXUNDrzRlZnsUF2M=
|
8
|
+
- access_token_key: GG1Q8oq7GkaXjP0lbMgvQLLEi+LXOZlwmELqjPk39Exfy8114QUs2ki8nr9n\ndGO+tgOSZsCd/bt9IHxS3WWWU0INSYOTgp/prfsDDgosg7/Elk/b6w1OW0At\nX3VAjMeI0yAGloT6XB58LCFyrj6S2b4vCQqyaHR3tlTHai/5bMQ=
|
9
|
+
- tracker_username=trackinguser
|
10
|
+
- MONGOID_ENV=test
|
11
|
+
|
12
|
+
services:
|
13
|
+
- mongodb
|
14
|
+
|
15
|
+
script: ./script/ci/run_build.sh
|
16
|
+
|
17
|
+
before_script:
|
18
|
+
- mongo tracco_test --eval 'db.addUser("travis", "test");'
|
19
|
+
- "./script/ci/before_script.sh"
|
20
|
+
|
data/CHANGELOG
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
0.0.8 - 0.0.9
|
2
|
+
- Gem rename :)
|
3
|
+
|
4
|
+
0.0.7
|
5
|
+
- Minor refactorings on the rake tasks
|
6
|
+
|
7
|
+
0.0.6
|
8
|
+
- Added TrackedCard#status to track card status: :todo if no effort has been spent, :done if the card is in a DONE column, :in_progress otherwise
|
9
|
+
- Added a Members#effort_spent and #effort_spent_since to extract the overall effort tracked by a member since a given date
|
10
|
+
- Re-merged in the trello_effort_app branch to bring on the Rails app
|
11
|
+
|
12
|
+
0.0.5
|
13
|
+
- Improved docs
|
14
|
+
- Improved use of this tool as a gem
|
15
|
+
|
16
|
+
0.0.4
|
17
|
+
- A card moved into a DONE column is closed
|
18
|
+
|
19
|
+
0.0.3
|
20
|
+
- When I send a tracking with "DONE" then the card is "closed" (aka "finished")
|
21
|
+
- Export all cards in a Google Docs spreadsheet
|
22
|
+
- When I card change its name, the tracked card should be updated too
|
23
|
+
- A card should tells its estimate error (3)
|
24
|
+
|
25
|
+
0.0.2
|
26
|
+
- Very simple Rails app on a separate branch, still experimenting
|
27
|
+
- Should be able to open a Trello console with a rake task
|
28
|
+
- Avoid running the script if already run for that period
|
29
|
+
- Tracking data is now persisted in a mongo database
|
30
|
+
|
31
|
+
0.0.1
|
32
|
+
- Initial Release.
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
tracco (0.0.9)
|
5
|
+
bson_ext
|
6
|
+
chronic
|
7
|
+
google_drive
|
8
|
+
highline
|
9
|
+
mongoid
|
10
|
+
rainbow
|
11
|
+
ruby-trello
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: https://rubygems.org/
|
15
|
+
specs:
|
16
|
+
activemodel (3.2.12)
|
17
|
+
activesupport (= 3.2.12)
|
18
|
+
builder (~> 3.0.0)
|
19
|
+
activesupport (3.2.12)
|
20
|
+
i18n (~> 0.6)
|
21
|
+
multi_json (~> 1.0)
|
22
|
+
addressable (2.3.2)
|
23
|
+
bson (1.8.2)
|
24
|
+
bson_ext (1.8.2)
|
25
|
+
bson (~> 1.8.2)
|
26
|
+
builder (3.0.4)
|
27
|
+
chronic (0.9.0)
|
28
|
+
columnize (0.3.6)
|
29
|
+
database_cleaner (0.9.1)
|
30
|
+
debugger (1.3.1)
|
31
|
+
columnize (>= 0.3.1)
|
32
|
+
debugger-linecache (~> 1.1.1)
|
33
|
+
debugger-ruby_core_source (~> 1.1.8)
|
34
|
+
debugger-linecache (1.1.2)
|
35
|
+
debugger-ruby_core_source (>= 1.1.1)
|
36
|
+
debugger-ruby_core_source (1.1.8)
|
37
|
+
diff-lcs (1.1.3)
|
38
|
+
faraday (0.8.5)
|
39
|
+
multipart-post (~> 1.1)
|
40
|
+
google_drive (0.3.3)
|
41
|
+
nokogiri (>= 1.4.4, != 1.5.2, != 1.5.1)
|
42
|
+
oauth (>= 0.3.6)
|
43
|
+
oauth2 (>= 0.5.0)
|
44
|
+
highline (1.6.15)
|
45
|
+
httpauth (0.2.0)
|
46
|
+
i18n (0.6.1)
|
47
|
+
json (1.7.7)
|
48
|
+
jwt (0.1.5)
|
49
|
+
multi_json (>= 1.0)
|
50
|
+
mime-types (1.21)
|
51
|
+
mongoid (3.1.0)
|
52
|
+
activemodel (~> 3.2)
|
53
|
+
moped (~> 1.4.2)
|
54
|
+
origin (~> 1.0)
|
55
|
+
tzinfo (~> 0.3.22)
|
56
|
+
mongoid-rspec (1.6.0)
|
57
|
+
mongoid (>= 3.0.1)
|
58
|
+
rake
|
59
|
+
rspec (>= 2.9)
|
60
|
+
moped (1.4.2)
|
61
|
+
multi_json (1.6.0)
|
62
|
+
multi_xml (0.5.3)
|
63
|
+
multipart-post (1.1.5)
|
64
|
+
nokogiri (1.5.6)
|
65
|
+
oauth (0.4.7)
|
66
|
+
oauth2 (0.9.0)
|
67
|
+
faraday (~> 0.8)
|
68
|
+
httpauth (~> 0.1)
|
69
|
+
jwt (~> 0.1.4)
|
70
|
+
multi_json (~> 1.0)
|
71
|
+
multi_xml (~> 0.5)
|
72
|
+
rack (~> 1.2)
|
73
|
+
origin (1.0.11)
|
74
|
+
rack (1.5.2)
|
75
|
+
rainbow (1.1.4)
|
76
|
+
rake (10.0.3)
|
77
|
+
rest-client (1.6.7)
|
78
|
+
mime-types (>= 1.16)
|
79
|
+
rspec (2.12.0)
|
80
|
+
rspec-core (~> 2.12.0)
|
81
|
+
rspec-expectations (~> 2.12.0)
|
82
|
+
rspec-mocks (~> 2.12.0)
|
83
|
+
rspec-core (2.12.2)
|
84
|
+
rspec-expectations (2.12.1)
|
85
|
+
diff-lcs (~> 1.1.3)
|
86
|
+
rspec-mocks (2.12.2)
|
87
|
+
ruby-trello (0.5.1)
|
88
|
+
activemodel
|
89
|
+
addressable (~> 2.3)
|
90
|
+
json
|
91
|
+
oauth (~> 0.4.5)
|
92
|
+
rest-client (~> 1.6.7)
|
93
|
+
simplecov (0.7.1)
|
94
|
+
multi_json (~> 1.0)
|
95
|
+
simplecov-html (~> 0.7.1)
|
96
|
+
simplecov-html (0.7.1)
|
97
|
+
tzinfo (0.3.35)
|
98
|
+
|
99
|
+
PLATFORMS
|
100
|
+
ruby
|
101
|
+
|
102
|
+
DEPENDENCIES
|
103
|
+
database_cleaner
|
104
|
+
debugger
|
105
|
+
mongoid-rspec
|
106
|
+
rake
|
107
|
+
rspec
|
108
|
+
rspec-mocks
|
109
|
+
simplecov
|
110
|
+
tracco!
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Pietro Di Bello
|
2
|
+
2012
|
3
|
+
|
4
|
+
In the original BSD license, both occurrences of the phrase "COPYRIGHT HOLDERS AND CONTRIBUTORS" in the disclaimer read "REGENTS AND CONTRIBUTORS".
|
5
|
+
|
6
|
+
Here is the license template:
|
7
|
+
|
8
|
+
Copyright (c) 2012, Pietro Di Bello
|
9
|
+
All rights reserved.
|
10
|
+
|
11
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
12
|
+
|
13
|
+
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
14
|
+
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
@@ -0,0 +1,292 @@
|
|
1
|
+
[](http://travis-ci.org/xpepper/tracco)
|
2
|
+
[](https://codeclimate.com/github/xpepper/tracco)
|
3
|
+
|
4
|
+
# Tracco
|
5
|
+
|
6
|
+
## What is Tracco?
|
7
|
+
Tracco is a Trello effort tracker: the purpose of Tracco is to extract and track estimates and actual efforts out of the cards on your Trello boards.
|
8
|
+
You simply notify all of your estimates and efforts tracked on your Trello cards using a conventional format.
|
9
|
+
Tracco will extract and store these estimates and actual efforts to let you mine useful key metrics (e.g. estimate errors, remaining efforts, pair programming frequencies, and so on).
|
10
|
+
|
11
|
+
## Why Tracco?
|
12
|
+
Trello is a very good surrogate for a physical team board: it's simple and effective, and it can really help when you have a distributed team.
|
13
|
+
That said, Trello does not (still) offer a way to track time estimated and actually spent on cards, though many people [ask for that feature](https://trello.com/card/time-tracking/4d5ea62fd76aa1136000000c/1054) on Trello's development board.
|
14
|
+
|
15
|
+
Having that precise need, we defined a simple convention to track estimates and efforts on cards: we use a predefined board member (let's call him 'tracking user') which we sent special notifications to (we call them 'tracking notifications').
|
16
|
+
This 'tracking user' will then receives estimates and efforts notifications, and Tracco will collect and store them.
|
17
|
+
Moreover, a web app will be soon available to properly present card estimates and efforts (we're working on it).
|
18
|
+
|
19
|
+
## More details
|
20
|
+
All you need to have to start using Tracco is a Trello account, a Trello board and a board member to use as 'tracking user'.
|
21
|
+
You'll also need to know your Trello developer key and generate a proper auth token to have access to the trackinguser's notifications.
|
22
|
+
To see how to have these two keys, see [the following section](#api_key).
|
23
|
+
|
24
|
+
The Trello API is used behind the scenes to read data from the team board. Tracco uses the awesome [Trello API Ruby wrapper](https://github.com/jeremytregunna/ruby-trello) for this purpose.
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
This tool can be used as a standalone gem or cloning this git repo.
|
28
|
+
|
29
|
+
### Installation as a ruby gem
|
30
|
+
|
31
|
+
```shell
|
32
|
+
gem install tracco
|
33
|
+
```
|
34
|
+
|
35
|
+
### Installation cloning the repo
|
36
|
+
|
37
|
+
```shell
|
38
|
+
git clone git://github.com/xpepper/tracco.git
|
39
|
+
```
|
40
|
+
|
41
|
+
Then cd in the cloned repo and copy the config template
|
42
|
+
|
43
|
+
```shell
|
44
|
+
cd tracco
|
45
|
+
cp config/config.template.yaml config/config.yml
|
46
|
+
```
|
47
|
+
|
48
|
+
and then fill the correct values in the placeholders in config.yml (see _"Where do I get an API key and API secret?"_ section).
|
49
|
+
|
50
|
+
Then copy the mongoid config template
|
51
|
+
|
52
|
+
```shell
|
53
|
+
cp config/mongoid.template.yaml config/mongoid.yml
|
54
|
+
```
|
55
|
+
|
56
|
+
and fill the correct values for the mongodb environments ([see here](http://mongoid.org/en/mongoid/docs/installation.html#configuration) to have more details).
|
57
|
+
|
58
|
+
Then run bundle to get all the required gems:
|
59
|
+
|
60
|
+
```shell
|
61
|
+
bundle install
|
62
|
+
```
|
63
|
+
|
64
|
+
|
65
|
+
Full Disclosure: this library is still work-in-progress, so if you find anything missing or not functioning as you expect it to, please [open an issue on github](https://github.com/xpepper/tracco/issues).
|
66
|
+
|
67
|
+
## Requirements
|
68
|
+
* [mongoDB](http://www.mongodb.org/) - macosx users with homebrew will just run 'brew install mongodb' to have mongoDB installed on their machine.
|
69
|
+
* (optional) [rvm](https://rvm.io/rvm/install/) is useful (but optional) for development
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
### <a id="api_key"></a>Where do I get an API key?
|
74
|
+
Log in to Trello with your account and visit [https://trello.com/1/appKey/generate](https://trello.com/1/appKey/generate) to get your developer\_public\_key.
|
75
|
+
|
76
|
+
### Where do I get an API Access Token Key?
|
77
|
+
To generate a proper access token key, log in to Trello with the 'tracking user' account. Then go to this URL:
|
78
|
+
|
79
|
+
https://trello.com/1/connect?key=<YOUR_DEVELOPER_PUBLIC_KEY>&name=Trello+Effort+Tracker&response_type=token&scope=read,write&expiration=never
|
80
|
+
|
81
|
+
At the end of this process, you'll receive a valid access\_token\_key, which is needed by Tracco to fetch all the tracking notifications sent to the 'tracking user'.
|
82
|
+
|
83
|
+
## Usage
|
84
|
+
The best way is to use one of the rake task defined, e.g.
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
rake 'run:today[test]' # will extract today's tracked data and store on the test db
|
88
|
+
|
89
|
+
rake run:today # will extract today's tracked data and store on the default (that is development) db
|
90
|
+
|
91
|
+
rake 'run:from_day[2012-11-1, production]' # will extract tracked data starting from November the 1st, 2012 and store them into the production db
|
92
|
+
```
|
93
|
+
|
94
|
+
Or you may just create a TrelloTracker instance and execute its track method.
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
require 'tracco'
|
98
|
+
|
99
|
+
tracker = TrelloTracker.new
|
100
|
+
tracker.track
|
101
|
+
```
|
102
|
+
|
103
|
+
## Configuration params
|
104
|
+
### Mongo storage configuration
|
105
|
+
Tracking data collected from Trello are stored in a MongoDB database.
|
106
|
+
|
107
|
+
There are two env variables you can set to configure mongodb
|
108
|
+
|
109
|
+
- `MONGOID_ENV` defines which mongodb env is actually used (development, test, production). Development is the default mongo environment.
|
110
|
+
- `MONGOID_CONFIG_PATH` defines the path to the mongoid configuration file (default is `config/mongoid.yml`)
|
111
|
+
|
112
|
+
A standard mongoid.yml is the following:
|
113
|
+
|
114
|
+
```yml
|
115
|
+
development:
|
116
|
+
sessions:
|
117
|
+
default:
|
118
|
+
database: tracco_dev
|
119
|
+
hosts:
|
120
|
+
- localhost:27017
|
121
|
+
test:
|
122
|
+
sessions:
|
123
|
+
default:
|
124
|
+
database: tracco_test
|
125
|
+
hosts:
|
126
|
+
- localhost:27017
|
127
|
+
production:
|
128
|
+
autocreate_indexes: true
|
129
|
+
persist_in_safe_mode: true
|
130
|
+
|
131
|
+
sessions:
|
132
|
+
default:
|
133
|
+
database: tracco_production
|
134
|
+
hosts:
|
135
|
+
- localhost:27017
|
136
|
+
```
|
137
|
+
|
138
|
+
#### Trello configuration params
|
139
|
+
You can set the Trello's configuration params in three ways.
|
140
|
+
Through the following environment variables (ENV object):
|
141
|
+
|
142
|
+
```
|
143
|
+
access_token_key
|
144
|
+
developer_public_key
|
145
|
+
tracker_username
|
146
|
+
```
|
147
|
+
|
148
|
+
Passing into the constructor a hash containing the auth values:
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
tracker = TrelloTracker.new(
|
152
|
+
developer_public_key: "487635b55e6fe9021902fa763b4d101a",
|
153
|
+
access_token_key: "33bed56f2a12a49c9ba1c2d6ad3e2002e11a34358c3f3fe260d7fba746a06203",
|
154
|
+
tracker_username: "my_personal_tracker")
|
155
|
+
|
156
|
+
tracker.track
|
157
|
+
```
|
158
|
+
|
159
|
+
Or using the config.yml (which is the actual fallback mode, useful in development mode).
|
160
|
+
|
161
|
+
### Console
|
162
|
+
You can open a irb console with the ruby-trello gem and this gem loaded, so that you can query the db or the Trello API and play with them
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
rake console
|
166
|
+
```
|
167
|
+
|
168
|
+
The default env is development. To load a console in the (e.g.) production db env, execute:
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
rake "console[production]"
|
172
|
+
```
|
173
|
+
|
174
|
+
### Estimate format convention
|
175
|
+
To set an estimate on a card, a Trello user should send a notification from that card to the tracker username, e.g.
|
176
|
+
|
177
|
+
@trackinguser [15p]
|
178
|
+
@trackinguser [1.5d]
|
179
|
+
@trackinguser [12h]
|
180
|
+
|
181
|
+
estimates can be given in hours (h), days (d/g) or pomodori (p).
|
182
|
+
|
183
|
+
@trackinguser 22.11.2012 [4h]
|
184
|
+
|
185
|
+
will add the estimate (4 hours) in date 22.11.2012.
|
186
|
+
|
187
|
+
### Effort format convention
|
188
|
+
To set an effort in the current day on a card, a Trello user should send a notification from that card to the tracker username, e.g.
|
189
|
+
|
190
|
+
@trackinguser +6p
|
191
|
+
@trackinguser +4h
|
192
|
+
@trackinguser +0.5g
|
193
|
+
|
194
|
+
efforts can be given in hours (h), days (d/g) or pomodori (p).
|
195
|
+
|
196
|
+
### Tracking an effort in a specific date
|
197
|
+
To set an effort in a date different from the notification date, just add a date in the message
|
198
|
+
|
199
|
+
@trackinguser 23.10.2012 +6p
|
200
|
+
|
201
|
+
There's even a shortcut for efforts spent yesterday:
|
202
|
+
|
203
|
+
@trackinguser yesterday +6p
|
204
|
+
@trackinguser +6p yesterday
|
205
|
+
|
206
|
+
### Tracking an effort on more members
|
207
|
+
By default, the effort is tracked on the member which sends the tracking notification.
|
208
|
+
|
209
|
+
To set an effort for more than a Trello user (e.g. pair programming), just add the other user in the message, e.g.
|
210
|
+
|
211
|
+
@trackinguser +3p @alessandrodescovi
|
212
|
+
|
213
|
+
To set an effort just for other Trello users (excluding the current user), just include the users in round brackets, e.g.
|
214
|
+
|
215
|
+
@trackinguser +3p (@alessandrodescovi @michelevincenzi)
|
216
|
+
|
217
|
+
### Tracking a card as finished (aka DONE)
|
218
|
+
Sending a tracking notification with the word DONE
|
219
|
+
|
220
|
+
@trackinguser DONE
|
221
|
+
|
222
|
+
will mark the card as closed.
|
223
|
+
|
224
|
+
Moreover, a card moved into a DONE column (the name of the Trello list contains the word "Done") is automatically marked as done.
|
225
|
+
|
226
|
+
## Database import/export
|
227
|
+
To export the db you can execute something like:
|
228
|
+
|
229
|
+
```shell
|
230
|
+
mongoexport --db tracco_production --collection tracked_cards --out tracco_production.json
|
231
|
+
```
|
232
|
+
|
233
|
+
To reimport that db:
|
234
|
+
|
235
|
+
```shell
|
236
|
+
mongoimport --db tracco_production --collection tracked_cards --file tracco_production.json
|
237
|
+
```
|
238
|
+
|
239
|
+
## Google Docs exporter
|
240
|
+
To export all your tracked cards on a google docs named 'my_sheet' in the 'tracking' worksheet, run
|
241
|
+
|
242
|
+
```ruby
|
243
|
+
rake "export:google_docs[my_sheet, tracking, production]"
|
244
|
+
```
|
245
|
+
The default env is development.
|
246
|
+
|
247
|
+
If you provide no name for the spreadsheet, a default name will be used.
|
248
|
+
If the spreadsheet name you provide does not exists, it will be created in you google drive account.
|
249
|
+
|
250
|
+
So, running simply
|
251
|
+
|
252
|
+
```ruby
|
253
|
+
rake export:google_docs
|
254
|
+
```
|
255
|
+
will create (or update) a spreadsheet named "trello effort tracking" using the development db env.
|
256
|
+
|
257
|
+
## Keeping your tracking database up to date
|
258
|
+
You may install a crontab entry to run the trello tracker periodically, for example
|
259
|
+
|
260
|
+
```shell
|
261
|
+
SHELL=/Users/futur3/.rvm/bin/rvm-shell
|
262
|
+
GEMSET="ruby-1.9.3-p385@spikes"
|
263
|
+
PROJECT_PATH="/Users/$USER/Documents/workspace/tracco"
|
264
|
+
LC_ALL=en_US.UTF-8
|
265
|
+
|
266
|
+
# m h dom mon dow command
|
267
|
+
*/10 * * * * rvm-shell $GEMSET -c "cd $PROJECT_PATH; bundle exec rake run:today[production]" >> /tmp/crontab.out 2>&1
|
268
|
+
```
|
269
|
+
|
270
|
+
## Roadmap and improvements
|
271
|
+
We develop Tracco using [Trello itself](https://trello.com/board/trello-effort-tracker-roadmap/509c3228dcb1ac3f1c018791).
|
272
|
+
|
273
|
+
## Contributing
|
274
|
+
To get started, [sign the Contributor License Agreement](http://www.clahub.com/agreements/xpepper/tracco).
|
275
|
+
|
276
|
+
If you'd like to hack on Tracco, start by forking the repo on GitHub:
|
277
|
+
|
278
|
+
https://github.com/xpepper/tracco
|
279
|
+
|
280
|
+
The best way to get your changes merged back into core is as follows:
|
281
|
+
|
282
|
+
1. Clone down your fork
|
283
|
+
1. Create a thoughtfully named topic branch to contain your change
|
284
|
+
1. Hack away
|
285
|
+
1. Add tests and make sure everything still passes by running `rake spec`
|
286
|
+
1. If you are adding new functionality, document it in the README
|
287
|
+
1. Do not change the version number, we will do that on our end
|
288
|
+
1. If necessary, rebase your commits into logical chunks, without errors
|
289
|
+
1. Push the branch up to GitHub
|
290
|
+
1. Send a pull request for your branch
|
291
|
+
|
292
|
+
[@pierodibello](http://twitter.com/pierodibello)
|