Skip to content

Commit

Permalink
first graphs and new services
Browse files Browse the repository at this point in the history
  • Loading branch information
schacon committed May 2, 2012
1 parent fb8d9d7 commit b6d341c
Show file tree
Hide file tree
Showing 7 changed files with 288 additions and 17 deletions.
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ gem 'diff-lcs'
gem 'redcarpet'
gem 'nestful'
gem "awesome_print"
gem 'newrelic_rpm'
gem 'exceptional'

# Gems used only for assets and not required
# in production environments by default.
Expand Down
5 changes: 5 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ GEM
diff-lcs (1.1.3)
erubis (2.7.0)
eventmachine (0.12.10)
exceptional (2.0.32)
rack
excon (0.9.6)
execjs (1.3.0)
multi_json (~> 1.0)
Expand Down Expand Up @@ -102,6 +104,7 @@ GEM
nestful (0.0.8)
activesupport (>= 3.0.0.beta)
netrc (0.7.1)
newrelic_rpm (3.3.4.1)
octokit (1.0.2)
addressable (~> 2.2)
faraday (~> 0.7)
Expand Down Expand Up @@ -188,6 +191,7 @@ DEPENDENCIES
compass-rails
dalli
diff-lcs
exceptional
excon (~> 0.9.4)
factory_girl_rails
faraday
Expand All @@ -199,6 +203,7 @@ DEPENDENCIES
less-rails-bootstrap
nestful
netrc
newrelic_rpm
octokit
pg
rails (= 3.2.2)
Expand Down
8 changes: 5 additions & 3 deletions TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ Initial Launch (3.0):
- add transcription to search?
- add to related items

* release notes box
- needs local cached version of release notes

* Misc
# linkify front page
# get company logo perms (twitter)
Expand All @@ -24,11 +27,13 @@ Initial Launch (3.0):
- page titles filled out
- redirect whygitisbetter to about page
- link to git for windows page
- user-manual not present

- rebase history before launch
- reindex command - drops index and re-does everything
* generate all languages
- progit.org -> git-scm.com/book
- regenerate all reference pages: /git-fetch/1.7.3.2 looks wrong

--

Expand All @@ -48,9 +53,6 @@ Initial Launch (3.0):
* remember version
* dismiss dropdown when clicking elsewhere

* release notes box
- needs local cached version of release notes

* Documentation
- gitref content
- try git!
Expand Down
26 changes: 26 additions & 0 deletions app/helpers/site_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,30 @@ def highlight_no_html(high)
.gsub('[highlight]', '<span class="highlight">')
.gsub('[xhighlight]', '</span>')
end

def gchart(title, data)
labels = data.map {|v| v[0] }
vals = data.map {|v| v[1] }

v = vals.join(',')
l = labels.join('|')

scale = vals.max
c = "<img src=\"http://chart.apis.google.com/chart?"
c += "chxt=x" + "&amp;"
c += "cht=bvs" + "&amp;"
c += "chl=#{l}" + "&amp;"
c += "chd=t:#{v}" + "&amp;"
c += "chds=0,#{scale}" + "&amp;"
c += "chs=100x125" + "&amp;"
if vals.size == 3
c += "chco=009099|009099|E05F49" + "&amp;"
else
c += "chco=009099|E05F49" + "&amp;"
end
c += "chf=bg,s,fcfcfa&"
c += "chtt=#{title}"
c += "\" alt=\"init benchmarks\" />"
c
end
end
36 changes: 22 additions & 14 deletions app/views/about/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -77,21 +77,29 @@
%p
If you don't believe me, let's see how common operations stack up against
Subversion, a common centralized version control system that is similar
to CVS or Perforce.
to CVS or Perforce. <em>Smaller is faster</em>

%table{:width => '100%'}
%tr
%td
=raw gchart("Commit", [['git', 0.649], ['svn', 2.6]])
=raw gchart("Commit", [['git', 1.53], ['svn', 24.7]])
=raw gchart("Diff Curr", [['git', 0.257], ['svn', 1.09]])
=raw gchart("Diff Rec", [['git', 0.248], ['svn', 3.99]])
=raw gchart("Diff First", [['git', 1.71], ['svn', 6.57]])
=raw gchart("Diff Tags", [['git', 1.17], ['svn', 83.57]])
=raw gchart("Log (50)", [['git', 0.012], ['svn', 0.381]])
=raw gchart("Log (All)", [['git', 0.519], ['svn', 169.197]])
=raw gchart("Log (File)", [['git', 0.601], ['svn', 82.843]])
=raw gchart("Update", [['git', 0.896], ['svn', 2.816]])
=raw gchart("Blame", [['git', 1.91], ['svn', 3.04]])

