diff --git a/gclient_scm.py b/gclient_scm.py index 8743f7149..60958b5cc 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -583,13 +583,14 @@ class GitWrapper(SCMWrapper): config = subprocess2.capture( ['git', 'config', '-l'], cwd=args[0].checkout_path).decode('utf-8').strip().splitlines() - if 'diff.ignoresubmodules=all' not in config: - subprocess2.capture(['git', 'config', 'diff.ignoreSubmodules', 'all'], - cwd=args[0].checkout_path).strip() + if 'diff.ignoresubmodules=all' in config: + subprocess2.capture( + ['git', 'config', '--unset', 'diff.ignoreSubmodules'], + cwd=args[0].checkout_path) if 'fetch.recursesubmodules=off' not in config: subprocess2.capture( ['git', 'config', 'fetch.recurseSubmodules', 'off'], - cwd=args[0].checkout_path).strip() + cwd=args[0].checkout_path) return return_val return wrapper diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py index 8a8f91135..dc6dfc0ae 100755 --- a/tests/gclient_scm_test.py +++ b/tests/gclient_scm_test.py @@ -407,16 +407,31 @@ class ManagedGitWrapperTestCase(BaseGitWrapperTestCase): scm = gclient_scm.GitWrapper(self.url, self.root_dir, self.relpath) file_list = [] + scm._Capture(['config', 'diff.ignoreSubmodules', 'all']) + scm.update(options, (), file_list) self.assertEqual(file_list, expected_file_list) self.assertEqual(scm.revinfo(options, (), None), 'a7142dc9f0009350b96a11f372b6ea658592aa95') - self.assertEqual(scm._Capture(['config', '--get', 'diff.ignoreSubmodules']), - 'all') + with self.assertRaises(Exception): + scm._Capture(['config', '--get', 'diff.ignoreSubmodules']) self.assertEqual( scm._Capture(['config', '--get', 'fetch.recurseSubmodules']), 'off') sys.stdout.close() + def testUpdateUpdate_only_unset_ignoresubmodules_all(self): + if not self.enabled: + return + options = self.Options() + scm = gclient_scm.GitWrapper(self.url, self.root_dir, self.relpath) + file_list = [] + scm._Capture(['config', 'diff.ignoreSubmodules', 'none']) + + scm.update(options, (), file_list) + self.assertEqual(scm._Capture(['config', '--get', 'diff.ignoreSubmodules']), + 'none') + sys.stdout.close() + def testUpdateMerge(self): if not self.enabled: return