diff --git a/tools-requirements.txt b/tools-requirements.txt index b82f11a5..382a4a03 100644 --- a/tools-requirements.txt +++ b/tools-requirements.txt @@ -2,3 +2,4 @@ GitPython ruamel.yaml requests jinja2 +dirsync diff --git a/tools/sync_doc_repo.py b/tools/sync_doc_repo.py index abdfc79d..46b36357 100644 --- a/tools/sync_doc_repo.py +++ b/tools/sync_doc_repo.py @@ -18,9 +18,9 @@ import argparse import logging import os import pathlib -import shutil import subprocess import warnings +from dirsync import sync from git import Repo from git import SymbolicReference @@ -111,13 +111,21 @@ def process_repositories(args, service): new_branch.set_tracking_branch(remote_ref) new_branch.checkout() - shutil.copytree( - pathlib.Path(copy_from, doc["rst_location"]), - pathlib.Path(copy_to, doc["rst_location"]), - ignore=lambda a, b: ["conf.py"], - dirs_exist_ok=True, + source_path = pathlib.Path(copy_from, doc["rst_location"]) + target_path = pathlib.Path(copy_to, doc["rst_location"]) + sync( + source_path, + target_path, + 'sync', + purge=True, + create=True, + content=True, + ignore=['conf.py'] ) repo_to.index.add([doc["rst_location"]]) + + for obj in repo_to.index.diff(None).iter_change_type('D'): + repo_to.index.remove([obj.b_path]) if len(repo_to.index.diff("HEAD")) == 0: # Nothing to commit logging.debug("No changes.")