in azdev/utilities/git_util.py [0:0]
def filter_by_git_diff(selected_modules, git_source, git_target, git_repo):
if not any([git_source, git_target, git_repo]):
return selected_modules
if not all([git_target, git_repo]):
raise CLIError('usage error: [--src NAME] --tgt NAME --repo PATH')
files_changed = diff_branches(git_repo, git_target, git_source)
mods_changed = summarize_changed_mods(files_changed)
repo_path = str(os.path.abspath(git_repo)).lower()
to_remove = {'mod': [], 'core': [], 'ext': []}
for key in selected_modules:
for name, path in selected_modules[key].items():
path = path.lower()
if path.startswith(repo_path):
if name in mods_changed:
# has changed, so do not filter out
continue
# if not in the repo or has not changed, filter out
to_remove[key].append(name)
# remove the unchanged modules
for key, value in to_remove.items():
for name in value:
selected_modules[key].pop(name)
logger.info('Filtered out: %s', to_remove)
return selected_modules