Index: trychange.py |
diff --git a/trychange.py b/trychange.py |
index c04e32915e2c7de82aae9a174d5162688cccd78f..9b1232c465a29473c32bf740ffef312e50385d61 100755 |
--- a/trychange.py |
+++ b/trychange.py |
@@ -14,6 +14,7 @@ import logging |
import optparse |
import os |
import posixpath |
+import re |
import shutil |
import sys |
import tempfile |
@@ -174,10 +175,20 @@ class SVN(SCM): |
if not self.files: |
previous_cwd = os.getcwd() |
os.chdir(self.checkout_root) |
+ |
excluded = ['!', '?', 'X', ' ', '~'] |
+ def Excluded(f): |
+ if f[0][0] in excluded: |
+ return True |
+ for r in self.options.exclude: |
+ if re.search(r, f[1]): |
+ logging.info('Ignoring "%s"' % f[1]) |
+ return True |
+ return False |
+ |
self.files = [ |
bradn
2010/01/12 04:39:12
I think the style guide wants the braces tighter:
|
f[1] for f in scm.SVN.CaptureStatus(self.checkout_root) |
- if f[0][0] not in excluded |
+ if not Excluded(f) |
] |
os.chdir(previous_cwd) |
return scm.SVN.GenerateDiff(self.files, self.checkout_root, full_move=True, |
@@ -206,8 +217,20 @@ class GIT(SCM): |
return None |
def GenerateDiff(self): |
- # For now, ignores self.files |
- return scm.GIT.GenerateDiff(self.checkout_root, full_move=True, |
+ if not self.files: |
+ self.files = scm.GIT.GetDifferentFiles(self.checkout_root, |
+ branch=self.diff_against) |
+ |
+ def NotExcluded(f): |
+ for r in self.options.exclude: |
+ if re.search(r, f): |
+ logging.info('Ignoring "%s"' % f) |
+ return False |
+ return True |
+ |
+ self.files = filter(NotExcluded, self.files) |
+ return scm.GIT.GenerateDiff(self.checkout_root, files=self.files, |
+ full_move=True, |
branch=self.diff_against) |
@@ -489,13 +512,16 @@ def TryChange(argv, |
try: |
group.add_option("--webkit", action="append_const", |
const="third_party/WebKit", |
- dest="sub_rep", |
+ dest="PATH", |
help="Shorthand for -s third_party/WebKit") |
except optparse.OptionError: |
# append_const is not supported on 2.4. Too bad. |
pass |
group.add_option("--no_gclient", action="store_true", |
help="Disable automatic search for gclient checkout.") |
+ group.add_option("-E", "--exclude", action="append", |
+ default=['ChangeLog'], metavar='REGEXP', |
+ help="Regexp patterns to exclude files. Default: %default") |
parser.add_option_group(group) |
group = optparse.OptionGroup(parser, "Access the try server by HTTP") |