[gitiles] Stop using "auto" endpoint (/+/)

- Change all instances of /+/ to either /+show/ or /+doc/
- Updated some instances to use the templates from go/gitiles
- Drive-by fix of style issues in go/gitiles package

Change-Id: Idf132f81191fe5a1edb7ff068891316ac0d22d1c
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/289780
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 82ffec4..75b2e3e 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -171,7 +171,7 @@
 
   The presubmit checks have been handpicked from the list of canned checks
   here:
-  https://chromium.googlesource.com/chromium/tools/depot_tools/+/master/presubmit_canned_checks.py
+  https://chromium.googlesource.com/chromium/tools/depot_tools/+show/master/presubmit_canned_checks.py
 
   The following are the presubmit checks:
   * Pylint is run if the change contains any .py files.
diff --git a/README.md b/README.md
index d4c4dcf..640f47f 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@
 
 Some code is generated using `go generate` with external binaries. First,
 install the version of protoc referenced in the [asset creation
-script](https://skia.googlesource.com/skia/+/master/infra/bots/assets/protoc/create.py)
+script](https://skia.googlesource.com/skia/+show/master/infra/bots/assets/protoc/create.py)
 and ensure it is on your PATH before other versions of protoc.
 
 Install the necessary go packages:
diff --git a/STYLEGUIDE.md b/STYLEGUIDE.md
index f767afd..33ba47a 100644
--- a/STYLEGUIDE.md
+++ b/STYLEGUIDE.md
@@ -20,7 +20,7 @@
 -------------
 
 Instead of `<iron-ajax>`, prefer using the family of sk.request methods, found in
-[common.js](https://skia.googlesource.com/buildbot/+/d3624df97a7422c542a739f36668f4831a2cda0b/res/js/common.js)
+[common.js](https://skia.googlesource.com/buildbot/+show/d3624df97a7422c542a739f36668f4831a2cda0b/res/js/common.js)
 
 **Rationale:** It is easier to debug procedural code over the declarative element.
 iron-ajax requires looking between template and the JS in the element declaration, which is sometimes a lot of scrolling.
@@ -44,7 +44,7 @@
 Elements should exist one per file, with the file name being the same as the element.
 If an Element has a helper element that should not be used alone, it may be included
 in the same file.
-Example: [details-summary.html](https://skia.googlesource.com/buildbot/+/d3624df97a7422c542a739f36668f4831a2cda0b/res/imp/details-summary.html)
+Example: [details-summary.html](https://skia.googlesource.com/buildbot/+show/d3624df97a7422c542a739f36668f4831a2cda0b/res/imp/details-summary.html)
 
 Naming Things
 -------------
diff --git a/android_compile/PROD.md b/android_compile/PROD.md
index 913b830..4f8a495 100644
--- a/android_compile/PROD.md
+++ b/android_compile/PROD.md
@@ -46,7 +46,7 @@
 NoPatchSucceeded to be false). If it is only affecting one backend then try syncing
 the mirrors again [here](https://skia-android-compile.corp.goog/).
 
-If nothing else works then make the bot an experimental bot in [commit-queue.cfg](https://skia.googlesource.com/skia/+/infra/config/commit-queue.cfg)
+If nothing else works then make the bot an experimental bot in [commit-queue.cfg](https://skia.googlesource.com/skia/+show/infra/config/commit-queue.cfg)
 and inform the Skia chat so developers are cautious with potentially breaking changes.
 Also contact the [robocop](http://tree-status.skia.org/robocop) with the
 contents of the failing NoPatchLog.
@@ -61,7 +61,7 @@
 NoPatchSucceeded to be false). If it is only affecting one backend then try syncing
 the mirrors again [here](https://skia-android-compile.corp.goog/).
 
-If nothing else works then make the bot an experimental bot in [commit-queue.cfg](https://skia.googlesource.com/skia/+/infra/config/commit-queue.cfg)
+If nothing else works then make the bot an experimental bot in [commit-queue.cfg](https://skia.googlesource.com/skia/+show/infra/config/commit-queue.cfg)
 and inform the Skia chat so developers are cautious with potentially breaking changes.
 Also contact the [robocop](http://tree-status.skia.org/robocop) with the
 contents of the failing NoPatchLog.
diff --git a/autoroll/PROD.md b/autoroll/PROD.md
index f3d607d..60ac5c3 100644
--- a/autoroll/PROD.md
+++ b/autoroll/PROD.md
@@ -103,7 +103,7 @@
 Useful documentation links:
 * How to checkout flutter is documented [here](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment).
 * License script documentation is [here](https://github.com/flutter/engine/blob/master/tools/licenses/README.md).
-* The code for the pre-upload license step used by the autoroller is [here](https://skia.googlesource.com/buildbot/+/master/autoroll/go/repo_manager/pre_upload_steps.go).
+* The code for the pre-upload license step used by the autoroller is [here](https://skia.googlesource.com/buildbot/+show/master/autoroll/go/repo_manager/parent/pre_upload_steps.go).
 
 
 Other Troubleshooting Tips
diff --git a/autoroll/README.md b/autoroll/README.md
index 69ce346..3b674a0 100644
--- a/autoroll/README.md
+++ b/autoroll/README.md
@@ -76,5 +76,5 @@
 For Skia Infra Team Members
 ---------------------------
 
-See [PROD.md] (https://skia.googlesource.com/buildbot/+/master/autoroll/PROD.md)
+See [PROD.md] (https://skia.googlesource.com/buildbot/+doc/master/autoroll/PROD.md)
 for information about handling alerts.
diff --git a/autoroll/config/afdo-chromium.json b/autoroll/config/afdo-chromium.json
index b9ce4a0..1199451 100644
--- a/autoroll/config/afdo-chromium.json
+++ b/autoroll/config/afdo-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "AFDO",
@@ -43,7 +43,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/angle-chromium.json b/autoroll/config/angle-chromium.json
index e5ea6f9..ebd4e49 100644
--- a/autoroll/config/angle-chromium.json
+++ b/autoroll/config/angle-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ANGLE",
@@ -27,7 +27,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/angle",
     "childRepo": "https://chromium.googlesource.com/angle/angle.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/angle/angle.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/angle/angle.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/angle-skia.json b/autoroll/config/angle-skia.json
index 9760b37..9b3f494 100644
--- a/autoroll/config/angle-skia.json
+++ b/autoroll/config/angle-skia.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ANGLE",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "third_party/externals/angle2",
     "childRepo": "https://chromium.googlesource.com/angle/angle.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/angle/angle.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/angle/angle.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/binaryen-emscripten-releases.json b/autoroll/config/binaryen-emscripten-releases.json
index acf40cb..3cbda90 100644
--- a/autoroll/config/binaryen-emscripten-releases.json
+++ b/autoroll/config/binaryen-emscripten-releases.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "binaryen",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "emscripten-releases/binaryen",
     "childRepo": "https://chromium.googlesource.com/external/github.com/WebAssembly/binaryen.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/WebAssembly/binaryen.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/WebAssembly/binaryen.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/catapult-chromium.json b/autoroll/config/catapult-chromium.json
index 5c5cec6..79c6631 100644
--- a/autoroll/config/catapult-chromium.json
+++ b/autoroll/config/catapult-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Catapult",
@@ -32,7 +32,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/catapult",
     "childRepo": "https://chromium.googlesource.com/catapult.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/catapult.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/catapult.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/chromite-chromium.json b/autoroll/config/chromite-chromium.json
index 4afc2bf..7f59c0a 100644
--- a/autoroll/config/chromite-chromium.json
+++ b/autoroll/config/chromite-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Chromite",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/chromite",
     "childRepo": "https://chromium.googlesource.com/chromiumos/chromite.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/chromite.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/chromite.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/chromium-skia.json b/autoroll/config/chromium-skia.json
index b098aef..c31e7ef 100644
--- a/autoroll/config/chromium-skia.json
+++ b/autoroll/config/chromium-skia.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Chromium",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "../src",
     "childRepo": "https://chromium.googlesource.com/chromium/src.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/src.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/src.git/+show/%s",
     "includeBugs": false,
     "includeLog": false,
     "parentBranch": "master",
diff --git a/autoroll/config/chromiumos-config-infra.json b/autoroll/config/chromiumos-config-infra.json
index ca7bd2a..ec9a70e 100644
--- a/autoroll/config/chromiumos-config-infra.json
+++ b/autoroll/config/chromiumos-config-infra.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "chromiumos/config",
@@ -27,7 +27,7 @@
     "childBranch": "master",
     "childPath": "infra/go/src/go.chromium.org/chromiumos/config",
     "childRepo": "https://chromium.googlesource.com/chromiumos/config.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/config.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/config.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/cros-afdo-airmont-chromium-beta.json b/autoroll/config/cros-afdo-airmont-chromium-beta.json
index 0e61cf3..021c444 100644
--- a/autoroll/config/cros-afdo-airmont-chromium-beta.json
+++ b/autoroll/config/cros-afdo-airmont-chromium-beta.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Airmont AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-airmont-chromium-stable.json b/autoroll/config/cros-afdo-airmont-chromium-stable.json
index f9f68da..f7bbd66 100644
--- a/autoroll/config/cros-afdo-airmont-chromium-stable.json
+++ b/autoroll/config/cros-afdo-airmont-chromium-stable.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Airmont AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-airmont-chromium.json b/autoroll/config/cros-afdo-airmont-chromium.json
index 5fe1217..38a2301 100644
--- a/autoroll/config/cros-afdo-airmont-chromium.json
+++ b/autoroll/config/cros-afdo-airmont-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Airmont AFDO profile",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-broadwell-chromium-beta.json b/autoroll/config/cros-afdo-broadwell-chromium-beta.json
index e51cf46..6c68153 100644
--- a/autoroll/config/cros-afdo-broadwell-chromium-beta.json
+++ b/autoroll/config/cros-afdo-broadwell-chromium-beta.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Broadwell AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-broadwell-chromium-stable.json b/autoroll/config/cros-afdo-broadwell-chromium-stable.json
index de7f967..d3a9210 100644
--- a/autoroll/config/cros-afdo-broadwell-chromium-stable.json
+++ b/autoroll/config/cros-afdo-broadwell-chromium-stable.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Broadwell AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-broadwell-chromium.json b/autoroll/config/cros-afdo-broadwell-chromium.json
index c68ec63..878ec5f 100644
--- a/autoroll/config/cros-afdo-broadwell-chromium.json
+++ b/autoroll/config/cros-afdo-broadwell-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Broadwell AFDO profile",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-silvermont-chromium-beta.json b/autoroll/config/cros-afdo-silvermont-chromium-beta.json
index 32bffb7..a96a96d 100644
--- a/autoroll/config/cros-afdo-silvermont-chromium-beta.json
+++ b/autoroll/config/cros-afdo-silvermont-chromium-beta.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Silvermont AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-silvermont-chromium-stable.json b/autoroll/config/cros-afdo-silvermont-chromium-stable.json
index be2a9e2..eaf6afb 100644
--- a/autoroll/config/cros-afdo-silvermont-chromium-stable.json
+++ b/autoroll/config/cros-afdo-silvermont-chromium-stable.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Silvermont AFDO profile",
@@ -36,7 +36,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-afdo-silvermont-chromium.json b/autoroll/config/cros-afdo-silvermont-chromium.json
index 89ec2ef..6340f5d 100644
--- a/autoroll/config/cros-afdo-silvermont-chromium.json
+++ b/autoroll/config/cros-afdo-silvermont-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Silvermont AFDO profile",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-orderfile-chromium-beta.json b/autoroll/config/cros-orderfile-chromium-beta.json
index b76693a..9ab1da8 100644
--- a/autoroll/config/cros-orderfile-chromium-beta.json
+++ b/autoroll/config/cros-orderfile-chromium-beta.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Orderfiles",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 CQ_EXTRA_TRYBOTS={{.CqExtraTrybots}}\n\
 TBR={{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-orderfile-chromium-stable.json b/autoroll/config/cros-orderfile-chromium-stable.json
index 7b538c9..9832eab 100644
--- a/autoroll/config/cros-orderfile-chromium-stable.json
+++ b/autoroll/config/cros-orderfile-chromium-stable.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Orderfiles",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 CQ_EXTRA_TRYBOTS={{.CqExtraTrybots}}\n\
 TBR={{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-orderfile-chromium.json b/autoroll/config/cros-orderfile-chromium.json
index 9e8ed22..c6c0c86 100644
--- a/autoroll/config/cros-orderfile-chromium.json
+++ b/autoroll/config/cros-orderfile-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "ChromeOS Orderfiles",
@@ -35,7 +35,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug\n\
 \n\
 Documentation for the AutoRoller is here:\n\
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md\n\
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md\n\
 \n\
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}\n\
 {{end}}Tbr: {{stringsJoin .Reviewers \",\"}}\n\
diff --git a/autoroll/config/cros-proto-infra.json b/autoroll/config/cros-proto-infra.json
index 3a6729c..bd6ec51 100644
--- a/autoroll/config/cros-proto-infra.json
+++ b/autoroll/config/cros-proto-infra.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "chromiumos/infra/proto",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "infra/go/src/go.chromium.org/chromiumos/infra/proto",
     "childRepo": "https://chromium.googlesource.com/chromiumos/infra/proto.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/infra/proto.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromiumos/infra/proto.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/dart-sdk-flutter-engine.json b/autoroll/config/dart-sdk-flutter-engine.json
index d7a38ff..2e00297 100644
--- a/autoroll/config/dart-sdk-flutter-engine.json
+++ b/autoroll/config/dart-sdk-flutter-engine.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#13
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#13
 // for documentation of the autoroller config.
 {
   "childName": "Dart SDK",
@@ -21,7 +21,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/dart",
     "childRepo": "https://dart.googlesource.com/sdk.git",
-    "childRevLinkTmpl": "https://dart.googlesource.com/sdk.git/+/%s",
+    "childRevLinkTmpl": "https://dart.googlesource.com/sdk.git/+show/%s",
     "forkRepoURL": "git@github.com:skia-flutter-autoroll/engine.git",
     "includeLog": true,
     "gclientSpec": "solutions=[{\"name\":\"src/flutter\",\"url\":\"git@github.com:flutter/engine.git\",\"deps_file\":\"DEPS\",\"managed\":False,\"custom_deps\":{},\"safesync_url\":\"\"}]",
diff --git a/autoroll/config/dawn-chromium.json b/autoroll/config/dawn-chromium.json
index e2054e2..63afeeb 100644
--- a/autoroll/config/dawn-chromium.json
+++ b/autoroll/config/dawn-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Dawn",
@@ -27,7 +27,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/dawn",
     "childRepo": "https://dawn.googlesource.com/dawn.git",
-    "childRevLinkTmpl": "https://dawn.googlesource.com/dawn.git/+/%s",
+    "childRevLinkTmpl": "https://dawn.googlesource.com/dawn.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/dawn-skia.json b/autoroll/config/dawn-skia.json
index 1716c4c..c025677 100644
--- a/autoroll/config/dawn-skia.json
+++ b/autoroll/config/dawn-skia.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "dawn",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "third_party/externals/dawn",
     "childRepo": "https://dawn.googlesource.com/dawn.git",
-    "childRevLinkTmpl": "https://dawn.googlesource.com/dawn.git/+/%s",
+    "childRevLinkTmpl": "https://dawn.googlesource.com/dawn.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "skia",
diff --git a/autoroll/config/depot-tools-chromium.json b/autoroll/config/depot-tools-chromium.json
index 071ce00..d60962a 100644
--- a/autoroll/config/depot-tools-chromium.json
+++ b/autoroll/config/depot-tools-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Depot Tools",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/depot_tools",
     "childRepo": "https://chromium.googlesource.com/chromium/tools/depot_tools.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/tools/depot_tools.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/devtools-frontend-chromium.json b/autoroll/config/devtools-frontend-chromium.json
index ecfb021..c059a5e 100644
--- a/autoroll/config/devtools-frontend-chromium.json
+++ b/autoroll/config/devtools-frontend-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "DevTools Frontend",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/devtools-frontend/src",
     "childRepo": "https://chromium.googlesource.com/devtools/devtools-frontend.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/devtools/devtools-frontend.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/devtools/devtools-frontend.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/emscripten-emscripten-releases.json b/autoroll/config/emscripten-emscripten-releases.json
index b48bd05..087bab2 100644
--- a/autoroll/config/emscripten-emscripten-releases.json
+++ b/autoroll/config/emscripten-emscripten-releases.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "emscripten",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "emscripten-releases/emscripten",
     "childRepo": "https://chromium.googlesource.com/external/github.com/emscripten-core/emscripten.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/emscripten-core/emscripten.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/emscripten-core/emscripten.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/flutter-engine-flutter.json b/autoroll/config/flutter-engine-flutter.json
index 48b7de7..5e79e8f 100644
--- a/autoroll/config/flutter-engine-flutter.json
+++ b/autoroll/config/flutter-engine-flutter.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Engine",
diff --git a/autoroll/config/freetype-chromium.json b/autoroll/config/freetype-chromium.json
index e0e96c6..0ee9bfc 100644
--- a/autoroll/config/freetype-chromium.json
+++ b/autoroll/config/freetype-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "FreeType",
@@ -28,7 +28,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/freetype/src",
     "childRepo": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/fuchsia-aemu-chromium.json b/autoroll/config/fuchsia-aemu-chromium.json
index a233bca..0c1f944 100644
--- a/autoroll/config/fuchsia-aemu-chromium.json
+++ b/autoroll/config/fuchsia-aemu-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia AEMU",
diff --git a/autoroll/config/fuchsia-linux-sdk-flutter-engine.json b/autoroll/config/fuchsia-linux-sdk-flutter-engine.json
index 85a459f..5780f03 100644
--- a/autoroll/config/fuchsia-linux-sdk-flutter-engine.json
+++ b/autoroll/config/fuchsia-linux-sdk-flutter-engine.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia Linux SDK",
diff --git a/autoroll/config/fuchsia-linux-toolchain-flutter-engine.json b/autoroll/config/fuchsia-linux-toolchain-flutter-engine.json
index 5a36737..c48da74 100644
--- a/autoroll/config/fuchsia-linux-toolchain-flutter-engine.json
+++ b/autoroll/config/fuchsia-linux-toolchain-flutter-engine.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia Linux Toolchain",
diff --git a/autoroll/config/fuchsia-mac-sdk-flutter-engine.json b/autoroll/config/fuchsia-mac-sdk-flutter-engine.json
index df9402d..73ec6f7 100644
--- a/autoroll/config/fuchsia-mac-sdk-flutter-engine.json
+++ b/autoroll/config/fuchsia-mac-sdk-flutter-engine.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia Mac SDK",
diff --git a/autoroll/config/fuchsia-mac-toolchain-flutter-engine.json b/autoroll/config/fuchsia-mac-toolchain-flutter-engine.json
index 8b447ae..0474b45 100644
--- a/autoroll/config/fuchsia-mac-toolchain-flutter-engine.json
+++ b/autoroll/config/fuchsia-mac-toolchain-flutter-engine.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia Mac Toolchain",
diff --git a/autoroll/config/fuchsia-sdk-chromium.json b/autoroll/config/fuchsia-sdk-chromium.json
index eec5c8f..e456378 100644
--- a/autoroll/config/fuchsia-sdk-chromium.json
+++ b/autoroll/config/fuchsia-sdk-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Fuchsia SDK",
diff --git a/autoroll/config/glslang-angle.json b/autoroll/config/glslang-angle.json
index f8ddbbe..94975f1 100644
--- a/autoroll/config/glslang-angle.json
+++ b/autoroll/config/glslang-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "glslang",
@@ -30,7 +30,7 @@
     "childBranch": "master",
     "childPath": "third_party/glslang/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+show/%s",
     "includeBugs": false,
     "includeLog": false,
     "parentBranch": "master",
diff --git a/autoroll/config/glslang-chromium.json b/autoroll/config/glslang-chromium.json
index 22f36ac..bb6959c 100644
--- a/autoroll/config/glslang-chromium.json
+++ b/autoroll/config/glslang-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "glslang",
@@ -29,7 +29,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/glslang/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/googletest-chromium.json b/autoroll/config/googletest-chromium.json
index 7885e11..8cc63c4 100644
--- a/autoroll/config/googletest-chromium.json
+++ b/autoroll/config/googletest-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "GoogleTest",
@@ -26,7 +26,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/googletest/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/google/googletest.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/google/googletest.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/google/googletest.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/llvm-project-emscripten-releases.json b/autoroll/config/llvm-project-emscripten-releases.json
index 8cfd3b4..68cef52 100644
--- a/autoroll/config/llvm-project-emscripten-releases.json
+++ b/autoroll/config/llvm-project-emscripten-releases.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "llvm-project",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "emscripten-releases/llvm-project",
     "childRepo": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/lottie-android-lottie-ci.json b/autoroll/config/lottie-android-lottie-ci.json
index 9313ce0..fc6b4c8 100644
--- a/autoroll/config/lottie-android-lottie-ci.json
+++ b/autoroll/config/lottie-android-lottie-ci.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Lottie Android",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "lottie-android",
     "childRepo": "https://skia.googlesource.com/external/github.com/airbnb/lottie-android.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/external/github.com/airbnb/lottie-android.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/external/github.com/airbnb/lottie-android.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/lottie-web-lottie-ci.json b/autoroll/config/lottie-web-lottie-ci.json
index 7a14119..6c42a58 100644
--- a/autoroll/config/lottie-web-lottie-ci.json
+++ b/autoroll/config/lottie-web-lottie-ci.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Lottie Web",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "lottie",
     "childRepo": "https://skia.googlesource.com/external/github.com/airbnb/lottie-web.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/external/github.com/airbnb/lottie-web.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/external/github.com/airbnb/lottie-web.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/luci-go-infra.json b/autoroll/config/luci-go-infra.json
index 66bc027..79ca849 100644
--- a/autoroll/config/luci-go-infra.json
+++ b/autoroll/config/luci-go-infra.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "luci-go",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "infra/go/src/go.chromium.org/luci",
     "childRepo": "https://chromium.googlesource.com/infra/luci/luci-go.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/infra/luci/luci-go.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/infra/luci/luci-go.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/luci-py-infra.json b/autoroll/config/luci-py-infra.json
index 2eeb794..446e528 100644
--- a/autoroll/config/luci-py-infra.json
+++ b/autoroll/config/luci-py-infra.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "luci-py",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "infra/luci",
     "childRepo": "https://chromium.googlesource.com/infra/luci/luci-py.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/infra/luci/luci-py.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/infra/luci/luci-py.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/material-font-disk-loader-ios-chromium.json b/autoroll/config/material-font-disk-loader-ios-chromium.json
index 669d5d0..c9f0f9f 100644
--- a/autoroll/config/material-font-disk-loader-ios-chromium.json
+++ b/autoroll/config/material-font-disk-loader-ios-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "material-font-disk-loader-ios",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/material_font_disk_loader_ios/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-foundation/material-font-disk-loader-ios",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-font-disk-loader-ios/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-font-disk-loader-ios/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/material-internationalization-ios-chromium.json b/autoroll/config/material-internationalization-ios-chromium.json
index 44930fa..328d4ac 100644
--- a/autoroll/config/material-internationalization-ios-chromium.json
+++ b/autoroll/config/material-internationalization-ios-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "material-internationalization-ios",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/material_internationalization_ios/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-foundation/material-internationalization-ios",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-internationalization-ios/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-internationalization-ios/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/material-roboto-font-loader-ios-chromium.json b/autoroll/config/material-roboto-font-loader-ios-chromium.json
index 962cc78..8aad7d4 100644
--- a/autoroll/config/material-roboto-font-loader-ios-chromium.json
+++ b/autoroll/config/material-roboto-font-loader-ios-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "material-roboto-font-loader-ios",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/material_roboto_font_loader_ios/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-foundation/material-roboto-font-loader-ios",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-roboto-font-loader-ios/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-roboto-font-loader-ios/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/material-sprited-animation-view-ios-chromium.json b/autoroll/config/material-sprited-animation-view-ios-chromium.json
index f4c6289..e260ee2 100644
--- a/autoroll/config/material-sprited-animation-view-ios-chromium.json
+++ b/autoroll/config/material-sprited-animation-view-ios-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "material-sprited-animation-view-ios",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/material_sprited_animation_view_ios/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-foundation/material-sprited-animation-view-ios",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-sprited-animation-view-ios/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-sprited-animation-view-ios/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/material-text-accessibility-ios-chromium.json b/autoroll/config/material-text-accessibility-ios-chromium.json
index 68ffaf9..01cbea7 100644
--- a/autoroll/config/material-text-accessibility-ios-chromium.json
+++ b/autoroll/config/material-text-accessibility-ios-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "material-text-accessibility-ios",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/material_text_accessibility_ios/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-foundation/material-text-accessibility-ios",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-text-accessibility-ios/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-foundation/material-text-accessibility-ios/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/motion-animator-objc-chromium.json b/autoroll/config/motion-animator-objc-chromium.json
index b141744..8647924 100644
--- a/autoroll/config/motion-animator-objc-chromium.json
+++ b/autoroll/config/motion-animator-objc-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "motion-animator-objc",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/motion_animator_objc/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-motion/motion-animator-objc",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-animator-objc/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-animator-objc/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/motion-interchange-objc-chromium.json b/autoroll/config/motion-interchange-objc-chromium.json
index 756afe2..c9cd8c3 100644
--- a/autoroll/config/motion-interchange-objc-chromium.json
+++ b/autoroll/config/motion-interchange-objc-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "motion-interchange-objc",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/motion_interchange_objc/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-motion/motion-interchange-objc",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-interchange-objc/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-interchange-objc/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/motion-transitioning-objc-chromium.json b/autoroll/config/motion-transitioning-objc-chromium.json
index d462a1b..5f12054 100644
--- a/autoroll/config/motion-transitioning-objc-chromium.json
+++ b/autoroll/config/motion-transitioning-objc-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "motion-transitioning-objc",
@@ -24,7 +24,7 @@
     "childBranch": "stable",
     "childPath": "src/ios/third_party/motion_transitioning_objc/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/material-motion/motion-transitioning-objc",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-transitioning-objc/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/material-motion/motion-transitioning-objc/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/nacl-chromium.json b/autoroll/config/nacl-chromium.json
index bac4f0a..bbca0a6 100644
--- a/autoroll/config/nacl-chromium.json
+++ b/autoroll/config/nacl-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "NaCl",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/native_client",
     "childRepo": "https://chromium.googlesource.com/native_client/src/native_client.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/native_client/src/native_client.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/native_client/src/native_client.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/openscreen-chromium.json b/autoroll/config/openscreen-chromium.json
index dbf8f4c..e7303a4 100644
--- a/autoroll/config/openscreen-chromium.json
+++ b/autoroll/config/openscreen-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Open Screen",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/openscreen/src",
     "childRepo": "https://chromium.googlesource.com/openscreen.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/openscreen.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/openscreen.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/pdfium-chromium.json b/autoroll/config/pdfium-chromium.json
index c3c2c8f..36c6b40 100644
--- a/autoroll/config/pdfium-chromium.json
+++ b/autoroll/config/pdfium-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "PDFium",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/pdfium",
     "childRepo": "https://pdfium.googlesource.com/pdfium.git",
-    "childRevLinkTmpl": "https://pdfium.googlesource.com/pdfium.git/+/%s",
+    "childRevLinkTmpl": "https://pdfium.googlesource.com/pdfium.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/perfetto-chromium.json b/autoroll/config/perfetto-chromium.json
index 6437963..01c0aa8 100644
--- a/autoroll/config/perfetto-chromium.json
+++ b/autoroll/config/perfetto-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Perfetto",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/perfetto",
     "childRepo": "https://android.googlesource.com/platform/external/perfetto.git",
-    "childRevLinkTmpl": "https://android.googlesource.com/platform/external/perfetto.git/+/%s",
+    "childRevLinkTmpl": "https://android.googlesource.com/platform/external/perfetto.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/shaderc-chromium.json b/autoroll/config/shaderc-chromium.json
index 4b73094..cb83226 100644
--- a/autoroll/config/shaderc-chromium.json
+++ b/autoroll/config/shaderc-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "shaderc",
@@ -26,7 +26,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/shaderc/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/google/shaderc",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/google/shaderc/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/google/shaderc/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/skcms-skia.json b/autoroll/config/skcms-skia.json
index 54f1377..7102b33 100644
--- a/autoroll/config/skcms-skia.json
+++ b/autoroll/config/skcms-skia.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "skcms",
@@ -30,7 +30,7 @@
     "parentBranch": "master",
     "parentRepo": "https://skia.googlesource.com/skia.git",
     "childRepo": "https://skia.googlesource.com/skcms.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/skcms.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/skcms.git/+show/%s",
     "copies": [
       { "srcRelPath": "LICENSE",          "dstRelPath": "third_party/skcms/LICENSE" },
       { "srcRelPath": "README.chromium",  "dstRelPath": "third_party/skcms/README.chromium" },
diff --git a/autoroll/config/skia-chromium.json b/autoroll/config/skia-chromium.json
index 487f721..233240c 100644
--- a/autoroll/config/skia-chromium.json
+++ b/autoroll/config/skia-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Skia",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/skia",
     "childRepo": "https://skia.googlesource.com/skia.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/skia-flutter.json b/autoroll/config/skia-flutter.json
index db938fb..50b216a 100644
--- a/autoroll/config/skia-flutter.json
+++ b/autoroll/config/skia-flutter.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#13
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#13
 // for documentation of the autoroller config.
 {
   "childName": "Skia",
@@ -20,7 +20,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/skia",
     "childRepo": "https://skia.googlesource.com/skia.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+show/%s",
     "forkRepoURL": "git@github.com:skia-flutter-autoroll/engine.git",
     "gclientSpec": "solutions=[{\"name\":\"src/flutter\",\"url\":\"git@github.com:flutter/engine.git\",\"deps_file\":\"DEPS\",\"managed\":False,\"custom_deps\":{},\"safesync_url\":\"\"}]",
     "githubParentPath": "src/flutter",
diff --git a/autoroll/config/skia-lottie-ci.json b/autoroll/config/skia-lottie-ci.json
index a452053..41a5764 100644
--- a/autoroll/config/skia-lottie-ci.json
+++ b/autoroll/config/skia-lottie-ci.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Skia",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "skia",
     "childRepo": "https://skia.googlesource.com/skia.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+show/%s",
     "parentBranch": "master",
     "preUploadSteps": [
       "TrainInfra"
diff --git a/autoroll/config/skia-skiabot-test.json b/autoroll/config/skia-skiabot-test.json
index 89c512c..0cff96f 100644
--- a/autoroll/config/skia-skiabot-test.json
+++ b/autoroll/config/skia-skiabot-test.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Skia",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "skia",
     "childRepo": "https://skia.googlesource.com/skia.git",
-    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+/%s",
+    "childRevLinkTmpl": "https://skia.googlesource.com/skia.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/spirv-tools-angle.json b/autoroll/config/spirv-tools-angle.json
index 95239d0..01ed6d2 100644
--- a/autoroll/config/spirv-tools-angle.json
+++ b/autoroll/config/spirv-tools-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "SPIRV-Tools",
@@ -31,7 +31,7 @@
     "childBranch": "master",
     "childPath": "third_party/spirv-tools/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+show/%s",
     "includeBugs": false,
     "includeLog": false,
     "parentBranch": "master",
diff --git a/autoroll/config/spirv-tools-chromium.json b/autoroll/config/spirv-tools-chromium.json
index 5cf394a..65cffac 100644
--- a/autoroll/config/spirv-tools-chromium.json
+++ b/autoroll/config/spirv-tools-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "SPIRV-Tools",
@@ -30,7 +30,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/SPIRV-Tools/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/swiftshader-angle.json b/autoroll/config/swiftshader-angle.json
index 483d444..93a089c 100644
--- a/autoroll/config/swiftshader-angle.json
+++ b/autoroll/config/swiftshader-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "SwiftShader",
@@ -31,7 +31,7 @@
     "childBranch": "master",
     "childPath": "third_party/SwiftShader",
     "childRepo": "https://swiftshader.googlesource.com/SwiftShader.git",
-    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+/%s",
+    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "angleproject",
diff --git a/autoroll/config/swiftshader-chromium.json b/autoroll/config/swiftshader-chromium.json
index 0dcb958..4fb6ef1 100644
--- a/autoroll/config/swiftshader-chromium.json
+++ b/autoroll/config/swiftshader-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "SwiftShader",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "src/third_party/swiftshader",
     "childRepo": "https://swiftshader.googlesource.com/SwiftShader.git",
-    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+/%s",
+    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/config/swiftshader-skia.json b/autoroll/config/swiftshader-skia.json
index 5f3341d..cf290bb 100644
--- a/autoroll/config/swiftshader-skia.json
+++ b/autoroll/config/swiftshader-skia.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "SwiftShader",
@@ -25,7 +25,7 @@
     "childBranch": "master",
     "childPath": "third_party/externals/swiftshader",
     "childRepo": "https://swiftshader.googlesource.com/SwiftShader.git",
-    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+/%s",
+    "childRevLinkTmpl": "https://swiftshader.googlesource.com/SwiftShader.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "skia",
diff --git a/autoroll/config/vulkan-headers-angle.json b/autoroll/config/vulkan-headers-angle.json
index 18781fb..9acf393 100644
--- a/autoroll/config/vulkan-headers-angle.json
+++ b/autoroll/config/vulkan-headers-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Vulkan-Headers",
@@ -29,7 +29,7 @@
     "childBranch": "master",
     "childPath": "third_party/vulkan-headers/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+show/%s",
     "childSubdir": "angle",
     "includeBugs": true,
     "includeLog": true,
diff --git a/autoroll/config/vulkan-loader-angle.json b/autoroll/config/vulkan-loader-angle.json
index bec2dda..c9f319d 100644
--- a/autoroll/config/vulkan-loader-angle.json
+++ b/autoroll/config/vulkan-loader-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Vulkan-Loader",
@@ -29,7 +29,7 @@
     "childBranch": "master",
     "childPath": "third_party/vulkan-loader/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "angleproject",
diff --git a/autoroll/config/vulkan-tools-angle.json b/autoroll/config/vulkan-tools-angle.json
index 0674d94..bed3dc2 100644
--- a/autoroll/config/vulkan-tools-angle.json
+++ b/autoroll/config/vulkan-tools-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Vulkan-Tools",
@@ -29,7 +29,7 @@
     "childBranch": "master",
     "childPath": "third_party/vulkan-tools/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "angleproject",
diff --git a/autoroll/config/vulkan-validation-layers-angle.json b/autoroll/config/vulkan-validation-layers-angle.json
index 8ab03f0..57c3143 100644
--- a/autoroll/config/vulkan-validation-layers-angle.json
+++ b/autoroll/config/vulkan-validation-layers-angle.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "Vulkan-ValidationLayers",
@@ -29,7 +29,7 @@
     "childBranch": "master",
     "childPath": "third_party/vulkan-validation-layers/src",
     "childRepo": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "angleproject",
diff --git a/autoroll/config/waterfall-emscripten-releases.json b/autoroll/config/waterfall-emscripten-releases.json
index 24708a0..0a81f6c 100644
--- a/autoroll/config/waterfall-emscripten-releases.json
+++ b/autoroll/config/waterfall-emscripten-releases.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "waterfall",
@@ -24,7 +24,7 @@
     "childBranch": "master",
     "childPath": "emscripten-releases/waterfall",
     "childRepo": "https://chromium.googlesource.com/external/github.com/WebAssembly/waterfall.git",
-    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/WebAssembly/waterfall.git/+/%s",
+    "childRevLinkTmpl": "https://chromium.googlesource.com/external/github.com/WebAssembly/waterfall.git/+show/%s",
     "includeBugs": false,
     "includeLog": true,
     "parentBranch": "master",
diff --git a/autoroll/config/webrtc-chromium.json b/autoroll/config/webrtc-chromium.json
index e682380..e09b1d5 100644
--- a/autoroll/config/webrtc-chromium.json
+++ b/autoroll/config/webrtc-chromium.json
@@ -1,4 +1,4 @@
-// See https://skia.googlesource.com/buildbot.git/+/master/autoroll/go/roller/config.go#130
+// See https://skia.googlesource.com/buildbot.git/+show/master/autoroll/go/roller/config.go#130
 // for documentation of the autoroller config.
 {
   "childName": "WebRTC",
@@ -24,7 +24,7 @@
     "childBranch": "lkgr",
     "childPath": "src/third_party/webrtc",
     "childRepo": "https://webrtc.googlesource.com/src.git",
-    "childRevLinkTmpl": "https://webrtc.googlesource.com/src.git/+/%s",
+    "childRevLinkTmpl": "https://webrtc.googlesource.com/src.git/+show/%s",
     "includeBugs": true,
     "includeLog": true,
     "bugProject": "chromium",
diff --git a/autoroll/go/repo_manager/android_repo_manager.go b/autoroll/go/repo_manager/android_repo_manager.go
index 05906b9..07d074c 100644
--- a/autoroll/go/repo_manager/android_repo_manager.go
+++ b/autoroll/go/repo_manager/android_repo_manager.go
@@ -50,7 +50,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Test: Presubmit checks will test this change.
 Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
diff --git a/autoroll/go/repo_manager/common/gitiles_common/gitiles_common.go b/autoroll/go/repo_manager/common/gitiles_common/gitiles_common.go
index 17fee2e..b101adf 100644
--- a/autoroll/go/repo_manager/common/gitiles_common/gitiles_common.go
+++ b/autoroll/go/repo_manager/common/gitiles_common/gitiles_common.go
@@ -76,7 +76,7 @@
 	if err != nil {
 		return nil, skerr.Wrapf(err, "Failed to retrieve revision %q", id)
 	}
-	rev := revision.FromLongCommit(fmt.Sprintf(gitiles.COMMIT_URL, r.URL, "%s"), details)
+	rev := revision.FromLongCommit(fmt.Sprintf(gitiles.CommitURL, r.URL, "%s"), details)
 
 	// Optionally load any dependencies.
 	if len(r.deps) > 0 {
diff --git a/autoroll/go/repo_manager/deps_repo_manager_test.go b/autoroll/go/repo_manager/deps_repo_manager_test.go
index a198601..9511033 100644
--- a/autoroll/go/repo_manager/deps_repo_manager_test.go
+++ b/autoroll/go/repo_manager/deps_repo_manager_test.go
@@ -364,7 +364,7 @@
 `, bugLine))
 		details, err := git.GitDir(childRepo.Dir()).Details(ctx, hash)
 		require.NoError(t, err)
-		rev := revision.FromLongCommit(fmt.Sprintf(gitiles.COMMIT_URL, cfg.ChildRepo, "%s"), details)
+		rev := revision.FromLongCommit(fmt.Sprintf(gitiles.CommitURL, cfg.ChildRepo, "%s"), details)
 		// Update.
 		lastRollRev, tipRev, notRolledRevs, err := rm.Update(ctx)
 		require.NoError(t, err)
diff --git a/autoroll/go/repo_manager/freetype_repo_manager_test.go b/autoroll/go/repo_manager/freetype_repo_manager_test.go
index 1e691a6..8f7e692 100644
--- a/autoroll/go/repo_manager/freetype_repo_manager_test.go
+++ b/autoroll/go/repo_manager/freetype_repo_manager_test.go
@@ -223,7 +223,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Bug: None
 Tbr: me@google.com`, ftChildPath, lastRollRev.Id[:12], tipRev.Id[:12], len(notRolledRevs), childRepo.RepoUrl(), lastRollRev.Id[:12], tipRev.Id[:12], lastRollRev.Id[:12], tipRev.Id[:12], logStr, ftChildPath, tipRev.Id[:12])
diff --git a/autoroll/go/repo_manager/fuchsia_sdk_repo_manager.go b/autoroll/go/repo_manager/fuchsia_sdk_repo_manager.go
index b8138eb..61a1eee 100644
--- a/autoroll/go/repo_manager/fuchsia_sdk_repo_manager.go
+++ b/autoroll/go/repo_manager/fuchsia_sdk_repo_manager.go
@@ -32,7 +32,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}
 {{end}}Tbr: {{stringsJoin .Reviewers ","}}
diff --git a/autoroll/go/repo_manager/fuchsia_sdk_repo_manager_test.go b/autoroll/go/repo_manager/fuchsia_sdk_repo_manager_test.go
index 474c9ba..15c090c 100644
--- a/autoroll/go/repo_manager/fuchsia_sdk_repo_manager_test.go
+++ b/autoroll/go/repo_manager/fuchsia_sdk_repo_manager_test.go
@@ -167,7 +167,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Tbr: reviewer@chromium.org
 `, from, to)
diff --git a/autoroll/go/repo_manager/github_cipd_deps_repo_manager.go b/autoroll/go/repo_manager/github_cipd_deps_repo_manager.go
index 7643f3a..51e4d03 100644
--- a/autoroll/go/repo_manager/github_cipd_deps_repo_manager.go
+++ b/autoroll/go/repo_manager/github_cipd_deps_repo_manager.go
@@ -29,7 +29,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 `
 )
 
diff --git a/autoroll/go/repo_manager/no_checkout_deps_repo_manager_test.go b/autoroll/go/repo_manager/no_checkout_deps_repo_manager_test.go
index 40b2f12..291c41a 100644
--- a/autoroll/go/repo_manager/no_checkout_deps_repo_manager_test.go
+++ b/autoroll/go/repo_manager/no_checkout_deps_repo_manager_test.go
@@ -208,7 +208,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Bug: None
 Tbr: me@google.com`, childPath, lastRollRev.Id[:12], tipRev.Id[:12], len(notRolledRevs), childRepo.RepoUrl(), lastRollRev.Id[:12], tipRev.Id[:12], lastRollRev.Id[:12], tipRev.Id[:12], logStr, childPath, tipRev.Id[:12])
@@ -360,7 +360,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Bug: None
 Tbr: me@google.com`, childPath, lastRollRev.Id[:12], tipRev.Id[:12], len(notRolledRevs), childRepo.RepoUrl(), lastRollRev.Id[:12], tipRev.Id[:12], lastRollRev.Id[:12], tipRev.Id[:12], logStr, childPath, tipRev.Id[:12])
diff --git a/autoroll/go/repo_manager/parent/commit_msg.go b/autoroll/go/repo_manager/parent/commit_msg.go
index 0ce2c0d..fe8dc94 100644
--- a/autoroll/go/repo_manager/parent/commit_msg.go
+++ b/autoroll/go/repo_manager/parent/commit_msg.go
@@ -34,7 +34,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 {{if .CqExtraTrybots}}Cq-Include-Trybots: {{.CqExtraTrybots}}
 {{end}}Bug: {{if .Bugs}}{{stringsJoin .Bugs ","}}{{else}}None{{end}}
diff --git a/autoroll/go/repo_manager/parent/git_checkout_github.go b/autoroll/go/repo_manager/parent/git_checkout_github.go
index 11ee466..07e42b1 100644
--- a/autoroll/go/repo_manager/parent/git_checkout_github.go
+++ b/autoroll/go/repo_manager/parent/git_checkout_github.go
@@ -33,7 +33,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 `
 
diff --git a/autoroll/go/repo_manager/semver_gcs_repo_manager_test.go b/autoroll/go/repo_manager/semver_gcs_repo_manager_test.go
index 82c33e7..7eaeae0 100644
--- a/autoroll/go/repo_manager/semver_gcs_repo_manager_test.go
+++ b/autoroll/go/repo_manager/semver_gcs_repo_manager_test.go
@@ -66,7 +66,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Tbr: {{stringsJoin .Reviewers ","}}
 `
@@ -324,7 +324,7 @@
 https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
 
 Documentation for the AutoRoller is here:
-https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
+https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
 
 Tbr: reviewer@chromium.org
 `
diff --git a/autoroll/res/imp/arb-status-sk-demo.html b/autoroll/res/imp/arb-status-sk-demo.html
index 9faffa6..89c8f70 100644
--- a/autoroll/res/imp/arb-status-sk-demo.html
+++ b/autoroll/res/imp/arb-status-sk-demo.html
@@ -92,70 +92,70 @@
             "display": "3c2d09f",
             "description": "change SkRect::growToInclude to take a point instead of x,y",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/3c2d09f89ae119de506722f550a6e28305d4813f"
+            "url": "https://skia.googlesource.com/skia.git/+show/3c2d09f89ae119de506722f550a6e28305d4813f"
           },
           {
             "id": "de67a2c0e01a68ca8bb3a569947f8e33350f31f7",
             "display": "de67a2c",
             "description": "remove aarch64 offline compilation",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/de67a2c0e01a68ca8bb3a569947f8e33350f31f7"
+            "url": "https://skia.googlesource.com/skia.git/+show/de67a2c0e01a68ca8bb3a569947f8e33350f31f7"
           },
           {
             "id": "a93a14a99816d25b773f0b12868143702baf44bf",
             "display": "a93a14a",
             "description": "Convert NULL and 0 to nullptr.",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/a93a14a99816d25b773f0b12868143702baf44bf"
+            "url": "https://skia.googlesource.com/skia.git/+show/a93a14a99816d25b773f0b12868143702baf44bf"
           },
           {
             "id": "695db408437807d049ecc02b3b852704092728f2",
             "display": "695db40",
             "description": "Add GrPathUtils::calcCubicInverseTransposePowerBasisMatrix",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/695db408437807d049ecc02b3b852704092728f2"
+            "url": "https://skia.googlesource.com/skia.git/+show/695db408437807d049ecc02b3b852704092728f2"
           },
           {
             "id": "d6e12862f08e4fb6491f350d01e24bc907817569",
             "display": "d6e1286",
             "description": "split up JUMPER define",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/d6e12862f08e4fb6491f350d01e24bc907817569"
+            "url": "https://skia.googlesource.com/skia.git/+show/d6e12862f08e4fb6491f350d01e24bc907817569"
           },
           {
             "id": "2e86634ae64ac333100d55a49992143fbf143384",
             "display": "2e86634",
             "description": "Move transformation of clip elements to SkClipStack::Element",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/2e86634ae64ac333100d55a49992143fbf143384"
+            "url": "https://skia.googlesource.com/skia.git/+show/2e86634ae64ac333100d55a49992143fbf143384"
           },
           {
             "id": "419a94da028b33425a0feeb44d0d022a5d3d3704",
             "display": "419a94d",
             "description": "Add a GrCCPRGeometry file",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/419a94da028b33425a0feeb44d0d022a5d3d3704"
+            "url": "https://skia.googlesource.com/skia.git/+show/419a94da028b33425a0feeb44d0d022a5d3d3704"
           },
           {
             "id": "7dda8dfb9d90f633af9a457b1c430f7cbf5536c5",
             "display": "7dda8df",
             "description": "Roll skia/third_party/externals/angle2/ 7e1197e01..3ef140a97 (2 commits)",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/7dda8dfb9d90f633af9a457b1c430f7cbf5536c5"
+            "url": "https://skia.googlesource.com/skia.git/+show/7dda8dfb9d90f633af9a457b1c430f7cbf5536c5"
           },
           {
             "id": "e6befa5ac8e00400a7baa1813d323cdb834a22e5",
             "display": "e6befa5",
             "description": "add 'a8' config for nanobench, specialize blitV for raster-pipeline",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/e6befa5ac8e00400a7baa1813d323cdb834a22e5"
+            "url": "https://skia.googlesource.com/skia.git/+show/e6befa5ac8e00400a7baa1813d323cdb834a22e5"
           },
           {
             "id": "c172f9b894455f2d262a5b1edf067764d70b1b62",
             "display": "c172f9b",
             "description": "SkPDF: SkWStream::write -> SkWStream::writeText",
             "timestamp": "2017-08-28T16:53:06Z",
-            "url": "https://skia.googlesource.com/skia.git/+/c172f9b894455f2d262a5b1edf067764d70b1b62"
+            "url": "https://skia.googlesource.com/skia.git/+show/c172f9b894455f2d262a5b1edf067764d70b1b62"
           }
         ],
         "recent": [
diff --git a/codereview.settings b/codereview.settings
index dd64c4a..4d5ff1b 100644
--- a/codereview.settings
+++ b/codereview.settings
@@ -1,6 +1,6 @@
 # This file is used by gcl to get repository specific information.
 CODE_REVIEW_SERVER: codereview.chromium.org
-VIEW_VC: https://skia.googlesource.com/buildbot/+/
+VIEW_VC: https://skia.googlesource.com/buildbot/+show/
 CC_LIST: reviews@skia.org
 BUG_PREFIX: skia:
 PROJECT: skiabuildbot
diff --git a/ct/go/ctfe/chromium_builds/chromium_builds.go b/ct/go/ctfe/chromium_builds/chromium_builds.go
index 1b4e47f..26b7bd6 100644
--- a/ct/go/ctfe/chromium_builds/chromium_builds.go
+++ b/ct/go/ctfe/chromium_builds/chromium_builds.go
@@ -26,7 +26,9 @@
 	ctfeutil "go.skia.org/infra/ct/go/ctfe/util"
 	ctutil "go.skia.org/infra/ct/go/util"
 	"go.skia.org/infra/go/buildskia"
+	"go.skia.org/infra/go/common"
 	"go.skia.org/infra/go/ds"
+	"go.skia.org/infra/go/gitiles"
 	"go.skia.org/infra/go/httputils"
 	"go.skia.org/infra/go/sklog"
 	skutil "go.skia.org/infra/go/util"
@@ -36,15 +38,16 @@
 const (
 	// URL returning the GIT commit hash of the last known good release of Chromium.
 	CHROMIUM_LKGR_URL = "http://chromium-status.appspot.com/git-lkgr"
-	// Base URL of the Chromium GIT repository, to be followed by commit hash.
-	CHROMIUM_GIT_REPO_URL = "https://chromium.googlesource.com/chromium/src.git/+/"
-	// URL of a base64-encoded file that includes the GIT commit hash last known good release of Skia.
-	CHROMIUM_DEPS_FILE = "https://chromium.googlesource.com/chromium/src/+/master/DEPS?format=TEXT"
-	// Base URL of the Skia GIT repository, to be followed by commit hash.
-	SKIA_GIT_REPO_URL = "https://skia.googlesource.com/skia/+/"
 )
 
 var (
+	// Base URL of the Chromium GIT repository, to be followed by commit hash.
+	CHROMIUM_GIT_REPO_URL = fmt.Sprintf(gitiles.CommitURL, common.REPO_CHROMIUM, "")
+	// URL of a base64-encoded file that includes the GIT commit hash last known good release of Skia.
+	CHROMIUM_DEPS_FILE = fmt.Sprintf(gitiles.DownloadURL, common.REPO_CHROMIUM, "master", "DEPS")
+	// Base URL of the Skia GIT repository, to be followed by commit hash.
+	SKIA_GIT_REPO_URL = fmt.Sprintf(gitiles.CommitURL, common.REPO_SKIA, "")
+
 	addTaskTemplate     *template.Template = nil
 	runsHistoryTemplate *template.Template = nil
 
diff --git a/ct/go/util/ct_perf.go b/ct/go/util/ct_perf.go
index f0f7b89..c237d18 100644
--- a/ct/go/util/ct_perf.go
+++ b/ct/go/util/ct_perf.go
@@ -27,8 +27,8 @@
 // AddCTRunDataToPerf converts and uploads data from the CT run to CT's perf instance.
 //
 // It does the following:
-// 1) Adds a commit to CT Perf's synthetic repo in https://skia.googlesource.com/perf-ct/+/master
-// 2) Constructs a results struct in the format of https://github.com/google/skia-buildbot/blob/master/perf/FORMAT.md
+// 1) Adds a commit to CT Perf's synthetic repo in https://skia.googlesource.com/perf-ct/+show/master
+// 2) Constructs a results struct in the format of https://skia.googlesource.com/buildbot/+doc/master/perf/FORMAT.md
 //    Ensures that the results struct has as key the runID, groupName and the git hash from (1).
 //    Populates the results struct using the output CSV file from CT's run.
 // 3) Create JSON file from the results struct.
diff --git a/ct/maintenance.md b/ct/maintenance.md
index 964a771..ee06814 100644
--- a/ct/maintenance.md
+++ b/ct/maintenance.md
@@ -168,7 +168,7 @@
 Worker scripts are part of the docker build when `ctmaster_release` is run.
 However, from time to time, it may be necessary to perform maintenance
 tasks on all worker machines. In this case, the
-[run_on_swarming_bots](https://skia.googlesource.com/buildbot/+/master/scripts/run_on_swarming_bots/)
+[run_on_swarming_bots](https://skia.googlesource.com/buildbot/+show/master/scripts/run_on_swarming_bots/)
 script can be used to update all
 [CT bots](https://chrome-swarming.appspot.com/botlist?c=id&c=os&c=task&c=status&f=pool%3ACT&l=1000&s=id%3Aasc).
 
@@ -181,7 +181,7 @@
 ## Access to Golo
 
 Follow instructions
-[here](https://chrome-internal.googlesource.com/infra/infra_internal/+/master/doc/ssh.md)
+[here](https://chrome-internal.googlesource.com/infra/infra_internal/+doc/master/doc/ssh.md)
 for basic security key and `.ssh/config` setup.
 
 Run `ssh -p 2150 skia-telemetry-ssh@chromegw` and use the password stored on
diff --git a/ct/py/html-templates/csv_totals.html b/ct/py/html-templates/csv_totals.html
index 3f053a2..c8f2cc7 100644
--- a/ct/py/html-templates/csv_totals.html
+++ b/ct/py/html-templates/csv_totals.html
@@ -15,7 +15,7 @@
     <br/>
     The run was done on {{ target_platform }} slaves using the {{ pageset_type }} page set
     <br/>
-    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+/{{ chromium_hash }}'>{{ chromium_hash|slice:":7" }}</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+/{{ skia_hash }}'>{{ skia_hash|slice:":7" }}</a>
+    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+show/{{ chromium_hash }}'>{{ chromium_hash|slice:":7" }}</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+show/{{ skia_hash }}'>{{ skia_hash|slice:":7" }}</a>
     <br/>
     The specified patch(es) are: <a href='{{ chromium_patch_link }}'>Chromium</a>/<a href='{{ skia_patch_link }}'>Skia</a> (if no patch is specified the page will be empty)
     <br/>
diff --git a/ct/py/test_data/csv_comparer/discard_outliers/index.html b/ct/py/test_data/csv_comparer/discard_outliers/index.html
index f6c621d..b4f2859 100644
--- a/ct/py/test_data/csv_comparer/discard_outliers/index.html
+++ b/ct/py/test_data/csv_comparer/discard_outliers/index.html
@@ -21,7 +21,7 @@
     <br/>
     The run was done on Android slaves using the Mobile10k page set
     <br/>
-    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+/abcdefg1234567'>abcdefg</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+/tuvwxyz1234567'>tuvwxyz</a>
+    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+show/abcdefg1234567'>abcdefg</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+show/tuvwxyz1234567'>tuvwxyz</a>
     <br/>
     The specified patch(es) are: <a href='http://chromium-patch.com'>Chromium</a>/<a href='http://skia-patch.com'>Skia</a> (if no patch is specified the page will be empty)
     <br/>
diff --git a/ct/py/test_data/csv_comparer/keep_outliers/index.html b/ct/py/test_data/csv_comparer/keep_outliers/index.html
index aba2231..0387b69 100644
--- a/ct/py/test_data/csv_comparer/keep_outliers/index.html
+++ b/ct/py/test_data/csv_comparer/keep_outliers/index.html
@@ -21,7 +21,7 @@
     <br/>
     The run was done on Linux slaves using the 10k page set
     <br/>
-    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+/abcdefg1234567'>abcdefg</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+/tuvwxyz1234567'>tuvwxyz</a>
+    The run was done using Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+show/abcdefg1234567'>abcdefg</a> and Skia commit hash <a href='https://skia.googlesource.com/skia/+show/tuvwxyz1234567'>tuvwxyz</a>
     <br/>
     The specified patch(es) are: <a href='http://chromium-patch.com'>Chromium</a>/<a href='http://skia-patch.com'>Skia</a> (if no patch is specified the page will be empty)
     <br/>
diff --git a/ct/res/imp/chromium-analysis-runs-sk.html b/ct/res/imp/chromium-analysis-runs-sk.html
index 9a6f474..184a0ff 100644
--- a/ct/res/imp/chromium-analysis-runs-sk.html
+++ b/ct/res/imp/chromium-analysis-runs-sk.html
@@ -216,7 +216,7 @@
               <template is="dom-if" if="{{chromiumAnalysisTask.ChromiumHash}}">
                 <tr>
                   <td>ChromiumHash:</td>
-                  <td><a href="https://chromium.googlesource.com/chromium/src/+/{{chromiumAnalysisTask.ChromiumHash}}">{{chromiumAnalysisTask.ChromiumHash}}</a></td>
+                  <td><a href="https://chromium.googlesource.com/chromium/src/+show/{{chromiumAnalysisTask.ChromiumHash}}">{{chromiumAnalysisTask.ChromiumHash}}</a></td>
                 </tr>
               </template>
               <template is="dom-if" if="{{chromiumAnalysisTask.ApkGsPath}}">
diff --git a/ct/res/imp/chromium-analysis-sk.html b/ct/res/imp/chromium-analysis-sk.html
index 878baf3..a03b52b 100644
--- a/ct/res/imp/chromium-analysis-sk.html
+++ b/ct/res/imp/chromium-analysis-sk.html
@@ -215,7 +215,7 @@
       <tr>
         <td>
           Skia Git patch (optional)<br/>
-          Applied to Skia Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to Skia Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="skia_patch"
@@ -228,7 +228,7 @@
       <tr>
         <td>
           V8 Git patch (optional)<br/>
-          Applied to V8 Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to V8 Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="v8_patch"
@@ -241,7 +241,7 @@
       <tr>
         <td>
           Catapult Git patch (optional)<br/>
-          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="catapult_patch"
diff --git a/ct/res/imp/chromium-perf-runs-sk.html b/ct/res/imp/chromium-perf-runs-sk.html
index ad4314a..29f0f41 100644
--- a/ct/res/imp/chromium-perf-runs-sk.html
+++ b/ct/res/imp/chromium-perf-runs-sk.html
@@ -211,7 +211,7 @@
               <template is="dom-if" if="{{chromiumPerfTask.ChromiumHash}}">
                 <tr>
                   <td>ChromiumHash:</td>
-                  <td><a href="https://chromium.googlesource.com/chromium/src/+/{{chromiumPerfTask.ChromiumHash}}">{{chromiumPerfTask.ChromiumHash}}</a></td>
+                  <td><a href="https://chromium.googlesource.com/chromium/src/+show/{{chromiumPerfTask.ChromiumHash}}">{{chromiumPerfTask.ChromiumHash}}</a></td>
                 </tr>
               </template>
             </table>
diff --git a/ct/res/imp/chromium-perf-sk.html b/ct/res/imp/chromium-perf-sk.html
index d064d21..764eab5 100644
--- a/ct/res/imp/chromium-perf-sk.html
+++ b/ct/res/imp/chromium-perf-sk.html
@@ -176,7 +176,7 @@
       <tr>
         <td>
           Skia Git patch (optional)<br/>
-          Applied to Skia Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to Skia Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="skia_patch"
@@ -189,7 +189,7 @@
       <tr>
         <td>
           V8 Git patch (optional)<br/>
-          Applied to V8 Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to V8 Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="v8_patch"
@@ -202,7 +202,7 @@
       <tr>
         <td>
           Catapult Git patch (optional)<br/>
-          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="catapult_patch"
diff --git a/ct/res/imp/metrics-analysis-sk.html b/ct/res/imp/metrics-analysis-sk.html
index 6434c83..b4310fa 100644
--- a/ct/res/imp/metrics-analysis-sk.html
+++ b/ct/res/imp/metrics-analysis-sk.html
@@ -116,7 +116,7 @@
       <tr>
         <td>
           Catapult Git patch (optional)<br/>
-          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/DEPS">DEPS</a>
+          Applied to Catapult Rev in <a href="https://chromium.googlesource.com/chromium/src/+show/HEAD/DEPS">DEPS</a>
         </td>
         <td>
           <patch-sk id="catapult_patch"
diff --git a/ct/res/js/ctfe.js b/ct/res/js/ctfe.js
index 6b9a6d8..562e7bd 100644
--- a/ct/res/js/ctfe.js
+++ b/ct/res/js/ctfe.js
@@ -120,14 +120,14 @@
    * Returns a URL with details about the given Chromium commit hash.
    **/
   ctfe.chromiumBuild.chromiumCommitUrl = function(commitHash) {
-    return "https://chromium.googlesource.com/chromium/src.git/+/" + commitHash;
+    return "https://chromium.googlesource.com/chromium/src.git/+show/" + commitHash;
   }
 
   /**
    * Returns a URL with details about the given Skia commit hash.
    **/
   ctfe.chromiumBuild.skiaCommitUrl = function(commitHash) {
-    return "https://skia.googlesource.com/skia/+/" + commitHash;
+    return "https://skia.googlesource.com/skia/+show/" + commitHash;
   }
 
   /**
diff --git a/datahopper/PROD.md b/datahopper/PROD.md
index ebfbd2b..d92e8bc 100644
--- a/datahopper/PROD.md
+++ b/datahopper/PROD.md
@@ -8,7 +8,7 @@
 -----------
 
 The [job
-metrics](https://skia.googlesource.com/buildbot/+/master/datahopper/go/datahopper/jobs.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/datahopper/jobs.go)
 goroutine has not successfully updated its job cache for some time.
 
 If there are Task Scheduler alerts, resolve those first.
@@ -20,7 +20,7 @@
 --------------------
 
 The [bot coverage
-metrics](https://skia.googlesource.com/buildbot/+/master/datahopper/go/bot_metrics/bot_metrics.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/bot_metrics/bot_metrics.go)
 goroutine has not successfully completed a cycle for some time. You should
 check the logs to try to diagnose what's failing.
 
@@ -29,7 +29,7 @@
 --------------------
 
 The [Swarming task
-metrics](https://skia.googlesource.com/buildbot/+/master/datahopper/go/swarming_metrics/tasks.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/swarming_metrics/tasks.go)
 goroutine has not successfully queried for Swarming tasks for some time. You should
 check the logs to try to diagnose what's failing.
 
@@ -38,7 +38,7 @@
 -------------
 
 The [event
-metrics](https://skia.googlesource.com/buildbot/+/master/go/metrics2/events/events.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/go/metrics2/events/events.go)
 goroutine has not successfully updated metrics based on event data for some
 time. You should check the logs to try to diagnose what's failing. Double-check
 the instance name to verify which log stream to investigate.
@@ -48,7 +48,7 @@
 --------------------
 
 The [Swarming bot
-metrics](https://skia.googlesource.com/buildbot/+/master/datahopper/go/swarming_metrics/bots.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/swarming_metrics/bots.go)
 goroutine has not successfully queried for Swarming bots for some time. See the
 alert for which pool and server is failing. You should check the logs to try
 to diagnose what's failing.
@@ -58,7 +58,7 @@
 ------------------------
 
 The [Firestore backup
-metrics](https://skia.googlesource.com/buildbot/+/master/datahopper/go/datahopper/firestore_backup_metrics.go)
+metrics](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/datahopper/firestore_backup_metrics.go)
 goroutine has not successfully updated the metric for most recent Firestore
 backup for some time.
 
@@ -90,7 +90,7 @@
 
  - Check the Datahopper logs for any warnings or errors. One likely
    problem is a change in the output of the REST API. See [the
-   code](https://skia.googlesource.com/buildbot/+/master/datahopper/go/datahopper/firestore_backup_metrics.go)
+   code](https://skia.googlesource.com/buildbot/+show/master/datahopper/go/datahopper/firestore_backup_metrics.go)
    for the URL used to retrieve Firestore export operations. You can also run
    Datahopper locally using the --local flag to set up a TokenSource to
    authenticate to this URL. Add logging of the HTTP response.
@@ -110,7 +110,7 @@
    CronJob. If no recent run, check for misconfiguration. You can update the
    CronJob by running `make push` in the `firestore` directory. The
    configuration for the CronJob is
-   [here](https://skia.googlesource.com/skia-public-config/+/master/firestore-export-everything-weekly.yaml).
+   [here](https://skia.googlesource.com/k8s-config/+show/master/skia-public/firestore-export-everything-weekly.yaml).
 
  - To manually trigger a new export, run `gcloud beta firestore export
    --project=skia-firestore --async gs://skia-firestore-backup/everything/$(date
diff --git a/debugger-assets/res/v2.html b/debugger-assets/res/v2.html
index 3cc8156..750d5f4 100644
--- a/debugger-assets/res/v2.html
+++ b/debugger-assets/res/v2.html
@@ -28,7 +28,7 @@
 </head>
 <body class='fullbleed layout vertical'>
   <div id="version">
-    <a id="version-link" href='https://skia.googlesource.com/skia/+/{{.Version}}'>{{.VersionShort}}</a>
+    <a id="version-link" href='https://skia.googlesource.com/skia/+show/{{.Version}}'>{{.VersionShort}}</a>
   </div>
   <wasm-debugger-app-sk> </wasm-debugger-app-sk>
 </body>
diff --git a/debugger/templates/index.html b/debugger/templates/index.html
index 775c45e..844ceab 100644
--- a/debugger/templates/index.html
+++ b/debugger/templates/index.html
@@ -50,7 +50,7 @@
   <header>
     <h2>Skia Debugger</h2>
     <span>
-      <a href='https://skia.googlesource.com/skia/+/{{.Version}}'>{{.VersionShort}}</a>
+      <a href='https://skia.googlesource.com/skia/+show/{{.Version}}'>{{.VersionShort}}</a>
     </span>
   </header>
   <main>
diff --git a/docker_pushes_watcher/README.md b/docker_pushes_watcher/README.md
index 99fb5b7..0c1bbc3 100644
--- a/docker_pushes_watcher/README.md
+++ b/docker_pushes_watcher/README.md
@@ -8,15 +8,15 @@
 ## Previous Cloud Build framework
 
 Skia used to trigger builds on Google Cloud's [Cloud Build](https://cloud.google.com/cloud-build/)
-framework using this [cloudbuild.yaml](https://skia.googlesource.com/skia/+/6f217e0f8d2e5f06e36d426becd818aeefe39919/docker/cloudbuild.yaml) file.
+framework using this [cloudbuild.yaml](https://skia.googlesource.com/skia/+show/6f217e0f8d2e5f06e36d426becd818aeefe39919/docker/cloudbuild.yaml) file.
 
 Using cloud build, the "skia-release" and "skia-wasm-release" images were created and pushed per commit in the Skia
 repository. The "infra" image was created and pushed per commit in the Buildbot repository.
 
-Additionally [cloudbuild.yaml](https://skia.googlesource.com/skia/+/6f217e0f8d2e5f06e36d426becd818aeefe39919/docker/cloudbuild.yaml) created and pushed
+Additionally [cloudbuild.yaml](https://skia.googlesource.com/skia/+show/6f217e0f8d2e5f06e36d426becd818aeefe39919/docker/cloudbuild.yaml) created and pushed
 new images for various apps like fiddler, skottie, particles, debugger, etc.
 
-The [continuous-deploy](https://skia.googlesource.com/buildbot/+/1985cd594e9f8c7bdec82b89e110df7466ee3cf8/kube/go/continuous-deploy/) app then ran pushk
+The [continuous-deploy](https://skia.googlesource.com/buildbot/+show/1985cd594e9f8c7bdec82b89e110df7466ee3cf8/kube/go/continuous-deploy/) app then ran pushk
 on those apps and deployed them to k8s.
 
 
@@ -31,40 +31,40 @@
 
 ### Task Drivers
 
-A task driver was written to build and push a specified docker image ([build_push_docker_image](https://skia.googlesource.com/buildbot/+/master/infra/bots/task_drivers/build_push_docker_image/)).
+A task driver was written to build and push a specified docker image ([build_push_docker_image](https://skia.googlesource.com/buildbot/+show/master/infra/bots/task_drivers/build_push_docker_image/)).
 
 The following bots were then created in the different repositories:
-* [Infra-PerCommit-CreateDockerImage](https://status.skia.org/repo/infra?commit_label=author&filter=search&search_value=CreateDockerImage) bot to create and push the "gcr.io/skia-public/infra" image using this [Dockerfile](https://skia.googlesource.com/buildbot/+/master/docker/Dockerfile) in the Buildbot repository.
-* [Housekeeper-PerCommit-CreateDockerImage_Skia_Release](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=CreateDockerImage_Skia_Release) bot to create and push the "gcr.io/skia-public/skia-release" image using this [Dockerfile](https://skia.googlesource.com/skia/+/master/docker/skia-release/Dockerfile) in the Skia repository.
-* [Housekeeper-PerCommit-CreateDockerImage_Skia_WASM_Release](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=CreateDockerImage_Skia_WASM_Release) bot to create and push the "gcr.io/skia-public/skia-wasm-release" image using this [Dockerfile](https://skia.googlesource.com/skia/+/master/docker/skia-wasm-release/Dockerfile) in the Skia repository.
+* [Infra-PerCommit-CreateDockerImage](https://status.skia.org/repo/infra?commit_label=author&filter=search&search_value=CreateDockerImage) bot to create and push the "gcr.io/skia-public/infra" image using this [Dockerfile](https://skia.googlesource.com/buildbot/+show/master/docker/Dockerfile) in the Buildbot repository.
+* [Housekeeper-PerCommit-CreateDockerImage_Skia_Release](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=CreateDockerImage_Skia_Release) bot to create and push the "gcr.io/skia-public/skia-release" image using this [Dockerfile](https://skia.googlesource.com/skia/+show/master/docker/skia-release/Dockerfile) in the Skia repository.
+* [Housekeeper-PerCommit-CreateDockerImage_Skia_WASM_Release](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=CreateDockerImage_Skia_WASM_Release) bot to create and push the "gcr.io/skia-public/skia-wasm-release" image using this [Dockerfile](https://skia.googlesource.com/skia/+show/master/docker/skia-wasm-release/Dockerfile) in the Skia repository.
 
 These bots could run out of order because of backfilling. Due to this the "Docker Pushes Watcher" app (described below) calculates which image is the
 most recent and then tags it with the "prod" tag.
 
 Task Drivers were also written to create and push Docker images of various apps that depend on the "gcr.io/skia-public/skia-release" and "gcr.io/skia-public/skia-wasm-release" images:
-* [push_apps_from_skia_image](https://skia.googlesource.com/buildbot/+/master/infra/bots/task_drivers/push_apps_from_skia_image/)
-* [push_apps_from_wasm_image](https://skia.googlesource.com/buildbot/+/master/infra/bots/task_drivers/push_apps_from_wasm_image/)
-* [push_apps_from_skia_wasm_images](https://skia.googlesource.com/buildbot/+/master/infra/bots/task_drivers/push_apps_from_skia_wasm_images/)
+* [push_apps_from_skia_image](https://skia.googlesource.com/buildbot/+show/master/infra/bots/task_drivers/push_apps_from_skia_image/)
+* [push_apps_from_wasm_image](https://skia.googlesource.com/buildbot/+show/master/infra/bots/task_drivers/push_apps_from_wasm_image/)
+* [push_apps_from_skia_wasm_images](https://skia.googlesource.com/buildbot/+show/master/infra/bots/task_drivers/push_apps_from_skia_wasm_images/)
 
 The following bots were created using the above task drivers:
 * [Housekeeper-PerCommit-PushAppsFromSkiaDockerImage](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=PushAppsFromSkiaDockerImage) bot to create and push docker images for fiddler, debugger and api apps.
 * [Housekeeper-PerCommit-PushAppsFromWASMDockerImage](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=PushAppsFromWASMDockerImage) bot to create and push docker images for jsfiddle, skottie and particle apps.
 * [Housekeeper-PerCommit-PushAppsFromSkiaWASMDockerImages](https://status.skia.org/repo/skia?commit_label=author&filter=search&search_value=PushAppsFromSkiaWASMDockerImages) bot to create and push docker images for jsfiddle, skottie and particle apps.
 
-All above task drivers send a [pubsub message](https://skia.googlesource.com/buildbot/+/master/go/docker/build/pubsub/pubsub.go#15) when a docker image is created and pushed.
+All above task drivers send a [pubsub message](https://skia.googlesource.com/buildbot/+show/master/go/docker/build/pubsub/pubsub.go#15) when a docker image is created and pushed.
 
 
 ### Docker Pushes Watcher App
 
-The [docker pushes watcher](https://skia.googlesource.com/buildbot/+/master/docker_pushes_watcher/) app listens for [pubsub messages](https://skia.googlesource.com/buildbot/+/master/go/docker/build/pubsub/pubsub.go#15) for 2 main tasks:
+The [docker pushes watcher](https://skia.googlesource.com/buildbot/+show/master/docker_pushes_watcher/) app listens for [pubsub messages](https://skia.googlesource.com/buildbot/+show/master/go/docker/build/pubsub/pubsub.go#15) for 2 main tasks:
 * Tags images in the app's whitelist with the "prod" tag when they correspond to the latest commit in the Skia/Buildbot repository. This is done to account for bots running out of order because of backfilling.
 * Deploys apps to k8s using pushk for images in the app's whitelist when they correspond to the latest commit.
 
 
 ## Auto-deploying infra apps
 
-A task driver has been written to build and push images of infra apps ([push_apps_from_infra_image](https://skia.googlesource.com/buildbot/+/master/infra/bots/task_drivers/push_apps_from_infra_image/)). The task driver sends a pubsub message after the image is built, the docker_pushes_watcher app then pushks those apps.
+A task driver has been written to build and push images of infra apps ([push_apps_from_infra_image](https://skia.googlesource.com/buildbot/+show/master/infra/bots/task_drivers/push_apps_from_infra_image/)). The task driver sends a pubsub message after the image is built, the docker_pushes_watcher app then pushks those apps.
 
 The following steps will add new apps to the auto-deploying framework:
-* Add a new method to the task_driver, similar to [buildPushCTImage](https://skia.googlesource.com/buildbot/+/c7ce9ee7b475f4c8032301225baccbd4442f7f0f/infra/bots/task_drivers/push_apps_from_infra_image/push_apps_from_infra_image.go#189).
-* Add the app to the docker_pushs_watcher yaml file ([example](https://skia.googlesource.com/k8s-config/+/399dc9fbeca5f2c92a67d4d25d7273ee5cf4b680%5E%21/#F0)).
+* Add a new method to the task_driver, similar to [buildPushCTImage](https://skia.googlesource.com/buildbot/+show/c7ce9ee7b475f4c8032301225baccbd4442f7f0f/infra/bots/task_drivers/push_apps_from_infra_image/push_apps_from_infra_image.go#189).
+* Add the app to the docker_pushs_watcher yaml file ([example](https://skia.googlesource.com/k8s-config/+diff/399dc9fbeca5f2c92a67d4d25d7273ee5cf4b680%5E%21/#F0)).
diff --git a/fiddlek/templates/index.html b/fiddlek/templates/index.html
index 51209c7..3bdf91d 100644
--- a/fiddlek/templates/index.html
+++ b/fiddlek/templates/index.html
@@ -9,7 +9,7 @@
     {%template "menu.html" .%}
     <h2>Skia Fiddle</h2>
     <div class="flex"></div>
-    <div class=version>Skia Version: <a href="https://skia.googlesource.com/skia/+/{%.Version%}">{%chop .Version%}</a></div>
+    <div class=version>Skia Version: <a href="https://skia.googlesource.com/skia/+show/{%.Version%}">{%chop .Version%}</a></div>
   </header>
   <section id=main>
     <fiddle-sk display_options bug_link width="{%.Options.Width%}" height="{%.Options.Height%}" source="{%.Options.Source%}" fiddlehash="{%.Hash%}" sources="{%.Sources%}"
diff --git a/gitsync/go/watcher/watcher_test.go b/gitsync/go/watcher/watcher_test.go
index 69630b0..d97bd6b 100644
--- a/gitsync/go/watcher/watcher_test.go
+++ b/gitsync/go/watcher/watcher_test.go
@@ -406,7 +406,7 @@
 	require.Equal(t, orig, strings.TrimSpace(g.Git(ctx, "rev-parse", "HEAD")))
 	next := g.CommitGen(ctx, "fake")
 	ud.gitiles.MockBranches(ctx)
-	ud.gitiles.URLMock.MockOnce(fmt.Sprintf(gitiles.LOG_URL, g.RepoUrl(), git.LogFromTo(deleted, next)), mockhttpclient.MockGetError("404 Not Found", http.StatusNotFound))
+	ud.gitiles.URLMock.MockOnce(fmt.Sprintf(gitiles.LogURL, g.RepoUrl(), git.LogFromTo(deleted, next)), mockhttpclient.MockGetError("404 Not Found", http.StatusNotFound))
 	ud.gitiles.MockLog(ctx, next)
 	require.NoError(t, repo.Update(ctx))
 	require.True(t, ud.gitiles.Empty())
diff --git a/go/buildskia/buildskia.go b/go/buildskia/buildskia.go
index fb0c071..99c3c48 100644
--- a/go/buildskia/buildskia.go
+++ b/go/buildskia/buildskia.go
@@ -4,20 +4,19 @@
 import (
 	"bytes"
 	"context"
-	"encoding/base64"
-	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"net/http"
 	"os"
 	"path/filepath"
-	"regexp"
 	"strings"
 	"time"
 
+	"go.skia.org/infra/go/common"
+	"go.skia.org/infra/go/depot_tools/deps_parser"
 	"go.skia.org/infra/go/exec"
 	"go.skia.org/infra/go/git/gitinfo"
-	"go.skia.org/infra/go/httputils"
+	"go.skia.org/infra/go/gitiles"
+	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/go/sklog"
 	"go.skia.org/infra/go/util"
 	"go.skia.org/infra/go/util/limitwriter"
@@ -39,124 +38,30 @@
 	CMAKE_LINK_ARGS_FILE    = "skia_link_arguments.txt"
 )
 
-var (
-	skiaRevRegex = regexp.MustCompile(".*'skia_revision': '(?P<revision>[0-9a-fA-F]{2,40})'.*")
-)
-
-const (
-	CHROMIUM_DEPS_URL  = "https://chromium.googlesource.com/chromium/src/+/master/DEPS?format=TEXT"
-	SKIA_BRANCHES_JSON = "https://skia.googlesource.com/skia/+refs?format=JSON"
-	SKIA_HEAD_JSON     = "https://skia.googlesource.com/skia/+/master?format=JSON"
-)
-
-type SkiaHead struct {
-	Commit string `json:"commit"`
-}
-
 // GetSkiaHead returns Skia's most recent commit hash to master.
 //
 // If client is nil then a default timeout client is used.
 func GetSkiaHead(client *http.Client) (string, error) {
-	if client == nil {
-		client = httputils.NewTimeoutClient()
-	}
-	resp, err := client.Get(SKIA_HEAD_JSON)
+	head, err := gitiles.NewRepo(common.REPO_SKIA, client).Details(context.TODO(), "master")
 	if err != nil {
-		return "", fmt.Errorf("Could not get Skia's HEAD: %s", err)
+		return "", skerr.Wrapf(err, "Could not get Skia's HEAD")
 	}
-	defer util.Close(resp.Body)
-	if resp.StatusCode != 200 {
-		return "", fmt.Errorf("Got statuscode %d while accessing Skia's HEAD", resp.StatusCode)
-	}
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return "", fmt.Errorf("Could not read Skia's HEAD: %s", err)
-	}
-	if len(body) < 5 {
-		return "", fmt.Errorf("Reponse too short.")
-	}
-	// Strip off the XSS protection chars.
-	parts := strings.SplitN(string(body), "\n", 2)
-	if len(parts) != 2 {
-		return "", fmt.Errorf("Reponse invalid format.")
-	}
-	parsed := &SkiaHead{}
-	if err := json.Unmarshal([]byte(parts[1]), parsed); err != nil {
-		return "", fmt.Errorf("Failed to parse JSON: %s", err)
-	}
-	if parsed.Commit == "" {
-		return "", fmt.Errorf("Failed to get a valid git hash.")
-	}
-	return parsed.Commit, nil
+	return head.Hash, nil
 }
 
 // GetSkiaHash returns Skia's LKGR commit hash as recorded in chromium's DEPS file.
 //
 // If client is nil then a default timeout client is used.
 func GetSkiaHash(client *http.Client) (string, error) {
-	if client == nil {
-		client = httputils.NewTimeoutClient()
+	var buf bytes.Buffer
+	if err := gitiles.NewRepo(common.REPO_CHROMIUM, client).ReadFile(context.TODO(), deps_parser.DepsFileName, &buf); err != nil {
+		return "", skerr.Wrapf(err, "Failed to read Chromium DEPS")
 	}
-	// Find Skia's LKGR commit hash.
-	resp, err := client.Get(CHROMIUM_DEPS_URL)
+	dep, err := deps_parser.GetDep(buf.String(), common.REPO_SKIA)
 	if err != nil {
-		return "", fmt.Errorf("Could not get Skia's LKGR: %s", err)
+		return "", skerr.Wrapf(err, "Failed to get Skia's LKGR")
 	}
-	defer util.Close(resp.Body)
-	if resp.StatusCode != 200 {
-		return "", fmt.Errorf("Got statuscode %d while accessing Chromium's DEPS file", resp.StatusCode)
-	}
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return "", fmt.Errorf("Could not read Skia's LKGR: %s", err)
-	}
-	base64Text := make([]byte, base64.StdEncoding.EncodedLen(len(string(body))))
-	l, _ := base64.StdEncoding.Decode(base64Text, []byte(string(body)))
-	chromiumDepsText := string(base64Text[:l])
-	if strings.Contains(chromiumDepsText, "skia_revision") {
-		return skiaRevRegex.FindStringSubmatch(chromiumDepsText)[1], nil
-	}
-	return "", fmt.Errorf("Could not find skia_revision in Chromium DEPS file")
-}
-
-type Branch struct {
-	Value string `json:"value"`
-	Time  time.Time
-}
-
-// GetSkiaBranches returns a list of the available branches for chrome along
-// with their associated githash.
-//
-// If client is nil then a default timeout client is used.
-func GetSkiaBranches(client *http.Client) (map[string]Branch, error) {
-	if client == nil {
-		client = httputils.NewTimeoutClient()
-	}
-	resp, err := client.Get(SKIA_BRANCHES_JSON)
-	if err != nil {
-		return nil, fmt.Errorf("Could not get Skia's branches: %s", err)
-	}
-	defer util.Close(resp.Body)
-	if resp.StatusCode != 200 {
-		return nil, fmt.Errorf("Got statuscode %d while accessing Skia's branches", resp.StatusCode)
-	}
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return nil, fmt.Errorf("Could not read Skia's branches: %s", err)
-	}
-	if len(body) < 5 {
-		return nil, fmt.Errorf("Reponse too short.")
-	}
-	// Strip off the XSS protection chars.
-	parts := strings.SplitN(string(body), "\n", 2)
-	if len(parts) != 2 {
-		return nil, fmt.Errorf("Reponse invalid format.")
-	}
-	ret := map[string]Branch{}
-	if err := json.Unmarshal([]byte(parts[1]), &ret); err != nil {
-		return nil, fmt.Errorf("Failed to parse JSON: %s", err)
-	}
-	return ret, nil
+	return dep.Version, nil
 }
 
 // DownloadSkia uses git to clone Skia from googlesource.com and check it out
diff --git a/go/buildskia/buildskia_test.go b/go/buildskia/buildskia_test.go
index aa5dfd3..012d114 100644
--- a/go/buildskia/buildskia_test.go
+++ b/go/buildskia/buildskia_test.go
@@ -2,7 +2,6 @@
 
 import (
 	"context"
-	"encoding/base64"
 	"fmt"
 	"io/ioutil"
 	"os"
@@ -14,151 +13,9 @@
 	"go.skia.org/infra/go/exec"
 	"go.skia.org/infra/go/git"
 	"go.skia.org/infra/go/git/git_common"
-	"go.skia.org/infra/go/mockhttpclient"
 	"go.skia.org/infra/go/testutils/unittest"
-	"go.skia.org/infra/go/util"
 )
 
-func TestGetSkiaHash(t *testing.T) {
-	unittest.SmallTest(t)
-	deps := `vars = {
-    # Use this googlecode_url variable only if there is an internal mirror for it.
-    # If you do not know, use the full path while defining your new deps entry.
-    'googlecode_url': 'http://%s.googlecode.com/svn',
-    'chromium_git': 'https://chromium.googlesource.com',
-    # Three lines of non-changing comments so that
-    # the commit queue can handle CLs rolling sfntly
-    # and whatever else without interference from each other.
-    'sfntly_revision': '130f832eddf98467e6578b548cb74ce17d04a26d',
-    # Three lines of non-changing comments so that
-    # the commit queue can handle CLs rolling Skia
-    # and whatever else without interference from each other.
-    'skia_revision': '142659c76dfca1e0a34eb6a022329b73b6ba3166',
-    # Three lines of non-changing comments so that
-    # the commit queue can handle CLs rolling V8
-    # and whatever else without interference from each other.
-    'v8_revision': 'edb7ef701c169a11a69e2be028534936ffb56346',
-  `
-	body := base64.StdEncoding.EncodeToString([]byte(deps))
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		CHROMIUM_DEPS_URL: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	hash, err := GetSkiaHash(client)
-	require.NoError(t, err)
-	require.Equal(t, "142659c76dfca1e0a34eb6a022329b73b6ba3166", hash)
-}
-
-func TestGetSkiaHashEmpty(t *testing.T) {
-	unittest.SmallTest(t)
-	deps := ``
-	body := base64.StdEncoding.EncodeToString([]byte(deps))
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		CHROMIUM_DEPS_URL: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	_, err := GetSkiaHash(client)
-	require.Error(t, err)
-}
-
-func TestGetSkiaBranches(t *testing.T) {
-	unittest.SmallTest(t)
-	body := `)]}'
-{
-  "HEAD": {
-    "value": "142659c76dfca1e0a34eb6a022329b73b6ba3166",
-    "target": "refs/heads/master"
-  },
-  "refs/branch-heads/m20_1132": {
-    "value": "c66137cb834d35c9b403fe81dd1700396ea7b056"
-  },
-  "refs/heads/chrome/m49": {
-    "value": "e2913ed9b25bf4a47194c4ca134beec0b5784842"
-  },
-  "refs/heads/chrome/m50": {
-    "value": "dde87ad6d5278661aac6a8eda9e8f43deb255fe2"
-  },
-  "refs/heads/infra/config": {
-    "value": "16de5a78b524795d9e8f619be3fe96d6b82dd397"
-  },
-  "refs/heads/master": {
-    "value": "142659c76dfca1e0a34eb6a022329b73b6ba3166"
-  },
-  "refs/internal/git-svn-max-branch-rev": {
-    "value": "8f0ed522970c2ea01050379a12be5d5e58632e66"
-  }
-}`
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_BRANCHES_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	br, err := GetSkiaBranches(client)
-	require.NoError(t, err)
-	require.Equal(t, 7, len(br))
-	keys := []string{}
-	for branch := range br {
-		keys = append(keys, branch)
-	}
-	require.True(t, util.In("refs/heads/chrome/m50", keys))
-}
-
-func TestGetSkiaBranchesEmpty(t *testing.T) {
-	unittest.SmallTest(t)
-	body := `)]}'`
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_BRANCHES_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	_, err := GetSkiaBranches(client)
-	require.Error(t, err)
-
-	body = ``
-	client = mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_BRANCHES_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	_, err = GetSkiaBranches(client)
-	require.Error(t, err)
-}
-
-func TestGetSkiaHead(t *testing.T) {
-	unittest.SmallTest(t)
-	body := `)]}'
-{
-    "commit": "273c0f5e87397c40d22bb7e3ee078bb46a3f6860",
-    "tree": "70436fd146c39be9702c6c295a8fd204a38d865f",
-    "parents": [
-    "a5598a40f82d69113fb4764dcb8de62151921807"
-    ]
-}`
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_HEAD_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	hash, err := GetSkiaHead(client)
-	require.NoError(t, err)
-	require.Equal(t, "273c0f5e87397c40d22bb7e3ee078bb46a3f6860", hash)
-}
-
-func TestGetSkiaHeadEmpty(t *testing.T) {
-	unittest.SmallTest(t)
-	body := `)]}'`
-	client := mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_BRANCHES_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	_, err := GetSkiaBranches(client)
-	require.Error(t, err)
-
-	body = ``
-	client = mockhttpclient.New(map[string]mockhttpclient.MockDialogue{
-		SKIA_HEAD_JSON: mockhttpclient.MockGetDialogue([]byte(body)),
-	})
-
-	_, err = GetSkiaHead(client)
-	require.Error(t, err)
-}
-
 func TestGNGen(t *testing.T) {
 	unittest.SmallTest(t)
 	unittest.LinuxOnlyTest(t)
diff --git a/go/cq/cq.go b/go/cq/cq.go
index 492c841..b05c670 100644
--- a/go/cq/cq.go
+++ b/go/cq/cq.go
@@ -289,7 +289,7 @@
 				// in totalTriggeredCQBots. See skbug.com/7340.
 				// Creation time is used above instead of completion time because
 				// that is what CQ does:
-				// https://chrome-internal.googlesource.com/infra/infra_internal/+/master/infra_internal/services/cq/verification/tryjob_utils.py#1271
+				// https://chrome-internal.googlesource.com/infra/infra_internal/+show/master/infra_internal/services/cq/verification/tryjob_utils.py#1271
 				totalTriggeredCQBots--
 			}
 			// The build has completed so move on.
diff --git a/go/gitauth/gitauth.go b/go/gitauth/gitauth.go
index 2fb79e5..0595ca9 100644
--- a/go/gitauth/gitauth.go
+++ b/go/gitauth/gitauth.go
@@ -1,4 +1,4 @@
-// A Go implementation of https://gerrit.googlesource.com/gcompute-tools/+/master/git-cookie-authdaemon
+// A Go implementation of https://gerrit.googlesource.com/gcompute-tools/+show/master/git-cookie-authdaemon
 package gitauth
 
 import (
diff --git a/go/gitiles/gitiles.go b/go/gitiles/gitiles.go
index 36f1cce..6b60a75 100644
--- a/go/gitiles/gitiles.go
+++ b/go/gitiles/gitiles.go
@@ -28,22 +28,32 @@
 */
 
 const (
-	COMMIT_URL        = "%s/+/%s"
-	COMMIT_URL_JSON   = COMMIT_URL + "?format=JSON"
-	DATE_FORMAT_NO_TZ = "Mon Jan 02 15:04:05 2006"
-	DATE_FORMAT_TZ    = "Mon Jan 02 15:04:05 2006 -0700"
-	DOWNLOAD_URL      = "%s/+/%s/%s?format=TEXT"
-	LOG_URL           = "%s/+log/%s?format=JSON"
-	REFS_URL          = "%s/+refs%%2Fheads?format=JSON"
-	TAGS_URL          = "%s/+refs%%2Ftags?format=JSON"
+	// CommitURL is the format of the URL used to retrieve a commit.
+	CommitURL = "%s/+show/%s"
+	// CommitURLJSON is the format of the URL used to retrieve a commit as JSON.
+	CommitURLJSON = CommitURL + "?format=JSON"
+
+	// DownloadURL is the format of the URL used to download a file.
+	DownloadURL = "%s/+show/%s/%s?format=TEXT"
+	// LogURL is the format of the URL used to view the git log.
+	LogURL = "%s/+log/%s?format=JSON"
+	// RefsURL is the format of the URL used to retrieve refs.
+	RefsURL = "%s/+refs%%2Fheads?format=JSON"
+	// TagsURL is the format of the URL used to retrieve tags.
+	TagsURL = "%s/+refs%%2Ftags?format=JSON"
+
+	dateFormatNoTZ = "Mon Jan 02 15:04:05 2006"
+	dateFormatTZ   = "Mon Jan 02 15:04:05 2006 -0700"
 
 	// These were copied from the defaults used by gitfs:
-	// https://gerrit.googlesource.com/gitfs/+/59c1163fd1737445281f2339399b2b986b0d30fe/gitiles/client.go#102
-	MAX_QPS   = rate.Limit(4.0)
-	MAX_BURST = 40
+	// https://gerrit.googlesource.com/gitfs/+show/59c1163fd1737445281f2339399b2b986b0d30fe/gitiles/client.go#102
+	maxQPS   = rate.Limit(4.0)
+	maxBurst = 40
 )
 
 var (
+	// ErrStopIteration is an error returned from a helper function passed to
+	// LogFn which indicates that iteration over commits should stop.
 	ErrStopIteration = errors.New("stop iteration")
 )
 
@@ -63,7 +73,7 @@
 	}
 	return &Repo{
 		client: c,
-		rl:     rate.NewLimiter(MAX_QPS, MAX_BURST),
+		rl:     rate.NewLimiter(maxQPS, maxBurst),
 		URL:    url,
 	}
 }
@@ -80,14 +90,14 @@
 	}
 	if resp.StatusCode != http.StatusOK {
 		util.Close(resp.Body)
-		return nil, fmt.Errorf("Request got status %q", resp.Status)
+		return nil, skerr.Fmt("Request got status %q", resp.Status)
 	}
 	return resp, nil
 }
 
-// getJson executes a GET request to the given URL, reads the response and
+// getJSON executes a GET request to the given URL, reads the response and
 // unmarshals it to the given destination.
-func (r *Repo) getJson(ctx context.Context, url string, dest interface{}) error {
+func (r *Repo) getJSON(ctx context.Context, url string, dest interface{}) error {
 	resp, err := r.get(ctx, url)
 	if err != nil {
 		return err
@@ -104,7 +114,7 @@
 
 // ReadFileAtRef reads the given file at the given ref.
 func (r *Repo) ReadFileAtRef(ctx context.Context, srcPath, ref string, w io.Writer) error {
-	resp, err := r.get(ctx, fmt.Sprintf(DOWNLOAD_URL, r.URL, ref, srcPath))
+	resp, err := r.get(ctx, fmt.Sprintf(DownloadURL, r.URL, ref, srcPath))
 	if err != nil {
 		return err
 	}
@@ -153,14 +163,14 @@
 		// mode tree|blob hash name
 		fields := strings.Fields(line)
 		if len(fields) != 4 {
-			return nil, nil, fmt.Errorf("Got invalid response from gitiles. Expected format \"mode tree|blob hash name\" but got:\n %s", buf.String())
+			return nil, nil, skerr.Fmt("Got invalid response from gitiles. Expected format \"mode tree|blob hash name\" but got:\n %s", buf.String())
 		}
 		if fields[1] == "tree" {
 			dirs = append(dirs, fields[3])
 		} else if fields[1] == "blob" {
 			files = append(files, fields[3])
 		} else {
-			return nil, nil, fmt.Errorf("Got invalid response from gitiles. Expected format \"mode tree|blob hash name\" but got %q instead of \"tree\" or \"blob\".", fields[1])
+			return nil, nil, skerr.Fmt("Got invalid response from gitiles. Expected format \"mode tree|blob hash name\" but got %q instead of \"tree\" or \"blob\".", fields[1])
 		}
 	}
 	return files, dirs, nil
@@ -222,12 +232,14 @@
 	return r.ListFilesRecursiveAtRef(ctx, dir, "master")
 }
 
+// Author represents the author of a Commit.
 type Author struct {
 	Name  string `json:"name"`
 	Email string `json:"email"`
 	Time  string `json:"time"`
 }
 
+// TreeDiff represents a change to a file in a Commit.
 type TreeDiff struct {
 	// Type can be one of Copy, Rename, Add, Delete, Modify.
 	Type string `json:"type"`
@@ -237,6 +249,7 @@
 	NewPath string `json:"new_path"`
 }
 
+// Commit contains information about one Git commit.
 type Commit struct {
 	Commit    string      `json:"commit"`
 	Parents   []string    `json:"parents"`
@@ -246,6 +259,7 @@
 	TreeDiffs []*TreeDiff `json:"tree_diff"`
 }
 
+// Log represents a series of Commits in the git log.
 type Log struct {
 	Log  []*Commit `json:"log"`
 	Next string    `json:"next"`
@@ -255,9 +269,9 @@
 	var ts time.Time
 	var err error
 	if strings.Contains(c.Committer.Time, " +") || strings.Contains(c.Committer.Time, " -") {
-		ts, err = time.Parse(DATE_FORMAT_TZ, c.Committer.Time)
+		ts, err = time.Parse(dateFormatTZ, c.Committer.Time)
 	} else {
-		ts, err = time.Parse(DATE_FORMAT_NO_TZ, c.Committer.Time)
+		ts, err = time.Parse(dateFormatNoTZ, c.Committer.Time)
 	}
 	if err != nil {
 		return nil, err
@@ -301,12 +315,12 @@
 		Author: &Author{
 			Name:  authorName,
 			Email: authorEmail,
-			Time:  details.Timestamp.Format(DATE_FORMAT_TZ),
+			Time:  details.Timestamp.Format(dateFormatTZ),
 		},
 		Committer: &Author{
 			Name:  authorName,
 			Email: authorEmail,
-			Time:  details.Timestamp.Format(DATE_FORMAT_TZ),
+			Time:  details.Timestamp.Format(dateFormatTZ),
 		},
 		Message: details.Subject + "\n\n" + details.Body,
 	}, nil
@@ -315,7 +329,7 @@
 // getCommit returns a Commit for the given ref.
 func (r *Repo) getCommit(ctx context.Context, ref string) (*Commit, error) {
 	var c Commit
-	if err := r.getJson(ctx, fmt.Sprintf(COMMIT_URL_JSON, r.URL, ref), &c); err != nil {
+	if err := r.getJSON(ctx, fmt.Sprintf(CommitURLJSON, r.URL, ref), &c); err != nil {
 		return nil, err
 	}
 	return &c, nil
@@ -462,7 +476,7 @@
 		if start != "" {
 			u += "&s=" + start
 		}
-		if err := r.getJson(ctx, u, &l); err != nil {
+		if err := r.getJSON(ctx, u, &l); err != nil {
 			return err
 		}
 		// Convert to vcsinfo.LongCommit.
@@ -485,16 +499,15 @@
 		}
 		if l.Next == "" || (limit > 0 && seen >= limit) {
 			return nil
-		} else {
-			start = l.Next
 		}
+		start = l.Next
 	}
 }
 
 // Log returns Gitiles' equivalent to "git log" for the given expression.
 func (r *Repo) Log(ctx context.Context, logExpr string, opts ...LogOption) ([]*vcsinfo.LongCommit, error) {
 	rv := []*vcsinfo.LongCommit{}
-	url := fmt.Sprintf(LOG_URL, r.URL, logExpr)
+	url := fmt.Sprintf(LogURL, r.URL, logExpr)
 	if err := r.logHelper(ctx, url, func(ctx context.Context, commits []*vcsinfo.LongCommit) error {
 		rv = append(rv, commits...)
 		return nil
@@ -615,7 +628,7 @@
 // LogFnBatch is the same as LogFn but it runs the given function over batches
 // of commits.
 func (r *Repo) LogFnBatch(ctx context.Context, logExpr string, fn func(context.Context, []*vcsinfo.LongCommit) error, opts ...LogOption) error {
-	url := fmt.Sprintf(LOG_URL, r.URL, logExpr)
+	url := fmt.Sprintf(LogURL, r.URL, logExpr)
 	return r.logHelper(ctx, url, fn, opts...)
 }
 
@@ -630,7 +643,7 @@
 // Branches returns the list of branches in the repo.
 func (r *Repo) Branches(ctx context.Context) ([]*git.Branch, error) {
 	branchMap := RefsMap{}
-	if err := r.getJson(ctx, fmt.Sprintf(REFS_URL, r.URL), &branchMap); err != nil {
+	if err := r.getJSON(ctx, fmt.Sprintf(RefsURL, r.URL), &branchMap); err != nil {
 		return nil, err
 	}
 	rv := make([]*git.Branch, 0, len(branchMap))
@@ -651,7 +664,7 @@
 		Value  string `json:"value"`
 		Peeled string `json:"peeled"`
 	}{}
-	if err := r.getJson(ctx, fmt.Sprintf(TAGS_URL, r.URL), &tags); err != nil {
+	if err := r.getJSON(ctx, fmt.Sprintf(TagsURL, r.URL), &tags); err != nil {
 		return nil, err
 	}
 	rv := make(map[string]string, len(tags))
diff --git a/go/gitiles/gitiles_test.go b/go/gitiles/gitiles_test.go
index 4875ed3..e4f1822 100644
--- a/go/gitiles/gitiles_test.go
+++ b/go/gitiles/gitiles_test.go
@@ -102,19 +102,19 @@
 				Author: &Author{
 					Name:  "don't care",
 					Email: "don't care",
-					Time:  d.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time:  d.Timestamp.Format(dateFormatNoTZ),
 				},
 				Committer: &Author{
 					Name:  "don't care",
 					Email: "don't care",
-					Time:  d.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time:  d.Timestamp.Format(dateFormatNoTZ),
 				},
 				Message: d.Subject,
 			})
 		}
 		js := testutils.MarshalJSON(t, results)
 		js = ")]}'\n" + js
-		urlMock.MockOnce(fmt.Sprintf(LOG_URL, gb.RepoUrl(), git.LogFromTo(from, to)), mockhttpclient.MockGetDialogue([]byte(js)))
+		urlMock.MockOnce(fmt.Sprintf(LogURL, gb.RepoUrl(), git.LogFromTo(from, to)), mockhttpclient.MockGetDialogue([]byte(js)))
 	}
 
 	// Return a slice of the hashes for the given commits.
@@ -212,9 +212,9 @@
 
 	// Gitiles API paginates logs over 100 commits long.
 	ctx := context.Background()
-	repoUrl := "https://fake/repo"
+	repoURL := "https://fake/repo"
 	urlMock := mockhttpclient.NewURLMock()
-	repo := NewRepo(repoUrl, urlMock.Client())
+	repo := NewRepo(repoURL, urlMock.Client())
 	repo.rl.SetLimit(rate.Inf)
 	next := 0
 	hash := func() string {
@@ -253,20 +253,20 @@
 				Author: &Author{
 					Name:  "don't care",
 					Email: "don't care",
-					Time:  c.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time:  c.Timestamp.Format(dateFormatNoTZ),
 				},
 				Committer: &Author{
 					Name:  "don't care",
 					Email: "don't care",
-					Time:  c.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time:  c.Timestamp.Format(dateFormatNoTZ),
 				},
 				Message: "don't care",
 			})
 		}
 		js := testutils.MarshalJSON(t, results)
 		js = ")]}'\n" + js
-		url1 := fmt.Sprintf(LOG_URL, repoUrl, git.LogFromTo(from.Hash, to.Hash))
-		url2 := fmt.Sprintf(LOG_URL, repoUrl, to.Hash)
+		url1 := fmt.Sprintf(LogURL, repoURL, git.LogFromTo(from.Hash, to.Hash))
+		url2 := fmt.Sprintf(LogURL, repoURL, to.Hash)
 		if start != "" {
 			url1 += "&s=" + start
 			url2 += "&s=" + start
@@ -341,9 +341,9 @@
 		c.Index = 0
 	}
 
-	repoUrl := "https://fake/repo"
+	repoURL := "https://fake/repo"
 	urlMock := mockhttpclient.NewURLMock()
-	repo := NewRepo(repoUrl, urlMock.Client())
+	repo := NewRepo(repoURL, urlMock.Client())
 	repo.rl.SetLimit(rate.Inf)
 
 	mock := func(logExpr string, limit int, commits []*vcsinfo.LongCommit, start, next string) {
@@ -358,11 +358,11 @@
 				Parents: c.Parents,
 				Author: &Author{
 					Name: strings.TrimSuffix(c.Author, " ()"),
-					Time: c.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time: c.Timestamp.Format(dateFormatNoTZ),
 				},
 				Committer: &Author{
 					Name: strings.TrimSuffix(c.Author, " ()"),
-					Time: c.Timestamp.Format(DATE_FORMAT_NO_TZ),
+					Time: c.Timestamp.Format(dateFormatNoTZ),
 				},
 				Message: c.Subject,
 			})
@@ -370,7 +370,7 @@
 		js := testutils.MarshalJSON(t, results)
 		js = ")]}'\n" + js
 		opt := LogLimit(limit)
-		url := fmt.Sprintf(LOG_URL, repo.URL, logExpr) + fmt.Sprintf("&%s=%s", opt.Key(), opt.Value())
+		url := fmt.Sprintf(LogURL, repo.URL, logExpr) + fmt.Sprintf("&%s=%s", opt.Key(), opt.Value())
 		if start != "" {
 			url += "&s=" + start
 		}
@@ -429,9 +429,9 @@
 	unittest.SmallTest(t)
 
 	ctx := context.Background()
-	repoUrl := "https://skia.googlesource.com/buildbot.git"
+	repoURL := "https://skia.googlesource.com/buildbot.git"
 	urlMock := mockhttpclient.NewURLMock()
-	repo := NewRepo(repoUrl, urlMock.Client())
+	repo := NewRepo(repoURL, urlMock.Client())
 	repo.rl.SetLimit(rate.Inf)
 
 	resp := `)]}'
@@ -466,7 +466,7 @@
   ]
 }
 `
-	urlMock.MockOnce(repoUrl+"/+/my/other/ref?format=JSON", mockhttpclient.MockGetDialogue([]byte(resp)))
+	urlMock.MockOnce(fmt.Sprintf(CommitURLJSON, repoURL, "my/other/ref"), mockhttpclient.MockGetDialogue([]byte(resp)))
 	treeDiffs, err := repo.GetTreeDiffs(ctx, "my/other/ref")
 	require.NoError(t, err)
 	require.Equal(t, 2, len(treeDiffs))
@@ -482,15 +482,15 @@
 	unittest.SmallTest(t)
 
 	ctx := context.Background()
-	repoUrl := "https://skia.googlesource.com/buildbot.git"
+	repoURL := "https://skia.googlesource.com/buildbot.git"
 	urlMock := mockhttpclient.NewURLMock()
-	repo := NewRepo(repoUrl, urlMock.Client())
+	repo := NewRepo(repoURL, urlMock.Client())
 	repo.rl.SetLimit(rate.Inf)
 
 	resp1 := base64.StdEncoding.EncodeToString([]byte(`100644 blob 573680d74f404d64a7c3441f8a502c007fdcd3b7    gitiles.go
 100644 blob c2b8be8049e8503391239bbf00877ebf5880493c    gitiles_test.go
 040000 tree 81b1fde7557bd75ad0392143a9d79ed78d0ed4ab    testutils`))
-	urlMock.MockOnce(repoUrl+"/+/my/ref/go/gitiles?format=TEXT", mockhttpclient.MockGetDialogue([]byte(resp1)))
+	urlMock.MockOnce(fmt.Sprintf(DownloadURL, repoURL, "my/ref", "go/gitiles"), mockhttpclient.MockGetDialogue([]byte(resp1)))
 
 	files, dirs, err := repo.ListDirAtRef(ctx, "go/gitiles", "my/ref")
 	require.NoError(t, err)
@@ -518,10 +518,10 @@
   "tree_diff": []
 }
 `
-	urlMock.MockOnce(repoUrl+"/+/my/other/ref?format=JSON", mockhttpclient.MockGetDialogue([]byte(resp2)))
-	urlMock.MockOnce(repoUrl+"/+/bbadbbadbbadbbadbbadbbadbbadbbadbbadbbad/go/gitiles?format=TEXT", mockhttpclient.MockGetDialogue([]byte(resp1)))
+	urlMock.MockOnce(fmt.Sprintf(CommitURLJSON, repoURL, "my/other/ref"), mockhttpclient.MockGetDialogue([]byte(resp2)))
+	urlMock.MockOnce(fmt.Sprintf(DownloadURL, repoURL, "bbadbbadbbadbbadbbadbbadbbadbbadbbadbbad", "go/gitiles"), mockhttpclient.MockGetDialogue([]byte(resp1)))
 	resp3 := base64.StdEncoding.EncodeToString([]byte(`100644 blob 6e5cdd994551045ab24a4246906c7723cb12c12e    testutils.go`))
-	urlMock.MockOnce(repoUrl+"/+/bbadbbadbbadbbadbbadbbadbbadbbadbbadbbad/go/gitiles/testutils?format=TEXT", mockhttpclient.MockGetDialogue([]byte(resp3)))
+	urlMock.MockOnce(fmt.Sprintf(DownloadURL, repoURL, "bbadbbadbbadbbadbbadbbadbbadbbadbbadbbad", "go/gitiles/testutils"), mockhttpclient.MockGetDialogue([]byte(resp3)))
 	files, err = repo.ListFilesRecursiveAtRef(ctx, "go/gitiles", "my/other/ref")
 	require.NoError(t, err)
 	assertdeep.Equal(t, []string{"gitiles.go", "gitiles_test.go", "testutils/testutils.go"}, files)
@@ -551,9 +551,9 @@
 
 	// Setup.
 	ctx := context.Background()
-	repoUrl := "https://skia.googlesource.com/buildbot.git"
+	repoURL := "https://skia.googlesource.com/buildbot.git"
 	urlMock := mockhttpclient.NewURLMock()
-	repo := NewRepo(repoUrl, urlMock.Client())
+	repo := NewRepo(repoURL, urlMock.Client())
 	gb := git_testutils.GitInit(t, ctx)
 
 	// Helper function which creates a commit, retrieves it from both
@@ -574,7 +574,7 @@
 		b, err := json.Marshal(c)
 		require.NoError(t, err)
 		b = append([]byte(")]}'\n"), b...)
-		urlMock.MockOnce(repoUrl+fmt.Sprintf("/+/%s?format=JSON", hash), mockhttpclient.MockGetDialogue(b))
+		urlMock.MockOnce(fmt.Sprintf(CommitURLJSON, repoURL, hash), mockhttpclient.MockGetDialogue(b))
 
 		// Perform the request.
 		actual, err := repo.Details(ctx, hash)
diff --git a/go/gitiles/testutils/testutils.go b/go/gitiles/testutils/testutils.go
index a4b25ac..97bb54c 100644
--- a/go/gitiles/testutils/testutils.go
+++ b/go/gitiles/testutils/testutils.go
@@ -43,7 +43,7 @@
 	assert.NoError(mr.t, err)
 	body := make([]byte, base64.StdEncoding.EncodedLen(len([]byte(contents))))
 	base64.StdEncoding.Encode(body, []byte(contents))
-	url := fmt.Sprintf(gitiles.DOWNLOAD_URL, mr.url, ref, srcPath)
+	url := fmt.Sprintf(gitiles.DownloadURL, mr.url, ref, srcPath)
 	mr.URLMock.MockOnce(url, mockhttpclient.MockGetDialogue(body))
 }
 
@@ -60,7 +60,7 @@
 	b, err := json.Marshal(c)
 	assert.NoError(mr.t, err)
 	b = append([]byte(")]}'\n"), b...)
-	url := fmt.Sprintf(gitiles.COMMIT_URL_JSON, mr.url, ref)
+	url := fmt.Sprintf(gitiles.CommitURLJSON, mr.url, ref)
 	mr.URLMock.MockOnce(url, mockhttpclient.MockGetDialogue(b))
 }
 
@@ -76,7 +76,7 @@
 	b, err := json.Marshal(res)
 	assert.NoError(mr.t, err)
 	b = append([]byte(")]}'\n"), b...)
-	url := fmt.Sprintf(gitiles.REFS_URL, mr.url)
+	url := fmt.Sprintf(gitiles.RefsURL, mr.url)
 	mr.URLMock.MockOnce(url, mockhttpclient.MockGetDialogue(b))
 }
 
@@ -92,7 +92,7 @@
 	b, err := json.Marshal(log)
 	assert.NoError(mr.t, err)
 	b = append([]byte(")]}'\n"), b...)
-	url := fmt.Sprintf(gitiles.LOG_URL, mr.url, logExpr)
+	url := fmt.Sprintf(gitiles.LogURL, mr.url, logExpr)
 	query, _, err := gitiles.LogOptionsToQuery(opts)
 	require.NoError(mr.t, err)
 	if query != "" {
diff --git a/go/monorail/v1/monorail.go b/go/monorail/v1/monorail.go
index 8a6b63a..c9fa5ea 100644
--- a/go/monorail/v1/monorail.go
+++ b/go/monorail/v1/monorail.go
@@ -6,7 +6,7 @@
 
 // Package monorail provides access to the .
 //
-// For product documentation, see: https://chromium.googlesource.com/infra/infra/+/master/appengine/monorail/doc/api.md
+// For product documentation, see: https://chromium.googlesource.com/infra/infra/+doc/master/appengine/monorail/doc/api.md
 //
 // Creating a client
 //
diff --git a/go/taskname/task_name_schema.go b/go/taskname/task_name_schema.go
index 96c1d47..1ddc092 100644
--- a/go/taskname/task_name_schema.go
+++ b/go/taskname/task_name_schema.go
@@ -8,7 +8,7 @@
 //go:generate go run gen_schema.go
 
 // TaskNameParser parses a builder/task name into its constituent parts
-// See https://skia.googlesource.com/skia/+/master/infra/bots/recipe_modules/builder_name_schema/builder_name_schema.json
+// See https://skia.googlesource.com/skia/+show/master/infra/bots/recipe_modules/builder_name_schema/builder_name_schema.json
 type TaskNameParser interface {
 	ParseTaskName(name string) (map[string]string, error)
 }
diff --git a/go/vcsinfo/testutils/repo.go b/go/vcsinfo/testutils/repo.go
index ac3a229..cbf3e2e 100644
--- a/go/vcsinfo/testutils/repo.go
+++ b/go/vcsinfo/testutils/repo.go
@@ -17,7 +17,7 @@
 }
 
 // TODO(stephana): Use GitBuilder instead of checking in a Git repo.
-// See https://skia.googlesource.com/buildbot/+/master/go/git/testutils/git_builder.go#233
+// See https://skia.googlesource.com/buildbot/+show/master/go/git/testutils/git_builder.go#233
 // Note: This will require to refactor the tests in infra/go/vcsinfo/testutils.
 
 // newTempRepoFrom returns a tempRepo instance based on the contents of the
diff --git a/gold-client/README.md b/gold-client/README.md
index 72169f0..5b15922 100644
--- a/gold-client/README.md
+++ b/gold-client/README.md
@@ -30,9 +30,9 @@
 [CIPD](https://chrome-infra-packages.appspot.com/p/skia/tools/goldctl)
 
 To roll a new version, one must update the
-[pinned version](https://chromium.googlesource.com/infra/infra/+/9c99d4cfd6fadf1d53b5cd9a1a2935d03dc67c6a/go/deps.yaml#432)
+[pinned version](https://chromium.googlesource.com/infra/infra/+show/9c99d4cfd6fadf1d53b5cd9a1a2935d03dc67c6a/go/deps.yaml#432)
 and follow the procedures for
-[updating dependencies](https://chromium.googlesource.com/infra/infra/+/refs/heads/master/go/#updating-dependencies).
+[updating dependencies](https://chromium.googlesource.com/infra/infra/+show/refs/heads/master/go/#updating-dependencies).
 
 For more details, see:
 <https://docs.google.com/document/d/1caPiBgWGjIyOhyMIYYYrFdekzwQ-_nsshp0GWzcSHzA/edit>
\ No newline at end of file
diff --git a/golden/README.md b/golden/README.md
index 417900b..721e30b 100644
--- a/golden/README.md
+++ b/golden/README.md
@@ -7,7 +7,7 @@
 <https://docs.google.com/document/d/1U7eBzYrZCPx24Lp9JH2scKj3G8Gr8GRtQJZRhdigyRQ/edit>
 
 To run Gold locally, see:
-<https://skia.googlesource.com/infra-internal/+/c6fad0bec78c6768ce7e4187606325216dd438ed/scripts/start-gold-chrome-gpu.sh>
+<https://skia.googlesource.com/infra-internal/+show/c6fad0bec78c6768ce7e4187606325216dd438ed/scripts/start-gold-chrome-gpu.sh>
 
 Working on the lit-html frontend
 --------------------------------
diff --git a/golden/frontend/res/imp/gold-status-sk.html b/golden/frontend/res/imp/gold-status-sk.html
index 5acf1b9..eb0caab 100644
--- a/golden/frontend/res/imp/gold-status-sk.html
+++ b/golden/frontend/res/imp/gold-status-sk.html
@@ -184,7 +184,7 @@
         if (url.indexOf('github.com') !== -1) {
           return url + '/commit/' + hash;
         } else {
-          return url + '/+/' + hash;
+          return url + '/+show/' + hash;
         }
       }
     });
diff --git a/golden/k8s-config-templates/README.md b/golden/k8s-config-templates/README.md
index 6052d12..1b79db4 100644
--- a/golden/k8s-config-templates/README.md
+++ b/golden/k8s-config-templates/README.md
@@ -8,4 +8,4 @@
 as a JSON5 file.
 
 There may be some configurations that are checked into:
-<https://skia.googlesource.com/infra-internal/+/refs/heads/master/gold-instance-config/>
\ No newline at end of file
+<https://skia.googlesource.com/infra-internal/+show/refs/heads/master/gold-instance-config/>
\ No newline at end of file
diff --git a/golden/k8s-instances/README.fuchsia.md b/golden/k8s-instances/README.fuchsia.md
index 873bad4..90faf56 100644
--- a/golden/k8s-instances/README.fuchsia.md
+++ b/golden/k8s-instances/README.fuchsia.md
@@ -1,4 +1,4 @@
 File `fuchsia-instance.json5` is not included in this repository.
 
 This file can be found in the `infra-internal` repository, or by following this
-[link](https://skia.googlesource.com/infra-internal/+/refs/heads/master/gold-instance-config/fuchsia-instance.json5).
+[link](https://skia.googlesource.com/infra-internal/+show/refs/heads/master/gold-instance-config/fuchsia-instance.json5).
diff --git a/golden/modules/blamelist-panel-sk/blamelist-panel-sk.js b/golden/modules/blamelist-panel-sk/blamelist-panel-sk.js
index da9e251..ad9d5e6 100644
--- a/golden/modules/blamelist-panel-sk/blamelist-panel-sk.js
+++ b/golden/modules/blamelist-panel-sk/blamelist-panel-sk.js
@@ -44,7 +44,7 @@
   if (repo.indexOf('github.com') !== -1) {
     return `${repo}/commit/${commit.hash}`;
   }
-  return `${repo}/+/${commit.hash}`;
+  return `${repo}/+show/${commit.hash}`;
 };
 
 define('blamelist-panel-sk', class extends ElementSk {
diff --git a/golden/modules/byblame-page-sk/byblame-page-sk_test.js b/golden/modules/byblame-page-sk/byblame-page-sk_test.js
index bdf3948..7afb08c 100644
--- a/golden/modules/byblame-page-sk/byblame-page-sk_test.js
+++ b/golden/modules/byblame-page-sk/byblame-page-sk_test.js
@@ -208,7 +208,7 @@
         expectHasGmBlames(byblamePageSk);
         expectFirstCommitLinkHrefToBe(
           byblamePageSk,
-          'https://skia.googlesource.com/skia.git/+/05f6a01bf9fd25be9e5fff4af5505c3945058b1d',
+          'https://skia.googlesource.com/skia.git/+show/05f6a01bf9fd25be9e5fff4af5505c3945058b1d',
         );
       });
 
diff --git a/golden/modules/byblameentry-sk/byblameentry-sk_test.js b/golden/modules/byblameentry-sk/byblameentry-sk_test.js
index 777e9d1..57c7581 100644
--- a/golden/modules/byblameentry-sk/byblameentry-sk_test.js
+++ b/golden/modules/byblameentry-sk/byblameentry-sk_test.js
@@ -49,13 +49,13 @@
         byBlameEntrySk,
         [{
           linkText: 'bbbbbbb',
-          linkHref: 'https://skia.googlesource.com/skia.git/+/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
+          linkHref: 'https://skia.googlesource.com/skia.git/+show/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
           commitMessage: 'One glyph() to rule them all!!!',
           author: 'Elisa (elisa@example.com)',
           age: '6h',
         }, {
           linkText: 'aaaaaaa',
-          linkHref: 'https://skia.googlesource.com/skia.git/+/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
+          linkHref: 'https://skia.googlesource.com/skia.git/+show/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
           commitMessage: 'flesh out blendmodes through Screen',
           author: 'Joe (joe@example.com)',
           age: '5m',
@@ -163,13 +163,13 @@
         byBlameEntrySk,
         [{
           linkText: 'bbbbbbb',
-          linkHref: 'https://skia.googlesource.com/skia.git/+/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
+          linkHref: 'https://skia.googlesource.com/skia.git/+show/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
           commitMessage: '',
           author: 'Elisa (elisa@example.com)',
           age: '6h',
         }, {
           linkText: 'aaaaaaa',
-          linkHref: 'https://skia.googlesource.com/skia.git/+/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
+          linkHref: 'https://skia.googlesource.com/skia.git/+show/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
           commitMessage: '',
           author: 'Joe (joe@example.com)',
           age: '5m',
diff --git a/infra/bots/assets/cockroachdb/README.md b/infra/bots/assets/cockroachdb/README.md
index d5e215c..2f5280f 100644
--- a/infra/bots/assets/cockroachdb/README.md
+++ b/infra/bots/assets/cockroachdb/README.md
@@ -2,4 +2,4 @@
 =================
 
 This asset is an installation of CockroachDB.  It is managed in the Skia repo:
-https://skia.googlesource.com/skia/+/master/infra/bots/assets/cockroachdb.
+https://skia.googlesource.com/skia/+show/master/infra/bots/assets/cockroachdb.
diff --git a/infra/bots/assets/gcloud_linux/README.md b/infra/bots/assets/gcloud_linux/README.md
index 54577e5..422fe66 100644
--- a/infra/bots/assets/gcloud_linux/README.md
+++ b/infra/bots/assets/gcloud_linux/README.md
@@ -3,4 +3,4 @@
 
 This asset is an installation of the Google Cloud SDK on linux.
 It is managed in the Skia repo:
-https://skia.googlesource.com/skia/+/master/infra/bots/assets/gcloud_linux
+https://skia.googlesource.com/skia/+show/master/infra/bots/assets/gcloud_linux
diff --git a/infra/bots/assets/go/README.md b/infra/bots/assets/go/README.md
index 677ff0f..83f57e7 100644
--- a/infra/bots/assets/go/README.md
+++ b/infra/bots/assets/go/README.md
@@ -2,4 +2,4 @@
 ========
 
 This asset is an installation of Golang.  It is managed in the Skia repo:
-https://skia.googlesource.com/skia/+/master/infra/bots/assets/go
+https://skia.googlesource.com/skia/+show/master/infra/bots/assets/go
diff --git a/infra/bots/recipes.py b/infra/bots/recipes.py
index c6b37ae..137d460 100755
--- a/infra/bots/recipes.py
+++ b/infra/bots/recipes.py
@@ -19,7 +19,7 @@
 ** DO NOT MODIFY **
 *******************
 
-This is a copy of https://chromium.googlesource.com/infra/luci/recipes-py/+/master/recipes.py.
+This is a copy of https://chromium.googlesource.com/infra/luci/recipes-py/+show/master/recipes.py.
 To fix bugs, fix in the googlesource repo then run the autoroller.
 """
 
diff --git a/jsfiddle/modules/canvaskit-fiddle/canvaskit-fiddle.js b/jsfiddle/modules/canvaskit-fiddle/canvaskit-fiddle.js
index e857e2e..91a8826 100644
--- a/jsfiddle/modules/canvaskit-fiddle/canvaskit-fiddle.js
+++ b/jsfiddle/modules/canvaskit-fiddle/canvaskit-fiddle.js
@@ -15,7 +15,7 @@
   <div class=title>CanvasKit Fiddle</div>
   <div class=flex></div>
   <div class=version>
-    <a href="https://skia.googlesource.com/skia/+/${SKIA_VERSION}">${SKIA_VERSION.substring(0, 10)}</a>
+    <a href="https://skia.googlesource.com/skia/+show/${SKIA_VERSION}">${SKIA_VERSION.substring(0, 10)}</a>
   </div>
 </header>
 
diff --git a/jsfiddle/modules/pathkit-fiddle/pathkit-fiddle.js b/jsfiddle/modules/pathkit-fiddle/pathkit-fiddle.js
index 3bd4aaf..8d14173 100644
--- a/jsfiddle/modules/pathkit-fiddle/pathkit-fiddle.js
+++ b/jsfiddle/modules/pathkit-fiddle/pathkit-fiddle.js
@@ -19,7 +19,7 @@
   <div class=flex></div>
 
   <div class=version>
-    <a href="https://skia.googlesource.com/skia/+/${SKIA_VERSION}">${SKIA_VERSION.substring(0, 10)}</a>
+    <a href="https://skia.googlesource.com/skia/+show/${SKIA_VERSION}">${SKIA_VERSION.substring(0, 10)}</a>
   </div>
 </header>
 
diff --git a/launch.md b/launch.md
index d1e5bc9..dba62be 100644
--- a/launch.md
+++ b/launch.md
@@ -161,7 +161,7 @@
   under load.
 - Test on browsers that your users will be using, at least Chrome on desktop and
   ideally Chrome on Android.
-- Create an `app.yaml` in [skia-public-config](https://skia.googlesource.com/skia-public-config/+/master/)
+- Create an `app.yaml` in [k8s-config](https://skia.googlesource.com/k8s-config/+show/master/)
 This controls how your app will be run in GKE. See
 [these docs](https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/)
 for more on the schema. Commit this, then run `pushk appname` to make the configuration
@@ -229,7 +229,7 @@
 
 - If you have simple routing needs, to make your service visible to the public
   add a [`skia.org.domain` annotation to your Service
-  YAML](https://skia.googlesource.com/buildbot/+/refs/heads/master/skfe/README.md)
+  YAML](https://skia.googlesource.com/buildbot/+doc/refs/heads/master/skfe/README.md)
   with the domain name and deploy your updated yaml with `kubectl apply`.
 
   If your routing is more complicated you can skip the YAML annotation and write
@@ -258,14 +258,14 @@
   `go.skia.org/infra/go/metrics2`, e.g. to ensure liveness/heartbeat of any
   background processes.
 
-- Add alert rules to [alerts_public](https://skia.googlesource.com/buildbot/+/master/promk/prometheus/alerts_public.yml).
+- Add alert rules to [alerts_public](https://skia.googlesource.com/buildbot/+show/master/promk/prometheus/alerts_public.yml).
    The alerts may link to a production manual, `PROD.md`, checked into the
   application source directory. Examples:
     - All prober rules.
     - Additional stats from metrics2.
   Legacy apps have their alert rules in `prometheus/sys/alert.rules`
 
-- Some [general metrics](https://skia.googlesource.com/buildbot/+/master/promk/prometheus/alerts_general.yml)
+- Some [general metrics](https://skia.googlesource.com/buildbot/+show/master/promk/prometheus/alerts_general.yml)
 apply to all apps and may not need to be added
   explicitly for your application, such as:
     - Too many goroutines.
diff --git a/machine/go/machine/machine.go b/machine/go/machine/machine.go
index 894f6d1..1479a82 100644
--- a/machine/go/machine/machine.go
+++ b/machine/go/machine/machine.go
@@ -4,7 +4,7 @@
 
 // SwarmingDimensions is for de/serializing swarming dimensions:
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Magic-Values.md#bot-dimensions
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+doc/master/appengine/swarming/doc/Magic-Values.md#bot-dimensions
 type SwarmingDimensions map[string][]string
 
 // Well known swarming dimensions.
diff --git a/machine/go/machine/processor/impl.go b/machine/go/machine/processor/impl.go
index a14ca80..11f4596 100644
--- a/machine/go/machine/processor/impl.go
+++ b/machine/go/machine/processor/impl.go
@@ -208,7 +208,7 @@
 	// possible device properties that can define that dimension. The
 	// product.device should be read (and listed) first, that is, before
 	// build.product because the latter is deprecated.
-	// https://android.googlesource.com/platform/build/+/master/tools/buildinfo.sh
+	// https://android.googlesource.com/platform/build/+show/master/tools/buildinfo.sh
 	dimensionProperties = map[string][]string{
 		"device_os":           {"ro.build.id"},
 		"device_os_flavor":    {"ro.product.brand", "ro.product.system.brand"},
diff --git a/particles/modules/particles-sk/particles-sk.js b/particles/modules/particles-sk/particles-sk.js
index 39af447..fbb0e12 100644
--- a/particles/modules/particles-sk/particles-sk.js
+++ b/particles/modules/particles-sk/particles-sk.js
@@ -113,7 +113,7 @@
 <header>
   <h2>Particles</h2>
   <span>
-    <a href='https://skia.googlesource.com/skia/+/${SKIA_VERSION}'>
+    <a href='https://skia.googlesource.com/skia/+show/${SKIA_VERSION}'>
       ${SKIA_VERSION.slice(0, 7)}
     </a>
   </span>
diff --git a/perf/DESIGN.md b/perf/DESIGN.md
index 3ac5333..d0578c1 100644
--- a/perf/DESIGN.md
+++ b/perf/DESIGN.md
@@ -10,7 +10,7 @@
 
 The code for the server along with VM instance setup scripts is kept in:
 
-  * https://skia.googlesource.com/buildbot/+/master/perf/
+  * https://skia.googlesource.com/buildbot/+show/master/perf/
 
 
 Architecture
diff --git a/perf/go/bug/bug.go b/perf/go/bug/bug.go
index 715d71a..460fbf8 100644
--- a/perf/go/bug/bug.go
+++ b/perf/go/bug/bug.go
@@ -24,7 +24,7 @@
 // ExampleExpand expands the given uriTemplate with example data.
 func ExampleExpand(uriTemplate string) string {
 	c := &cid.CommitDetail{
-		URL: "https://skia.googlesource.com/skia/+/d261e1075a93677442fdf7fe72aba7e583863664",
+		URL: "https://skia.googlesource.com/skia/+show/d261e1075a93677442fdf7fe72aba7e583863664",
 	}
 	clusterLink := "https://perf.skia.org/t/?begin=1498332791&end=1498528391&subset=flagged"
 	message := "Looks like a regression."
diff --git a/perf/go/bug/bug_test.go b/perf/go/bug/bug_test.go
index c089f0e..f7128fc 100644
--- a/perf/go/bug/bug_test.go
+++ b/perf/go/bug/bug_test.go
@@ -12,10 +12,10 @@
 	unittest.SmallTest(t)
 
 	c := &cid.CommitDetail{
-		URL: "https://skia.googlesource.com/skia/+/d261e1075a93677442fdf7fe72aba7e583863664",
+		URL: "https://skia.googlesource.com/skia/+show/d261e1075a93677442fdf7fe72aba7e583863664",
 	}
 	clusterLink := "https://perf.skia.org/t/?begin=1498332791&end=1498528391&subset=flagged"
 	message := "noise"
 	buglink := Expand("https://example.com/?link={cluster_url}&commit={commit_url}&message={message}", clusterLink, c, message)
-	assert.Equal(t, "https://example.com/?link=https%3A%2F%2Fperf.skia.org%2Ft%2F%3Fbegin%3D1498332791%26end%3D1498528391%26subset%3Dflagged&commit=https%3A%2F%2Fskia.googlesource.com%2Fskia%2F%2B%2Fd261e1075a93677442fdf7fe72aba7e583863664&message=noise", buglink)
+	assert.Equal(t, "https://example.com/?link=https%3A%2F%2Fperf.skia.org%2Ft%2F%3Fbegin%3D1498332791%26end%3D1498528391%26subset%3Dflagged&commit=https%3A%2F%2Fskia.googlesource.com%2Fskia%2F%2Bshow%2Fd261e1075a93677442fdf7fe72aba7e583863664&message=noise", buglink)
 }
diff --git a/perf/go/cid/cid.go b/perf/go/cid/cid.go
index 3f18476..6ecb004 100644
--- a/perf/go/cid/cid.go
+++ b/perf/go/cid/cid.go
@@ -8,6 +8,7 @@
 	"strings"
 	"time"
 
+	"go.skia.org/infra/go/gitiles"
 	"go.skia.org/infra/go/human"
 	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/perf/go/config"
@@ -92,7 +93,7 @@
 	if debounce {
 		return subject
 	} else {
-		return fmt.Sprintf("%s/+/%s", repoURL, hash)
+		return fmt.Sprintf(gitiles.CommitURL, repoURL, hash)
 	}
 }
 
diff --git a/perf/go/cid/cid_test.go b/perf/go/cid/cid_test.go
index f951368..ea93221 100644
--- a/perf/go/cid/cid_test.go
+++ b/perf/go/cid/cid_test.go
@@ -90,7 +90,7 @@
 				subject:  "https://android-master-ingest.skia.org/r/6146906?branch=aosp-androidx-master-dev",
 				debounce: false,
 			},
-			want: "https://skia.googlesource.com/perf-buildid/android-master/+/db4eaa1d0783df0fd4b630ac897c5cbc3c387d10",
+			want: "https://skia.googlesource.com/perf-buildid/android-master/+show/db4eaa1d0783df0fd4b630ac897c5cbc3c387d10",
 		},
 		{
 			name: "bounce",
diff --git a/perf/go/notify/notify.go b/perf/go/notify/notify.go
index 6b43bed..5b82a9f 100644
--- a/perf/go/notify/notify.go
+++ b/perf/go/notify/notify.go
@@ -124,7 +124,7 @@
 func (n *Notifier) ExampleSend(alert *alerts.Alert) error {
 	c := &cid.CommitDetail{
 		Message: "Re-enable opList dependency tracking",
-		URL:     "https://skia.googlesource.com/skia/+/d261e1075a93677442fdf7fe72aba7e583863664",
+		URL:     "https://skia.googlesource.com/skia/+show/d261e1075a93677442fdf7fe72aba7e583863664",
 		Hash:    "d261e1075a93677442fdf7fe72aba7e583863664",
 	}
 	cl := &clustering2.ClusterSummary{
diff --git a/perf/go/notify/notify_test.go b/perf/go/notify/notify_test.go
index 4f4cc59..b4075dd 100644
--- a/perf/go/notify/notify_test.go
+++ b/perf/go/notify/notify_test.go
@@ -39,5 +39,5 @@
 	assert.Equal(t, []string{"someone@example.org", "someother@example.com"}, e.to)
 	assert.Equal(t, fromAddress, e.from)
 	assert.Equal(t, "MyAlert - Regression found for \"Re-enable opList dependency tracking\"", e.subject)
-	assert.Equal(t, "<b>Alert</b><br><br>\n<p>\n\tA Perf Regression has been found at:\n</p>\n<p style=\"padding: 1em;\">\n\t<a href=\"https://perf.skia.org/g/t/d261e1075a93677442fdf7fe72aba7e583863664\">https://perf.skia.org/g/t/d261e1075a93677442fdf7fe72aba7e583863664</a>\n</p>\n<p>\n  For:\n</p>\n<p style=\"padding: 1em;\">\n  <a href=\"https://skia.googlesource.com/skia/&#43;/d261e1075a93677442fdf7fe72aba7e583863664\">https://skia.googlesource.com/skia/&#43;/d261e1075a93677442fdf7fe72aba7e583863664</a>\n</p>\n<p>\n\tWith 10 matching traces.\n</p>", e.body)
+	assert.Equal(t, "<b>Alert</b><br><br>\n<p>\n\tA Perf Regression has been found at:\n</p>\n<p style=\"padding: 1em;\">\n\t<a href=\"https://perf.skia.org/g/t/d261e1075a93677442fdf7fe72aba7e583863664\">https://perf.skia.org/g/t/d261e1075a93677442fdf7fe72aba7e583863664</a>\n</p>\n<p>\n  For:\n</p>\n<p style=\"padding: 1em;\">\n  <a href=\"https://skia.googlesource.com/skia/&#43;show/d261e1075a93677442fdf7fe72aba7e583863664\">https://skia.googlesource.com/skia/&#43;show/d261e1075a93677442fdf7fe72aba7e583863664</a>\n</p>\n<p>\n\tWith 10 matching traces.\n</p>", e.body)
 }
diff --git a/perf/modules/cluster-page-sk/cluster-page-sk-demo.js b/perf/modules/cluster-page-sk/cluster-page-sk-demo.js
index dfff1aa..bdcbc41 100644
--- a/perf/modules/cluster-page-sk/cluster-page-sk-demo.js
+++ b/perf/modules/cluster-page-sk/cluster-page-sk-demo.js
@@ -94,7 +94,7 @@
     offset: 43389,
     author: 'Avinash Parchuri (aparchur@google.com)',
     message: '3a543aa - 23h 34m - Reland "[skottie] Add onTextProperty support into ',
-    url: 'https://skia.googlesource.com/skia/+/3a543aafd4e68af182ef88572086c094cd63f0b2',
+    url: 'https://skia.googlesource.com/skia/+show/3a543aafd4e68af182ef88572086c094cd63f0b2',
     hash: '3a543aafd4e68af182ef88572086c094cd63f0b2',
     ts: 1565099441,
   },
@@ -102,7 +102,7 @@
     offset: 43390,
     author: 'Robert Phillips (robertphillips@google.com)',
     message: 'bdb0919 - 21h 15m - Use GrComputeTightCombinedBufferSize in GrMtlGpu::',
-    url: 'https://skia.googlesource.com/skia/+/bdb0919dcc6a700b41492c53ecf06b40983d13d7',
+    url: 'https://skia.googlesource.com/skia/+show/bdb0919dcc6a700b41492c53ecf06b40983d13d7',
     hash: 'bdb0919dcc6a700b41492c53ecf06b40983d13d7',
     ts: 1565107798,
   },
@@ -110,7 +110,7 @@
     offset: 43391,
     author: 'Hal Canary (halcanary@google.com)',
     message: 'e45bf6a - 20h 33m - experimental/editor: interface no longer uses stri',
-    url: 'https://skia.googlesource.com/skia/+/e45bf6a603b7990f418eaf19ef0e2a2e59a9f449',
+    url: 'https://skia.googlesource.com/skia/+show/e45bf6a603b7990f418eaf19ef0e2a2e59a9f449',
     hash: 'e45bf6a603b7990f418eaf19ef0e2a2e59a9f449',
     ts: 1565110328,
   },
diff --git a/perf/modules/cluster-summary2-sk/cluster-summary2-sk-demo.js b/perf/modules/cluster-summary2-sk/cluster-summary2-sk-demo.js
index 4404661..9a8cb65 100644
--- a/perf/modules/cluster-summary2-sk/cluster-summary2-sk-demo.js
+++ b/perf/modules/cluster-summary2-sk/cluster-summary2-sk-demo.js
@@ -10,6 +10,6 @@
 
 ClusterSummary2Sk._lookupCids = () => new Promise(((resolve) => {
   resolve([{
-    offset: 24748, author: 'msarett@google.com', message: '313c463 - Safely handle unsupported color xforms in SkCodec', url: 'https://skia.googlesource.com/skia/+/313c4635e3f1005e6807f5b0ad52805f30902d66', ts: 1476984695,
+    offset: 24748, author: 'msarett@google.com', message: '313c463 - Safely handle unsupported color xforms in SkCodec', url: 'https://skia.googlesource.com/skia/+show/313c4635e3f1005e6807f5b0ad52805f30902d66', ts: 1476984695,
   }]);
 }));
diff --git a/perf/modules/commit-detail-sk/commit-detail-sk-demo.html b/perf/modules/commit-detail-sk/commit-detail-sk-demo.html
index 17667ea..25c1dfd 100644
--- a/perf/modules/commit-detail-sk/commit-detail-sk-demo.html
+++ b/perf/modules/commit-detail-sk/commit-detail-sk-demo.html
@@ -11,7 +11,7 @@
   <script type="text/javascript" charset="utf-8">
     document.querySelector('commit-detail-sk').cid = {
       hash: 'e699a3a2373bc4c2a4bfa93c7af8602cb15f2d1d',
-      url: 'https://skia.googlesource.com/skia/+/e699a3a2373bc4c2a4bfa93c7af8602cb15f2d1d',
+      url: 'https://skia.googlesource.com/skia/+show/e699a3a2373bc4c2a4bfa93c7af8602cb15f2d1d',
       message: 'e699a3a - 19h 59m - Roll third_party/externals/swiftshader 522d5121905',
     };
   </script>
diff --git a/promk/prometheus/alerts_general.yml b/promk/prometheus/alerts_general.yml
index f27be6d..5906ffc 100644
--- a/promk/prometheus/alerts_general.yml
+++ b/promk/prometheus/alerts_general.yml
@@ -329,7 +329,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not finished for any commit in the last 8 hours. Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
+      description: '{{ $labels.job_name }} has not finished for any commit in the last 8 hours. Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
 
 # These jobs have tasks with an expiration of 9 hours, and we allow 2 attempts, so they should
 # normally finish within 18 hours.
@@ -340,7 +340,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not finished for any commit in the last 9 hours. Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
+      description: '{{ $labels.job_name }} has not finished for any commit in the last 9 hours. Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
 
   - alert: OverdueJobSpecNightly
     expr: overdue_job_specs_s{job_trigger="nightly"}/60/60 > 28
@@ -349,7 +349,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not completed in the last 28 hours (nightly job). Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
+      description: '{{ $labels.job_name }} has not completed in the last 28 hours (nightly job). Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
 
   - alert: OverdueJobSpecWeekly
     expr: overdue_job_specs_s{job_trigger="weekly"}/60/60 > 7*24+4
@@ -358,7 +358,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not completed in the last week + 4 hours (weekly job). Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
+      description: '{{ $labels.job_name }} has not completed in the last week + 4 hours (weekly job). Maybe the dimensions need changing? (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#overdue_job_spec'
 
   - alert: LatestJobAgeNightly
     expr: latest_job_age_s{job_trigger="nightly"}/60/60 > 25
@@ -368,7 +368,7 @@
       owner: borenet@google.com
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not been triggered in the last 25 hours (nightly job). Double check whether the periodic triggers are running correctly (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#latest_job_age'
+      description: '{{ $labels.job_name }} has not been triggered in the last 25 hours (nightly job). Double check whether the periodic triggers are running correctly (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#latest_job_age'
 
   - alert: LatestJobAgeWeekly
     expr: latest_job_age_s{job_trigger="weekly"}/60/60 > 7*24+1
@@ -378,7 +378,7 @@
       owner: borenet@google.com
     annotations:
       abbr: '{{ $labels.job_name }}'
-      description: '{{ $labels.job_name }} has not been triggered in the last week + 1 hour (weekly job). Double check whether the periodic triggers are running correctly (Job defined here: {{ $labels.repo }}/+/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#latest_job_age'
+      description: '{{ $labels.job_name }} has not been triggered in the last week + 1 hour (weekly job). Double check whether the periodic triggers are running correctly (Job defined here: {{ $labels.repo }}/+show/master/infra/bots/tasks.json) Production Manual: https://skia.googlesource.com/buildbot/%2B/master/task_scheduler/PROD.md#latest_job_age'
 
 # Datahopper
 
@@ -511,7 +511,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.branch }}'
-      description: 'There is no commit queue config entry for supported branch {{ $labels.branch }} in {{ $labels.repo }}. Either an entry needs to be added to {{ $labels.repo }}/+/infra/config/commit-queue.cfg or the branch needs to be marked as not supported in {{ $labels.repo }}/+/infra/config/supported-branches.json'
+      description: 'There is no commit queue config entry for supported branch {{ $labels.branch }} in {{ $labels.repo }}. Either an entry needs to be added to {{ $labels.repo }}/+show/infra/config/commit-queue.cfg or the branch needs to be marked as not supported in {{ $labels.repo }}/+show/infra/config/supported-branches.json'
 
   - alert: NoSuchCQTryjobForSupportedBranch
     expr: cq_cfg_tryjob_exists == 0
@@ -520,7 +520,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.branch }}'
-      description: 'The commit queue config for supported branch {{ $labels.branch }} in {{ $labels.repo }} references unknown job {{ $labels.tryjob }}. Either the job needs to be removed or renamed in {{ $labels.repo }}/+/infra/config/commit-queue.cfg or the job needs to be added to {{ $labels.repo }}/+/{{ $labels.branch}}/infra/bots/tasks.json'
+      description: 'The commit queue config for supported branch {{ $labels.branch }} in {{ $labels.repo }} references unknown job {{ $labels.tryjob }}. Either the job needs to be removed or renamed in {{ $labels.repo }}/+show/infra/config/commit-queue.cfg or the job needs to be added to {{ $labels.repo }}/+show/{{ $labels.branch}}/infra/bots/tasks.json'
 
   - alert: NoBotsExistForTryjobOnSupportedBranch
     expr: cq_cfg_bot_exists_for_tryjob == 0
@@ -529,7 +529,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.branch }}'
-      description: 'There are no bots which can run the tasks for {{ $labels.tryjob }} on supported branch {{ $labels.branch }} in {{ $labels.repo }}.  Either the dimensions for the tasks used by the job need to be updated in {{ $labels.repo }}/+/{{ $labels.branch}}/infra/bots/tasks.json or bots need to be added which can run the tasks. See the logs for details: https://console.cloud.google.com/logs/viewer?project={{ $labels.project }}&minLogLevel=500&resource=container&logName=projects%2F{{ $labels.project }}%2Flogs%2F{{ $labels.app }}'
+      description: 'There are no bots which can run the tasks for {{ $labels.tryjob }} on supported branch {{ $labels.branch }} in {{ $labels.repo }}.  Either the dimensions for the tasks used by the job need to be updated in {{ $labels.repo }}/+show/{{ $labels.branch}}/infra/bots/tasks.json or bots need to be added which can run the tasks. See the logs for details: https://console.cloud.google.com/logs/viewer?project={{ $labels.project }}&minLogLevel=500&resource=container&logName=projects%2F{{ $labels.project }}%2Flogs%2F{{ $labels.app }}'
 
 # K8s Checker
   - alert: K8sCheckerLiveness
@@ -559,7 +559,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.yaml }}'
-      description: 'There is a dirty committed image {{ $labels.committedImage }} in {{ $labels.repo }}/+/refs/heads/master/{{ $labels.yaml }}'
+      description: 'There is a dirty committed image {{ $labels.committedImage }} in {{ $labels.repo }}/+show/refs/heads/master/{{ $labels.yaml }}'
 
   - alert: DirtyRunningK8sConfig
     expr: dirty_config_metric == 1
@@ -569,7 +569,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.container }}'
-      description: 'For app {{ $labels.exported_app }} and container {{ $labels.container }} the running image differs from the image in {{ $labels.repo }}/+/refs/heads/master/{{ $labels.yaml }} : {{ $labels.liveImage }} != {{ $labels.committedImage }}'
+      description: 'For app {{ $labels.exported_app }} and container {{ $labels.container }} the running image differs from the image in {{ $labels.repo }}/+show/refs/heads/master/{{ $labels.yaml }} : {{ $labels.liveImage }} != {{ $labels.committedImage }}'
 
   - alert: StaleK8sImage
     expr: stale_image_metric > 30
@@ -589,7 +589,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_app }}'
-      description: 'The app {{ $labels.exported_app }} is checked into {{ $labels.repo }}/+/refs/heads/master/{{ $labels.yaml }} but is not running in {{ $labels.project }}'
+      description: 'The app {{ $labels.exported_app }} is checked into {{ $labels.repo }}/+show/refs/heads/master/{{ $labels.yaml }} but is not running in {{ $labels.project }}'
 
   - alert: CheckedInK8sContainerNotRunning
     expr: container_running_metric == 0
@@ -599,7 +599,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.container }}'
-      description: 'The container {{ $labels.container }} of app {{ $labels.exported_app }} is checked into {{ $labels.repo }}/+/refs/heads/master/{{ $labels.yaml }} but is not running in {{ $labels.project }}'
+      description: 'The container {{ $labels.container }} of app {{ $labels.exported_app }} is checked into {{ $labels.repo }}/+show/refs/heads/master/{{ $labels.yaml }} but is not running in {{ $labels.project }}'
 
   - alert: RunningK8sAppNotCheckedIn
     expr: running_app_has_config_metric == 0
@@ -630,7 +630,7 @@
       owner: borenet@google.com
     annotations:
       abbr: '{{ $labels.repo }}'
-      description: 'gitsync has failed to update {{ $labels.repo }} for the last 5 minutes. Check out pod {{ $labels.statefulset_kubernetes_io_pod_name }} in project {{ $labels.project }}. https://skia.googlesource.com/buildbot/+/refs/heads/master/gitsync/PROD.md#GitSyncStalled'
+      description: 'gitsync has failed to update {{ $labels.repo }} for the last 5 minutes. Check out pod {{ $labels.statefulset_kubernetes_io_pod_name }} in project {{ $labels.project }}. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/gitsync/PROD.md#GitSyncStalled'
 
   - alert: GitSyncErrorRate
     expr: rate(num_log_lines{level="ERROR",app=~"gitsync.*"}[5m]) > 0.005
@@ -641,7 +641,7 @@
     annotations:
       abbr: '{{ $labels.app }}'
       description: 'The error rate for {{ $labels.app }} is too high.
-      https://console.cloud.google.com/logs/viewer?project={{ $labels.project }}&minLogLevel=500&resource=container&logName=projects%2F{{ $labels.project }}%2Flogs%2F{{ $labels.app }} https://skia.googlesource.com/buildbot/+/refs/heads/master/gitsync/PROD.md#GitSyncErrorRate'
+      https://console.cloud.google.com/logs/viewer?project={{ $labels.project }}&minLogLevel=500&resource=container&logName=projects%2F{{ $labels.project }}%2Flogs%2F{{ $labels.app }} https://skia.googlesource.com/buildbot/+doc/refs/heads/master/gitsync/PROD.md#GitSyncErrorRate'
 
 # Gold Alerts
   - alert: GoldIgnoreMonitoring
@@ -652,7 +652,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: '{{ $labels.app }} has not checked for expired ignore rules in a while. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldignoremonitoring'
+      description: '{{ $labels.app }} has not checked for expired ignore rules in a while. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldignoremonitoring'
 
   - alert: GoldPollingIngestionStalled
     expr: liveness_gold_bt_s{metric="since-last-run"} > 150*60
@@ -662,7 +662,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: '{{ $labels.app }} has not been able to poll the bucket for missed files to ingest for a while. See https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldpollingingestionstalled'
+      description: '{{ $labels.app }} has not been able to poll the bucket for missed files to ingest for a while. See https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldpollingingestionstalled'
 
   - alert: GoldStreamingIngestionStalled
     expr: liveness_gold_bt_s{metric="last-successful-process"} > 24*60*60
@@ -672,7 +672,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: '{{ $labels.app }} has not successfully ingested files via streaming in a long time. See https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldstreamingingestionstalled'
+      description: '{{ $labels.app }} has not successfully ingested files via streaming in a long time. See https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldstreamingingestionstalled'
 
   - alert: GoldCommitTooOldWallTime
     expr: gold_last_commit_age_s{type="wall_time"} > 24*60*60
@@ -682,7 +682,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'It has been at least 24 hours since the last commit made it into Gold for {{ $labels.app }}. Some process might have hung, or perhaps that repo simply has not seen a commit in that period. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldcommittoooldwalltime'
+      description: 'It has been at least 24 hours since the last commit made it into Gold for {{ $labels.app }}. Some process might have hung, or perhaps that repo simply has not seen a commit in that period. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldcommittoooldwalltime'
 
   - alert: GoldCommitTooOldNewerCommit
     expr: gold_last_commit_age_s{type="with_new_commit"} > 60*60
@@ -692,7 +692,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'It has been at least 1 hour since a new commit landed in {{ $labels.app }}, and Gold still has not picked it up. Some process might have hung. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldcommittoooldnewercommit'
+      description: 'It has been at least 1 hour since a new commit landed in {{ $labels.app }}, and Gold still has not picked it up. Some process might have hung. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldcommittoooldnewercommit'
 
   - alert: GoldStatusStalled
     expr: liveness_gold_status_monitoring_s > 20*60
@@ -702,7 +702,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'It has been at least 20 minutes since the Gold status was re-computed for {{ $labels.app }}. Some process might have hung. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldstatusstalled'
+      description: 'It has been at least 20 minutes since the Gold status was re-computed for {{ $labels.app }}. Some process might have hung. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldstatusstalled'
 
   - alert: GoldExpectationsStale
     expr: stopped_expstore_shards > 0
@@ -712,7 +712,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'Shards of QuerySnapshotIterators have stopped. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldexpectationsstale'
+      description: 'Shards of QuerySnapshotIterators have stopped. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldexpectationsstale'
 
   - alert: GoldCorruptTryJobParamMaps
     expr: bad_param_maps > 0
@@ -722,7 +722,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'TryJobResults may be missing Params. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldcorrupttryjobdata'
+      description: 'TryJobResults may be missing Params. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldcorrupttryjobdata'
 
   - alert: GoldTryJobResultsIncompleteData
     expr: bad_results > 0
@@ -732,7 +732,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'There are a nonzero amount of TryJobResults that were missing Params. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldcorrupttryjobdata'
+      description: 'There are a nonzero amount of TryJobResults that were missing Params. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldcorrupttryjobdata'
 
   - alert: GoldNoDataAtHead
     expr: gold_empty_commits_at_head{appgroup!~"gold-chrome.*"} >= 20
@@ -742,7 +742,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'The most recent 20 commits for {{ $labels.app }} have no data. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldnodataathead'
+      description: 'The most recent 20 commits for {{ $labels.app }} have no data. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldnodataathead'
 
   - alert: GoldTooManyCLs
     expr: gold_num_recent_open_cls{appgroup!~"gold-chrome.*"} >= 50
@@ -752,7 +752,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'There are more than 50 recent, open CLs with tryjob data for {{ $labels.app }}. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldtoomanycls'
+      description: 'There are more than 50 recent, open CLs with tryjob data for {{ $labels.app }}. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldtoomanycls'
 
   - alert: GoldTooManyCLsChrome
     expr: gold_num_recent_open_cls{appgroup=~"gold-chrome.*"} >= 200
@@ -762,7 +762,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'There are more than 200 recent, open CLs with tryjob data for {{ $labels.app }}. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldtoomanycls'
+      description: 'There are more than 200 recent, open CLs with tryjob data for {{ $labels.app }}. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldtoomanycls'
 
   - alert: GoldCommentingStalled
     expr: liveness_gold_comment_monitoring_s > 20*60
@@ -772,7 +772,7 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'It has been at least 20 minutes since the Gold went through all open CLs in for {{ $labels.app }} to maybe comment them on. Some process might have hung. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldcommentingstalled'
+      description: 'It has been at least 20 minutes since the Gold went through all open CLs in for {{ $labels.app }} to maybe comment them on. Some process might have hung. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldcommentingstalled'
 
 
 # Velero Backup
diff --git a/promk/prometheus/alerts_public.yml b/promk/prometheus/alerts_public.yml
index 876e7d1..9f85f15 100644
--- a/promk/prometheus/alerts_public.yml
+++ b/promk/prometheus/alerts_public.yml
@@ -338,7 +338,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chromium-swarm.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chromium-swarm.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # External bots except RPis.
   - alert: DiskSpaceLow
@@ -349,7 +349,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chromium-swarm.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chromium-swarm.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # Dev RPis.
   - alert: DiskSpaceLow
@@ -360,7 +360,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chromium-swarm-dev.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chromium-swarm-dev.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # Dev bots except RPis.
   - alert: DiskSpaceLow
@@ -371,7 +371,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chromium-swarm-dev.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chromium-swarm-dev.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # Internal RPis.
   - alert: DiskSpaceLow
@@ -382,7 +382,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chrome-swarming.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Free space has fallen below 100MB on {{ $labels.exported_instance }} drive {{ $labels.df }}. https://chrome-swarming.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # Internal bots except RPis.
   - alert: DiskSpaceLow
@@ -393,7 +393,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chrome-swarming.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Low Root Disk Space on {{ $labels.exported_instance }}. https://chrome-swarming.appspot.com/bot?id={{ $labels.exported_instance }}  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # GCE machines (other than bots), root disk.
   - alert: DiskSpaceLow
@@ -404,7 +404,7 @@
       severity: warning
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Low Root Disk Space on {{ $labels.exported_instance }}.  https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Low Root Disk Space on {{ $labels.exported_instance }}.  https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 # GCE bots, /b (aka /mnt/pd0)
   - alert: DiskSpaceLow
@@ -415,7 +415,7 @@
       severity: critical
     annotations:
       abbr: '{{ $labels.exported_instance }}'
-      description: 'Low Disk Space on /b for {{ $labels.exported_instance }}. https://skia.googlesource.com/buildbot/+/master/docs/PROD.md#diskspacelow'
+      description: 'Low Disk Space on /b for {{ $labels.exported_instance }}. https://skia.googlesource.com/buildbot/+doc/master/docs/PROD.md#diskspacelow'
 
 
 # Envoy
@@ -428,7 +428,7 @@
     annotations:
       abbr: '{{ $labels.envoy_cluster_name }}'
       description: 'Envoy Cluster Bind Error for {{ $labels.envoy_cluster_name
-      }}. https://skia.googlesource.com/buildbot/+/master/skfe/PROD.md#cluster_bind_error'
+      }}. https://skia.googlesource.com/buildbot/+doc/master/skfe/PROD.md#cluster_bind_error'
 
   - alert: EnvoyRuntimeLoadError
     expr: envoy_runtime_load_error > 0
@@ -468,4 +468,4 @@
       owner: kjlubick@google.com
     annotations:
       abbr: '{{ $labels.app }}'
-      description: 'The most recent 100 commits for {{ $labels.app }} have no data. https://skia.googlesource.com/buildbot/+/refs/heads/master/golden/docs/PROD.md#goldnodataathead'
+      description: 'The most recent 100 commits for {{ $labels.app }} have no data. https://skia.googlesource.com/buildbot/+doc/refs/heads/master/golden/docs/PROD.md#goldnodataathead'
diff --git a/push/modules/push-selection-sk/push-selection-sk.js b/push/modules/push-selection-sk/push-selection-sk.js
index ffb9ccb..25e642e 100644
--- a/push/modules/push-selection-sk/push-selection-sk.js
+++ b/push/modules/push-selection-sk/push-selection-sk.js
@@ -11,7 +11,7 @@
 import { diffDate } from 'common-sk/modules/human'
 
 function linkToCommit(hash) {
-  return 'https://skia.googlesource.com/buildbot/+/' + hash;
+  return 'https://skia.googlesource.com/buildbot/+show/' + hash;
 }
 
 function shorten(s) {
diff --git a/res/imp/commit.html b/res/imp/commit.html
index e14be0d..26cd06a 100644
--- a/res/imp/commit.html
+++ b/res/imp/commit.html
@@ -138,7 +138,7 @@
       if (repo.indexOf('github.com') !== -1) {
         return repo + '/commit/' + c.hash;
       } else {
-        return repo + '/+/' + c.hash;
+        return repo + '/+show/' + c.hash;
       }
     },
 
diff --git a/res/imp/version-sk.html b/res/imp/version-sk.html
index 372d9ca..3977a91 100644
--- a/res/imp/version-sk.html
+++ b/res/imp/version-sk.html
@@ -98,7 +98,7 @@
       },
 
       _commitUrl: function(commit) {
-        return "https://skia.googlesource.com/buildbot/+/" + commit;
+        return "https://skia.googlesource.com/buildbot/+show/" + commit;
       },
 
       _getVersion: function() {
diff --git a/scripts/run_on_swarming_bots/apt-full-upgrade.py b/scripts/run_on_swarming_bots/apt-full-upgrade.py
index e0de803..89903e5 100644
--- a/scripts/run_on_swarming_bots/apt-full-upgrade.py
+++ b/scripts/run_on_swarming_bots/apt-full-upgrade.py
@@ -12,7 +12,7 @@
 import subprocess
 
 # Copied from
-# https://skia.googlesource.com/buildbot/+/d864d83d992f2968cf4d229cebf2d3104ee11ebf/go/gce/swarming/base-image/setup-script.sh#20
+# https://skia.googlesource.com/buildbot/+show/d864d83d992f2968cf4d229cebf2d3104ee11ebf/go/gce/swarming/base-image/setup-script.sh#20
 base_cmd = ['sudo', 'DEBIAN_FRONTEND=noninteractive', 'apt',
             '-o', 'quiet=2', '--assume-yes',
             '-o', 'Dpkg::Options::=--force-confdef',
diff --git a/scripts/run_on_swarming_bots/delete_cached_repos.py b/scripts/run_on_swarming_bots/delete_cached_repos.py
index 9c67fda..a62caf6 100644
--- a/scripts/run_on_swarming_bots/delete_cached_repos.py
+++ b/scripts/run_on_swarming_bots/delete_cached_repos.py
@@ -21,7 +21,7 @@
   """Recursively removes a directory, even if it's marked read-only.
 
   This was copied from:
-  https://chromium.googlesource.com/chromium/tools/build/+/f3e7ff03613cd59a463b2ccc49773c3813e77404/scripts/common/chromium_utils.py#491
+  https://chromium.googlesource.com/chromium/tools/build/+show/f3e7ff03613cd59a463b2ccc49773c3813e77404/scripts/common/chromium_utils.py#491
 
   Remove the directory located at *path, if it exists.
 
diff --git a/scripts/run_on_swarming_bots/install_docker.py b/scripts/run_on_swarming_bots/install_docker.py
index 09efa92..4155e2a 100644
--- a/scripts/run_on_swarming_bots/install_docker.py
+++ b/scripts/run_on_swarming_bots/install_docker.py
@@ -22,7 +22,7 @@
                    'docker-credential-gcr/1.5.0/docker-credential-gcr')
 
 # Copied from
-# https://skia.googlesource.com/buildbot/+/d864d83d992f2968cf4d229cebf2d3104ee11ebf/go/gce/swarming/base-image/setup-script.sh#20
+# https://skia.googlesource.com/buildbot/+show/d864d83d992f2968cf4d229cebf2d3104ee11ebf/go/gce/swarming/base-image/setup-script.sh#20
 base_cmd = ['sudo', 'DEBIAN_FRONTEND=noninteractive', 'apt',
             '-o', 'quiet=2', '--assume-yes',
             '-o', 'Dpkg::Options::=--force-confdef',
diff --git a/sk8s/go/bot_config/server/server.go b/sk8s/go/bot_config/server/server.go
index 862d662..5ee27ab 100644
--- a/sk8s/go/bot_config/server/server.go
+++ b/sk8s/go/bot_config/server/server.go
@@ -69,7 +69,7 @@
 // The input is a JSON dictionary via POST that is returned from os_utilities.get_state(), and will
 // emit an updated JSON dictionary on return.
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/swarming_bot/// config/bot_config.py
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+show/master/appengine/swarming/swarming_bot/// config/bot_config.py
 func (s *Server) getState(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/json")
 	s.getStateRequests.Inc(1)
@@ -109,7 +109,7 @@
 //
 // Will emit a JSON dictionary on GET with the settings.
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/swarming_bot/// config/bot_config.py
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+show/master/appengine/swarming/swarming_bot/// config/bot_config.py
 func (s *Server) getSettings(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/json")
 	s.getSettingsRequests.Inc(1)
@@ -133,7 +133,7 @@
 // os_utilities.get_dimensions(). This command will emit an updated JSON
 // dictionary in the response.
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/swarming_bot/config/bot_config.py
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+show/master/appengine/swarming/swarming_bot/config/bot_config.py
 func (s *Server) getDimensions(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/json")
 	s.getDimensionsRequests.Inc(1)
@@ -157,7 +157,7 @@
 //
 // No other data is passed with this call.
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/swarming_bot/config/bot_config.py
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+show/master/appengine/swarming/swarming_bot/config/bot_config.py
 func (s *Server) onBeforeTask(w http.ResponseWriter, r *http.Request) {
 	s.machine.SetIsRunningSwarmingTask(true)
 	s.onBeforeTaskSuccess.Inc(1)
@@ -167,7 +167,7 @@
 //
 // No other data is passed with this call.
 //
-// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/swarming_bot/config/bot_config.py
+// https://chromium.googlesource.com/infra/luci/luci-py.git/+show/master/appengine/swarming/swarming_bot/config/bot_config.py
 func (s *Server) onAfterTask(w http.ResponseWriter, r *http.Request) {
 	s.machine.SetIsRunningSwarmingTask(false)
 	s.onAfterTaskSuccess.Inc(1)
diff --git a/sk8s/go/bot_config/swarming/swarming.go b/sk8s/go/bot_config/swarming/swarming.go
index 3ca38c1..212041a 100644
--- a/sk8s/go/bot_config/swarming/swarming.go
+++ b/sk8s/go/bot_config/swarming/swarming.go
@@ -43,7 +43,7 @@
 	debugSwarmingServer    = "https://chromium-swarm-dev.appspot.com"
 
 	// SwarmingBotIDEnvVar is the swarming bot id environment variable name. See
-	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Magic-Values.md#task-runtime-environment-variables
+	// https://chromium.googlesource.com/infra/luci/luci-py.git/+doc/master/appengine/swarming/doc/Magic-Values.md#task-runtime-environment-variables
 	SwarmingBotIDEnvVar = "SWARMING_BOT_ID"
 
 	// KubernetesImageEnvVar is the environment variable that contains the
diff --git a/skolo/raspberry-pi/start_swarming b/skolo/raspberry-pi/start_swarming
index f95f455..4a76033 100644
--- a/skolo/raspberry-pi/start_swarming
+++ b/skolo/raspberry-pi/start_swarming
@@ -26,7 +26,7 @@
   echo "Bootstrapping $swarming, expect a reboot"
   # The following is based on this Ansible script, which was not used here
   # because it would've complicated the setup flow a bit:
-  # https://skia.googlesource.com/buildbot/+/master/skolo/common/ansible/bootstrap-swarming.yml
+  # https://skia.googlesource.com/buildbot/+show/master/skolo/common/ansible/bootstrap-swarming.yml
   script=$(cat << EOF
 import json
 import urllib2
diff --git a/skottie/modules/skottie-drive-sk/skottie-drive-sk.js b/skottie/modules/skottie-drive-sk/skottie-drive-sk.js
index 2ba18f0..083ba3d 100644
--- a/skottie/modules/skottie-drive-sk/skottie-drive-sk.js
+++ b/skottie/modules/skottie-drive-sk/skottie-drive-sk.js
@@ -71,7 +71,7 @@
 
 const template = (ele) => html`
 <header>
-  <h2>Skia Lottie Drive Previewer</h2><span><a href='https://skia.googlesource.com/skia/+/${SKIA_VERSION}'>${SKIA_VERSION.slice(0, 7)}</a></span>
+  <h2>Skia Lottie Drive Previewer</h2><span><a href='https://skia.googlesource.com/skia/+show/${SKIA_VERSION}'>${SKIA_VERSION.slice(0, 7)}</a></span>
 </header>
 <main>
   ${players(ele)}
diff --git a/skottie/modules/skottie-sk/skottie-sk.js b/skottie/modules/skottie-sk/skottie-sk.js
index 589e2a9..a232ec2 100644
--- a/skottie/modules/skottie-sk/skottie-sk.js
+++ b/skottie/modules/skottie-sk/skottie-sk.js
@@ -177,7 +177,7 @@
 <header>
   <h2>Skottie</h2>
   <span>
-    <a href='https://skia.googlesource.com/skia/+/${SKIA_VERSION}'>
+    <a href='https://skia.googlesource.com/skia/+show/${SKIA_VERSION}'>
       ${SKIA_VERSION.slice(0, 7)}
     </a>
   </span>
diff --git a/status/go/status/main.go b/status/go/status/main.go
index 57b2441..9fbc491 100644
--- a/status/go/status/main.go
+++ b/status/go/status/main.go
@@ -32,6 +32,7 @@
 	"go.skia.org/infra/go/common"
 	"go.skia.org/infra/go/ds"
 	"go.skia.org/infra/go/git/repograph"
+	"go.skia.org/infra/go/gitiles"
 	"go.skia.org/infra/go/gitstore/bt_gitstore"
 	"go.skia.org/infra/go/httputils"
 	"go.skia.org/infra/go/login"
@@ -545,7 +546,7 @@
 
 	d := commitsTemplateData{
 		Repo:     repoName,
-		RepoBase: fmt.Sprintf("%s/+/", repoUrl),
+		RepoBase: fmt.Sprintf(gitiles.CommitURL, repoUrl, ""),
 		Repos:    getRepoNames(),
 		Title:    fmt.Sprintf("Status: %s", repoName),
 	}
diff --git a/status/res/imp/README.md b/status/res/imp/README.md
index 772cf2f..9855a13 100644
--- a/status/res/imp/README.md
+++ b/status/res/imp/README.md
@@ -28,4 +28,4 @@
 An excellent primer on D3 is [Interactive Data Visualization for the Web](http://chimera.labs.oreilly.com/books/1230000000345/index.html) by Scott Murray.
 
 The elements were previously written in Polymer 0.5.
-Many of these were deleted after commit [9b8bb9c04](https://skia.googlesource.com/buildbot/+/9b8bb9c044470b039fb5ee8e82cb106d16492829).
+Many of these were deleted after commit [9b8bb9c04](https://skia.googlesource.com/buildbot/+show/9b8bb9c044470b039fb5ee8e82cb106d16492829).
diff --git a/status/res/imp/status-sk-demo.html b/status/res/imp/status-sk-demo.html
index 2a10a7a..f27369d 100644
--- a/status/res/imp/status-sk-demo.html
+++ b/status/res/imp/status-sk-demo.html
@@ -135,7 +135,7 @@
 <body>
   <status-sk
       repo="skia"
-      repo_base="https://skia.googlesource.com/skia/+/">
+      repo_base="https://skia.googlesource.com/skia/+show/">
   </status-sk>
 </body>
 </html>
diff --git a/task_scheduler/go/db/cache/cache.go b/task_scheduler/go/db/cache/cache.go
index 9f3b7fe..c53c76d 100644
--- a/task_scheduler/go/db/cache/cache.go
+++ b/task_scheduler/go/db/cache/cache.go
@@ -344,7 +344,7 @@
 		}
 	} else {
 		// If profiling indicates this code is slow or GCs too much, see
-		// https://skia.googlesource.com/buildbot/+/0cf94832dd57f0e7b5b9f1b28546181d15dbbbc6
+		// https://skia.googlesource.com/buildbot/+show/0cf94832dd57f0e7b5b9f1b28546181d15dbbbc6
 		// for a different implementation.
 		// Most common case is that the new task should be inserted at the end.
 		if len(c.tasksByTime) == 0 {
@@ -711,7 +711,7 @@
 		}
 	} else {
 		// If profiling indicates this code is slow or GCs too much, see
-		// https://skia.googlesource.com/buildbot/+/0cf94832dd57f0e7b5b9f1b28546181d15dbbbc6
+		// https://skia.googlesource.com/buildbot/+show/0cf94832dd57f0e7b5b9f1b28546181d15dbbbc6
 		// for a different implementation.
 		// Most common case is that the new job should be inserted at the end.
 		if len(c.jobsByTime) == 0 {
diff --git a/task_scheduler/go/scheduling/busy_bots.go b/task_scheduler/go/scheduling/busy_bots.go
index 81b396e..a3238b3 100644
--- a/task_scheduler/go/scheduling/busy_bots.go
+++ b/task_scheduler/go/scheduling/busy_bots.go
@@ -29,7 +29,7 @@
 
 var (
 	// dimensionWhitelist includes all dimensions used in
-	// https://skia.googlesource.com/skia/+/42974b73cd6f3515af69c553aac8dd15e3fc1927/infra/bots/gen_tasks.go
+	// https://skia.googlesource.com/skia/+show/42974b73cd6f3515af69c553aac8dd15e3fc1927/infra/bots/gen_tasks.go
 	// (except for "image" which has a TODO to remove).
 	dimensionWhitelist = []string{
 		"cpu",
diff --git a/task_scheduler/go/scheduling/task_scheduler_test.go b/task_scheduler/go/scheduling/task_scheduler_test.go
index 29f72fa..75bb04f 100644
--- a/task_scheduler/go/scheduling/task_scheduler_test.go
+++ b/task_scheduler/go/scheduling/task_scheduler_test.go
@@ -24,6 +24,7 @@
 	"go.skia.org/infra/go/gcs/mem_gcsclient"
 	"go.skia.org/infra/go/git/repograph"
 	"go.skia.org/infra/go/git/testutils/mem_git"
+	"go.skia.org/infra/go/gitiles"
 	"go.skia.org/infra/go/gitstore"
 	"go.skia.org/infra/go/gitstore/mem_gitstore"
 	"go.skia.org/infra/go/isolate"
@@ -3494,7 +3495,7 @@
 			"sk_dim_pool:Skia",
 			"sk_retry_of:",
 			fmt.Sprintf("source_revision:%s", commit),
-			fmt.Sprintf("source_repo:%s/+/%%s", rs1.Repo),
+			"source_repo:" + fmt.Sprintf(gitiles.CommitURL, rs1.Repo, "%s"),
 			fmt.Sprintf("sk_repo:%s", rs1.Repo),
 			fmt.Sprintf("sk_revision:%s", commit),
 			"sk_forced_job_id:",
@@ -3651,7 +3652,7 @@
 		fmt.Sprintf("sk_dim_pool:%s", badPool),
 		"sk_retry_of:",
 		fmt.Sprintf("source_revision:%s", badCommit),
-		fmt.Sprintf("source_repo:%s/+/%%s", rs1.Repo),
+		"source_repo:" + fmt.Sprintf(gitiles.CommitURL, rs1.Repo, "%s"),
 		fmt.Sprintf("sk_repo:%s", rs1.Repo),
 		fmt.Sprintf("sk_revision:%s", badCommit),
 		"sk_forced_job_id:",
@@ -3761,7 +3762,7 @@
 			"sk_dim_pool:Skia",
 			"sk_retry_of:",
 			fmt.Sprintf("source_revision:%s", commit),
-			fmt.Sprintf("source_repo:%s/+/%%s", rs1.Repo),
+			"source_repo:" + fmt.Sprintf(gitiles.CommitURL, rs1.Repo, "%s"),
 			fmt.Sprintf("sk_repo:%s", rs1.Repo),
 			fmt.Sprintf("sk_revision:%s", commit),
 			"sk_forced_job_id:",
@@ -3818,7 +3819,7 @@
 			"sk_dim_pool:Skia",
 			"sk_retry_of:",
 			fmt.Sprintf("source_revision:%s", commit),
-			fmt.Sprintf("source_repo:%s/+/%%s", rs1.Repo),
+			"source_repo:" + fmt.Sprintf(gitiles.CommitURL, rs1.Repo, "%s"),
 			fmt.Sprintf("sk_repo:%s", rs1.Repo),
 			fmt.Sprintf("sk_revision:%s", commit),
 			"sk_forced_job_id:",
diff --git a/task_scheduler/go/types/task.go b/task_scheduler/go/types/task.go
index 2400fbd..5b7684c 100644
--- a/task_scheduler/go/types/task.go
+++ b/task_scheduler/go/types/task.go
@@ -11,6 +11,7 @@
 
 	swarming_api "go.chromium.org/luci/common/api/swarming/swarming/v1"
 	"go.skia.org/infra/go/common"
+	"go.skia.org/infra/go/gitiles"
 	"go.skia.org/infra/go/sklog"
 	"go.skia.org/infra/go/swarming"
 	"go.skia.org/infra/go/util"
@@ -469,7 +470,7 @@
 	tags[SWARMING_TAG_RETRY_OF] = retryOf
 	tags[SWARMING_TAG_REVISION] = rs.Revision
 	tags[SWARMING_TAG_SOURCE_REVISION] = rs.Revision
-	tags[SWARMING_TAG_SOURCE_REPO] = rs.Repo + "/+/%s"
+	tags[SWARMING_TAG_SOURCE_REPO] = fmt.Sprintf(gitiles.CommitURL, rs.Repo, "%s")
 	if rs.IsTryJob() {
 		tags[SWARMING_TAG_SERVER] = rs.Server
 		tags[SWARMING_TAG_ISSUE] = rs.Issue
diff --git a/task_scheduler/res/imp/job-search-sk.html b/task_scheduler/res/imp/job-search-sk.html
index b37dd85..f3835a2 100644
--- a/task_scheduler/res/imp/job-search-sk.html
+++ b/task_scheduler/res/imp/job-search-sk.html
@@ -267,7 +267,7 @@
 
       _revisionLink: function(job) {
         // This assumes we use Gitiles, but that's a safe assumption for now.
-        return job.repo + "/+/" + job.revision;
+        return job.repo + "/+show/" + job.revision;
       },
 
       _statusText: function(job) {
diff --git a/task_scheduler/res/imp/job-sk.html b/task_scheduler/res/imp/job-sk.html
index 321ed26..c40b062 100644
--- a/task_scheduler/res/imp/job-sk.html
+++ b/task_scheduler/res/imp/job-sk.html
@@ -230,7 +230,7 @@
 
       _computeRevisionLink: function(job) {
         // This assumes we use Gitiles, but that's a safe assumption for now.
-        return job.repo + "/+/" + job.revision;
+        return job.repo + "/+show/" + job.revision;
       },
 
       _computeSearchLink: function(job, ...fields) {
diff --git a/task_scheduler/res/imp/task-sk.html b/task_scheduler/res/imp/task-sk.html
index 1e4b5b9..41b76f0 100644
--- a/task_scheduler/res/imp/task-sk.html
+++ b/task_scheduler/res/imp/task-sk.html
@@ -210,7 +210,7 @@
 
       _computeRevisionLink: function(task) {
         // This assumes we use Gitiles, but that's a safe assumption for now.
-        return task.repo + "/+/" + task.revision;
+        return task.repo + "/+show/" + task.revision;
       },
 
       _computeStatusText: function(task) {