Fix git-gerrit-pull for new gitHub design

Change-Id: Ice477a2e488afcc9e56b395a90db9424cc591625
diff --git a/bin/git_gerrit_pull b/bin/git_gerrit_pull
index c361e49..645507b 100755
--- a/bin/git_gerrit_pull
+++ b/bin/git_gerrit_pull
@@ -2,8 +2,12 @@
 use strict;
 use warnings;
 use Mojo::File 'tempfile';
+use Mojo::JSON qw'decode_json encode_json';
+use Mojo::ByteStream 'b';
 use Mojo::UserAgent;
 
+$ENV{MOJO_NO_JSON_XS} = 0;
+
 our @ARGV;
 
 my $JAVA8_HOME  = '/usr/lib/jvm/java-1.8.0-openjdk-amd64';
@@ -56,7 +60,31 @@
 
 my $project = $1;
 my $pr = $2;
-my $branch = $ua->get($url)->res->dom->at('.commit-ref.head-ref')->all_text;
+my $pr_html = $ua->get($url)->res->dom;
+my $branch = $pr_html->at('.commit-ref.head-ref');
+
+# Legacy path
+if ($branch) {
+  $branch = $branch->all_text;
+}
+
+# JSON path
+elsif (my $json = $pr_html->at('script[data-target=react-app.embeddedData]')) {
+
+  $json = decode_json(b($json->all_text)->encode->to_string);
+
+  $branch = $json
+    ->{payload}
+    ->{pullRequestsLayoutRoute}
+    ->{pullRequest}
+    ->{headBranch};
+
+};
+
+unless ($branch) {
+  warn 'Unable to retrieve branch name';
+  exit;
+};
 
 _check('git fetch github pull/' . $pr . '/head:' . $branch);
 _check('git checkout ' . $branch);