mojo: Create a basic clipboard.
[chromium-blink-merge.git] / tools / git / mass-rename.py
blob21fbef76b722063d3933ac9eb7b46b6034da91b2
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """
7 mass-rename: update source files (gyp lists, #includes) to reflect
8 a rename. Expects "git diff --cached -M" to list a bunch of renames.
10 To use:
11 1) git mv foo1 bar1; git mv foo2 bar2; etc.
12 2) *without committing*, ./tools/git/mass-rename.py
13 3) look at git diff (without --cached) to see what the damage is
14 """
17 import os
18 import subprocess
19 import sys
22 BASE_DIR = os.path.abspath(os.path.dirname(__file__))
25 def main():
26 popen = subprocess.Popen('git diff --cached --raw -M',
27 shell=True, stdout=subprocess.PIPE)
28 out, _ = popen.communicate()
29 if popen.returncode != 0:
30 return 1
31 for line in out.splitlines():
32 parts = line.split('\t')
33 if len(parts) != 3:
34 print 'Skipping: %s -- not a rename?' % parts
35 continue
36 attrs, fro, to = parts
37 if attrs.split()[4].startswith('R'):
38 subprocess.check_call([
39 sys.executable,
40 os.path.join(BASE_DIR, 'move_source_file.py'),
41 '--already_moved',
42 '--no_error_for_non_source_file',
43 fro, to])
44 else:
45 print 'Skipping: %s -- not a rename?' % fro
46 return 0
49 if __name__ == '__main__':
50 sys.exit(main())