From db5a0def789d6fc1392358da1456b5247473788c Mon Sep 17 00:00:00 2001 From: "cmp@chromium.org" Date: Mon, 4 Jun 2012 17:17:34 +0000 Subject: [PATCH] Turn on git diff copy detection for git-cl upload. Enable copy detection for git-cl upload. This makes it possible to copy a directory containing many files, add+commit the new path, and then upload a patch to Rietveld that shows the files were copied. In my tests, -C -C was needed to pick up a basic file copy. -C was not enough. I'm not sure why exactly. The output generated in the diff looks like: sh$ git diff -C -C HEAD~1..HEAD diff --git a/slave/Makefile b/slave2/Makefile similarity index 100% copy from slave/Makefile copy to slave2/Makefile ... Review URL: https://chromiumcodereview.appspot.com/10412027 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@140314 0039d316-1c4b-4281-b951-d872f2087c98 --- git_cl.py | 7 +++++-- tests/git_cl_test.py | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/git_cl.py b/git_cl.py index 2c63d7330..d2f4b31f3 100755 --- a/git_cl.py +++ b/git_cl.py @@ -1019,7 +1019,10 @@ def RietveldUpload(options, args, cl): upload_args.extend(['--base_url', remote_url]) try: - issue, patchset = upload.RealMain(['upload'] + upload_args + args) + # upload uses '-C' by default when generating the diff for upload. + # Add another '-C' to trigger --find-copies-harder. + issue, patchset = upload.RealMain(['upload'] + upload_args + args + + ['--', '-C']) except KeyboardInterrupt: sys.exit(1) except: @@ -1112,7 +1115,7 @@ def CMDupload(parser, args): if 'GIT_EXTERNAL_DIFF' in env: del env['GIT_EXTERNAL_DIFF'] subprocess2.call( - ['git', 'diff', '--no-ext-diff', '--stat', '-M'] + args, env=env) + ['git', 'diff', '--no-ext-diff', '--stat', '-C', '-C'] + args, env=env) if settings.GetIsGerrit(): return GerritUpload(options, args, cl) diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py index e0705fad6..c3fdb0754 100755 --- a/tests/git_cl_test.py +++ b/tests/git_cl_test.py @@ -114,7 +114,7 @@ class TestGitCl(TestCase): ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), ((['git', 'config', 'user.email'],), 'me@example.com'), - ((['git', 'diff', '--no-ext-diff', '--stat', '-M', 'master...'],), + ((['git', 'diff', '--no-ext-diff', '--stat', '-C', '-C', 'master...'],), '+dat'), ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 'desc\n'), ] @@ -217,7 +217,7 @@ class TestGitCl(TestCase): '--message', description ] + args + [ '--cc', 'joe@example.com', - 'master...' + 'master...', '--', '-C', ] def _run_reviewer_test( @@ -347,7 +347,7 @@ class TestGitCl(TestCase): ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), ((['git', 'config', 'user.email'],), 'me@example.com'), - ((['git', 'diff', '--no-ext-diff', '--stat', '-M', 'master...'],), + ((['git', 'diff', '--no-ext-diff', '--stat', '-C', '-C', 'master...'],), '+dat'), ]