%table{:width => '100%'}
%tr
%td
=raw gchart("Clone", [['svn', 14.0], ['git*', 21.0], ['git', 107.5]])
=raw gchart("Size", [['svn', 132], ['git', 181]])

(Small and large projects for each)

%ul.bullets
%li clone vs checkout
%li status
%li commit + push vs commit
%li local diff
%li historical diff
%li log
%li pull vs update
%li branch switching
%li branch compare
%li merge



Expand Down
1 change: 1 addition & 0 deletions config/exceptional.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
api-key: <%= ENV["EXCEPTIONAL_API_KEY"] %>
227 changes: 227 additions & 0 deletions config/newrelic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
#
# This file configures the New Relic Agent. New Relic monitors
# Ruby, Java, .NET, PHP, and Python applications with deep visibility and low overhead.
# For more information, visit www.newrelic.com.
#
# Generated April 30, 2012
#
# This configuration file is custom generated for GitHub_2

# Here are the settings that are common to all environments:
common: &default_settings
# ============================== LICENSE KEY ===============================

# You must specify the license key associated with your New Relic
# account. This key binds your Agent's data to your account in the
# New Relic service.
license_key: '<%= ENV["NEWRELIC_LICENSE_KEY"] %>'

# Agent Enabled (Ruby/Rails Only)
# Use this setting to force the agent to run or not run.
# Default is 'auto' which means the agent will install and run only
# if a valid dispatcher such as Mongrel is running. This prevents
# it from running with Rake or the console. Set to false to
# completely turn the agent off regardless of the other settings.
# Valid values are true, false and auto.
# agent_enabled: auto

# Application Name
# Set this to be the name of your application as you'd like it show
# up in New Relic. New Relic will then auto-map instances of your application
# into a New Relic "application" on your home dashboard page. If you want
# to map this instance into multiple apps, like "AJAX Requests" and
# "All UI" then specify a semicolon-separated list of up to three
# distinct names. If you comment this out, it defaults to the
# capitalized RAILS_ENV (i.e., Production, Staging, etc)
app_name: GitScm

# When "true", the agent collects performance data about your
# application and reports this data to the New Relic service at
# newrelic.com. This global switch is normally overridden for each
# environment below. (formerly called 'enabled')
monitor_mode: true

# Developer mode should be off in every environment but
# development as it has very high overhead in memory.
developer_mode: false

# The newrelic agent generates its own log file to keep its logging
# information separate from that of your application. Specify its
# log level here.
log_level: info

# The newrelic agent communicates with the New Relic service via http by
# default. If you want to communicate via https to increase
# security, then turn on SSL by setting this value to true. Note,
# this will result in increased CPU overhead to perform the
# encryption involved in SSL communication, but this work is done
# asynchronously to the threads that process your application code,
# so it should not impact response times.
ssl: false

# EXPERIMENTAL: enable verification of the SSL certificate sent by
# the server. This setting has no effect unless SSL is enabled
# above. This may block your application. Only enable it if the data
# you send us needs end-to-end verified certificates.
#
# This means we cannot cache the DNS lookup, so each request to the
# New Relic service will perform a lookup. It also means that we cannot
# use a non-blocking lookup, so in a worst case, if you have DNS
# problems, your app may block indefinitely.
# verify_certificate: true

# Set your application's Apdex threshold value with the 'apdex_t'
# setting, in seconds. The apdex_t value determines the buckets used
# to compute your overall Apdex score.
# Requests that take less than apdex_t seconds to process will be
# classified as Satisfying transactions; more than apdex_t seconds
# as Tolerating transactions; and more than four times the apdex_t
# value as Frustrating transactions.
# For more about the Apdex standard, see
# http://newrelic.com/docs/general/apdex
apdex_t: 0.5

# Proxy settings for connecting to the New Relic server.
#
# If a proxy is used, the host setting is required. Other settings
# are optional. Default port is 8080.
#
# proxy_host: hostname
# proxy_port: 8080
# proxy_user:
# proxy_pass:

