Loading README.md +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ options: --max-visibility {public,internal,private} maximum visibility of groups and projects in destination group --skip-visibility skip updating the destination group or project visibility (when it exists already) --skip-releases skip synchronizing project releases --exclude EXCLUDE project/group path to exclude from processing (relative to --src-sync-path) --exclude-from EXCLUDE_FROM a file which lists paths to exclude (one per line); incompatible with --exclude Loading gitlab_cp/sync.py +18 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ class Synchronizer: work_dir: Path, max_visibility=GlVisibility.public, skip_visibility=False, skip_releases=False, exclude: Optional[list[str]] = None, include: Optional[list[str]] = None, include_branches: Optional[list[str]] = None, Loading @@ -89,6 +90,7 @@ class Synchronizer: self.work_dir = work_dir self.max_visibility = max_visibility self.skip_visibility = skip_visibility self.skip_releases = skip_releases self.exclude = exclude or [] self.include = include or [] self.include_branches = include_branches or [] Loading Loading @@ -183,6 +185,11 @@ class Synchronizer: src_project: Project, dest_project: Project, ) -> None: if self.skip_releases: # If the flag is enabled, do not synchronize releases print( f" - releases: {AnsiColors.HGRAY}skipped{AnsiColors.RESET}" ) return src_releases = src_project.releases.list(all=True) print(f" - sync {len(src_releases)} releases...") dest_releases = dest_project.releases.list(all=True) Loading Loading @@ -944,6 +951,12 @@ def run() -> None: default=trueish_env_var("SKIP_VISIBILITY"), help="skip updating the destination group or project visibility (when it exists already)", ) parser.add_argument( "--skip-releases", action="store_true", default=trueish_env_var("SKIP_RELEASES"), help="Skip synchronizing project releases", ) parser.add_argument( "--exclude", action="append", Loading Loading @@ -1158,6 +1171,9 @@ def run() -> None: print( f"- skip visi (--skip-visibility) : {AnsiColors.CYAN}{args.skip_visibility}{AnsiColors.RESET}" ) print( f"- skip releases (--skip-releases): {AnsiColors.CYAN}{args.skip_releases}{AnsiColors.RESET}" ) print( f"- exclude (--exclude(-from)) : {AnsiColors.CYAN}{', '.join(exclude_list)}{AnsiColors.RESET}" ) Loading Loading @@ -1231,6 +1247,7 @@ def run() -> None: work_dir, max_visibility=args.max_visibility, skip_visibility=args.skip_visibility, skip_releases=args.skip_releases, exclude=exclude_list, include=include_list, include_branches=args.include_branch, Loading Loading
README.md +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ options: --max-visibility {public,internal,private} maximum visibility of groups and projects in destination group --skip-visibility skip updating the destination group or project visibility (when it exists already) --skip-releases skip synchronizing project releases --exclude EXCLUDE project/group path to exclude from processing (relative to --src-sync-path) --exclude-from EXCLUDE_FROM a file which lists paths to exclude (one per line); incompatible with --exclude Loading
gitlab_cp/sync.py +18 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ class Synchronizer: work_dir: Path, max_visibility=GlVisibility.public, skip_visibility=False, skip_releases=False, exclude: Optional[list[str]] = None, include: Optional[list[str]] = None, include_branches: Optional[list[str]] = None, Loading @@ -89,6 +90,7 @@ class Synchronizer: self.work_dir = work_dir self.max_visibility = max_visibility self.skip_visibility = skip_visibility self.skip_releases = skip_releases self.exclude = exclude or [] self.include = include or [] self.include_branches = include_branches or [] Loading Loading @@ -183,6 +185,11 @@ class Synchronizer: src_project: Project, dest_project: Project, ) -> None: if self.skip_releases: # If the flag is enabled, do not synchronize releases print( f" - releases: {AnsiColors.HGRAY}skipped{AnsiColors.RESET}" ) return src_releases = src_project.releases.list(all=True) print(f" - sync {len(src_releases)} releases...") dest_releases = dest_project.releases.list(all=True) Loading Loading @@ -944,6 +951,12 @@ def run() -> None: default=trueish_env_var("SKIP_VISIBILITY"), help="skip updating the destination group or project visibility (when it exists already)", ) parser.add_argument( "--skip-releases", action="store_true", default=trueish_env_var("SKIP_RELEASES"), help="Skip synchronizing project releases", ) parser.add_argument( "--exclude", action="append", Loading Loading @@ -1158,6 +1171,9 @@ def run() -> None: print( f"- skip visi (--skip-visibility) : {AnsiColors.CYAN}{args.skip_visibility}{AnsiColors.RESET}" ) print( f"- skip releases (--skip-releases): {AnsiColors.CYAN}{args.skip_releases}{AnsiColors.RESET}" ) print( f"- exclude (--exclude(-from)) : {AnsiColors.CYAN}{', '.join(exclude_list)}{AnsiColors.RESET}" ) Loading Loading @@ -1231,6 +1247,7 @@ def run() -> None: work_dir, max_visibility=args.max_visibility, skip_visibility=args.skip_visibility, skip_releases=args.skip_releases, exclude=exclude_list, include=include_list, include_branches=args.include_branch, Loading