Time Tracking application for GitLab Issue Queues built on Ruby Sinatra and MongoDB.
Register/Create an Application at https://gitlab.com/oauth/applications/new. Set your fields to the following:
1.1. Name: GitLab-Time-Tracking
or whatever you want to call your application.
1.2. Redirect URI: http://localhost:9292/auth/gitlab/callback
Install MongoDB (typically: brew update
, followed by: brew install mongodb
)
cd
into the repository's app
folder and run the following commands in the app
folder:
3.1. Run mongod
in terminal
3.2. Open a second terminal window in the app
folder and run: bundle install
3.3. Get the Client ID/Application ID and Client Secret/Application Secret from the settings of your created/registered GitLab Application in Step 1.
3.4. In the second terminal window copy the below, add your Client ID and Client Secret, and run: GITLAB_ENDPOINT="https://gitlab.com" GITLAB_CLIENT_ID="APPLICATION_ID" GITLAB_CLIENT_SECRET="APPLICATION_SECRET" MONGODB_HOST="localhost" MONGODB_PORT="27017" MONGODB_DB="GitLab" MONGODB_COLL="Issues_Time_Tracking" bundle exec rackup
Go to http://localhost:9292
Logging time for a specific issue should be done in its own comment. The comment should not include any data other than the time tracking information.
:clock1: 2h
# => :clock1: 2h
:clock1: 2h | 3pm
# => :clock1: 2h | 3pm
:clock1: 2h | 3:20pm
# => :clock1: 2h | 3:20pm
:clock1: 2h | Feb 26, 2014
# => :clock1: 2h | Feb 26, 2014
:clock1: 2h | Feb 26, 2014 3pm
# => :clock1: 2h | Feb 26, 2014 3pm
:clock1: 2h | Feb 26, 2014 3:20pm
# => :clock1: 2h | Feb 26, 2014 3:20pm
:clock1: 2h | Installed security patch and restarted the server.
# => :clock1: 2h | Installed security patch and restarted the server.
:clock1: 2h | 3pm | Installed security patch and restarted the server.
# => :clock1: 2h | 3pm | Installed security patch and restarted the server.
:clock1: 2h | 3:20pm | Installed security patch and restarted the server.
# => :clock1: 2h | 3:20pm | Installed security patch and restarted the server.
:clock1: 2h | Feb 26, 2014 | Installed security patch and restarted the server.
# => :clock1: 2h | Feb 26, 2014 | Installed security patch and restarted the server.
:clock1: 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server.
# => :clock1: 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server.
:clock1: 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server.
# => :clock1: 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server.
Dates and times can be provided in various formats, but the above formats are recommended for plain text readability.
Any GitHub.com supported clock
Emoji is supported:
":clock130:", ":clock11:", ":clock1230:", ":clock3:", ":clock430:", ":clock6:", ":clock730:", ":clock9:", ":clock10:", ":clock1130:", ":clock2:", ":clock330:", ":clock5:", ":clock630:", ":clock8:", ":clock930:", ":clock1:", ":clock1030:", ":clock12:", ":clock230:", ":clock4:", ":clock530:", ":clock7:", ":clock830:"
:clock1: :free: 2h
# => :clock1: :free: 2hLogging a budget for a milestone should be done at the beginning of the milestone description. The typical milestone description information comes after the budget information. See example 2 below for a typical usage pattern.
:dart: 5d
# => :dart: 5d
:dart: 5d | We cannot go over this time at all!
# => :dart: 5d | We cannot go over this time at all!
The ability to indicate where a Time Log and Budget is considered Non-Billable has been provided. This is typically used when staff are doing work that will not be billed to the client, but you want to track their time and indicate how much non-billable/free time has been allocated. The assumption is that all time logs and budgets are billable unless indicated to be Non-Billable.
You may indicate when a time log or budget is non-billable time in any Issue Time Log, Issue Budget, Milestone Budget, Code Commit Message, and Code Commit Comment.
To indicate if time or budgets are non-billable, you add the :free:
:free: emoji right after your chosen clock
emoji (like :clock1:
:clock1:) or for budget you would place the :free:
:free: emoji right after the :dart:
:dart: emoji.
:clock1: :free: 2h
# => :clock1: :free: 2h:dart: :free: 5d
# => :dart: :free: 5d