# Tells transaction tracer and error collector (when enabled)
# whether or not to capture HTTP params. When true, frameworks can
# exclude HTTP parameters from being captured.
# Rails: the RoR filter_parameter_logging excludes parameters
# Java: create a config setting called "ignored_params" and set it to
# a comma separated list of HTTP parameter names.
# ex: ignored_params: credit_card, ssn, password
capture_params: false

# Transaction tracer captures deep information about slow
# transactions and sends this to the New Relic service once a
# minute. Included in the transaction is the exact call sequence of
# the transactions including any SQL statements issued.
transaction_tracer:

# Transaction tracer is enabled by default. Set this to false to
# turn it off. This feature is only available at the Professional
# product level.
enabled: true

# Threshold in seconds for when to collect a transaction
# trace. When the response time of a controller action exceeds
# this threshold, a transaction trace will be recorded and sent to
# New Relic. Valid values are any float value, or (default) "apdex_f",
# which will use the threshold for an dissatisfying Apdex
# controller action - four times the Apdex T value.
transaction_threshold: apdex_f

# When transaction tracer is on, SQL statements can optionally be
# recorded. The recorder has three modes, "off" which sends no
# SQL, "raw" which sends the SQL statement in its original form,
# and "obfuscated", which strips out numeric and string literals.
record_sql: obfuscated

# Threshold in seconds for when to collect stack trace for a SQL
# call. In other words, when SQL statements exceed this threshold,
# then capture and send to New Relic the current stack trace. This is
# helpful for pinpointing where long SQL calls originate from.
stack_trace_threshold: 0.500

# Determines whether the agent will capture query plans for slow
# SQL queries. Only supported in mysql and postgres. Should be
# set to false when using other adapters.
# explain_enabled: true

# Threshold for query execution time below which query plans will not
# not be captured. Relevant only when `explain_enabled` is true.
# explain_threshold: 0.5

# Error collector captures information about uncaught exceptions and
# sends them to New Relic for viewing
error_collector:

# Error collector is enabled by default. Set this to false to turn
# it off. This feature is only available at the Professional
# product level.
enabled: true

# Rails Only - tells error collector whether or not to capture a
# source snippet around the place of the error when errors are View
# related.
capture_source: true

# To stop specific errors from reporting to New Relic, set this property
# to comma-separated values. Default is to ignore routing errors,
# which are how 404's get triggered.
ignore_errors: ActionController::RoutingError

# (Advanced) Uncomment this to ensure the CPU and memory samplers
# won't run. Useful when you are using the agent to monitor an
# external resource
# disable_samplers: true

# If you aren't interested in visibility in these areas, you can
# disable the instrumentation to reduce overhead.
#
# disable_view_instrumentation: true
# disable_activerecord_instrumentation: true
# disable_memcache_instrumentation: true
# disable_dj: true

# Certain types of instrumentation such as GC stats will not work if
# you are running multi-threaded. Please let us know.
# multi_threaded = false

# Application Environments
# ------------------------------------------
# Environment-specific settings are in this section.
# For Rails applications, RAILS_ENV is used to determine the environment.
# For Java applications, pass -Dnewrelic.environment <environment> to set
# the environment.

# NOTE if your application has other named environments, you should
# provide newrelic configuration settings for these environments here.

development:
<<: *default_settings
# Turn off communication to New Relic service in development mode (also
# 'enabled').
# NOTE: for initial evaluation purposes, you may want to temporarily
# turn agent communication on in development mode.
monitor_mode: false

# Rails Only - when running in Developer Mode, the New Relic Agent will
# present performance information on the last 100 transactions you have
# executed since starting the app server.
# NOTE: There is substantial overhead when running in developer mode.
# Do not use for production or load testing.
developer_mode: true

# Enable textmate links
# textmate: true

test:
<<: *default_settings
# It almost never makes sense to turn on the agent when running
# unit, functional or integration tests or the like.
monitor_mode: false

# Turn on the agent in production for 24x7 monitoring. New Relic
# testing shows an average performance impact of < 5 ms per
# transaction, so you can leave this on all the time without
# incurring any user-visible performance degradation.
production:
<<: *default_settings
monitor_mode: true

# Many applications have a staging environment which behaves
# identically to production. Support for that environment is provided
# here. By default, the staging environment has the agent turned on.
staging:
<<: *default_settings
monitor_mode: true
app_name: GitScm (Staging)

0 comments on commit b6d341c

Please sign in to comment.