roll_dep: Avoid large commit messages by providing the log as a link

The majority of chromium projects are on googlesource.com, which can
display a range of commits on the web. Use this feature instead of
dumping logs into the commit message.

Particularly, this avoids creating large commit messages as these logs
sometimes contain upwards of 50 commits.

Review URL: https://codereview.chromium.org/1257233006

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@296184 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/roll_dep.py b/roll_dep.py
index 164bd57..c3c80b1 100755
--- a/roll_dep.py
+++ b/roll_dep.py
@@ -17,6 +17,8 @@
 
 NEED_SHELL = sys.platform.startswith('win')
 
+GITILES_REGEX = r'https?://[^/]*\.googlesource\.com/'
+
 
 class Error(Exception):
   pass
@@ -86,27 +88,26 @@
     raise Error('No revision to roll!')
 
   commit_range = '%s..%s' % (head[:9], master[:9])
+  upstream_url = check_output(
+      ['git', 'config', 'remote.origin.url'], cwd=full_dir).strip()
 
-  logs = check_output(
-      ['git', 'log', commit_range, '--date=short', '--format=%ad %ae %s'],
-      cwd=full_dir).strip()
-  logs = re.sub(r'(?m)^(\d\d\d\d-\d\d-\d\d [^@]+)@[^ ]+( .*)$', r'\1\2', logs)
-  cmd = 'git log %s --date=short --format=\'%%ad %%ae %%s\'' % commit_range
-  reviewer = 'R=%s\n' % ','.join(reviewers) if reviewers else ''
-  bug = 'BUG=%s\n' % bug if bug else ''
+  log_url = None
+  if re.match(GITILES_REGEX, upstream_url):
+    log_url = '%s/+log/%s..%s' % (upstream_url, head, master)
+
+  msg_args = {
+      'deps_dir': deps_dir,
+      'commit_range': commit_range,
+      'log': '%s\n\n' % log_url if log_url else '',
+      'reviewer': 'R=%s\n' % ','.join(reviewers) if reviewers else '',
+      'bug': 'BUG=%s\n' % bug if bug else '',
+  }
   msg = (
-      'Roll %s/ to %s.\n'
+      'Roll %(deps_dir)s %(commit_range)s\n'
       '\n'
-      '$ %s\n'
-      '%s\n\n'
-      '%s'
-      '%s') % (
-          deps_dir,
-          master,
-          cmd,
-          logs,
-          reviewer,
-          bug)
+      '%(log)s'
+      '%(reviewer)s'
+      '%(bug)s' % msg_args)
 
   print('Commit message:')
   print('\n'.join('    ' + i for i in msg.splitlines()))