diff --git a/README.rst b/README.rst index 7126cee..7b914c3 100644 --- a/README.rst +++ b/README.rst @@ -31,7 +31,7 @@ CLI Usage is as follows:: [-o OUTPUT_DIRECTORY] [-i] [--starred] [--watched] [--all] [--issues] [--issue-comments] [--issue-events] [--pulls] [--pull-comments] [--pull-commits] [--labels] - [--hooks] [--milestones] [--repositories] [--bare] + [--hooks] [--milestones] [--repositories] [--bare] [--lfs] [--wikis] [--skip-existing] [-L [LANGUAGES [LANGUAGES ...]]] [-N NAME_REGEX] [-H GITHUB_HOST] [-O] [-R REPOSITORY] [-P] [-F] @@ -72,6 +72,7 @@ CLI Usage is as follows:: --milestones include milestones in backup --repositories include repository clone in backup --bare clone bare repositories + --lfs clone LFS repositories --wikis include wiki clone in backup --skip-existing skip project if a backup directory exists -L [LANGUAGES [LANGUAGES ...]], --languages [LANGUAGES [LANGUAGES ...]] diff --git a/bin/github-backup b/bin/github-backup index 30390a6..e1d8d80 100755 --- a/bin/github-backup +++ b/bin/github-backup @@ -208,6 +208,10 @@ def parse_args(): action='store_true', dest='bare_clone', help='clone bare repositories') + parser.add_argument('--lfs', + action='store_true', + dest='lfs_clone', + help='clone lfs repositories') parser.add_argument('--wikis', action='store_true', dest='include_wiki', @@ -540,7 +544,8 @@ def backup_repositories(args, output_directory, repositories): repo_url, repo_dir, skip_existing=args.skip_existing, - bare_clone=args.bare_clone) + bare_clone=args.bare_clone, + lfs_clone=arg.lfs_clone) download_wiki = (args.include_wiki or args.include_everything) if repository['has_wiki'] and download_wiki: @@ -548,7 +553,8 @@ def backup_repositories(args, output_directory, repositories): repo_url.replace('.git', '.wiki.git'), os.path.join(repo_cwd, 'wiki'), skip_existing=args.skip_existing, - bare_clone=args.bare_clone) + bare_clone=args.bare_clone, + lfs_clone=arg.lfs_clone) if args.include_issues or args.include_everything: backup_issues(args, repo_cwd, repository, repos_template) @@ -738,7 +744,8 @@ def fetch_repository(name, remote_url, local_dir, skip_existing=False, - bare_clone=False): + bare_clone=False, + lfs_clone=False): if bare_clone: if os.path.exists(local_dir): clone_exists = subprocess.check_output(['git', @@ -780,7 +787,10 @@ def fetch_repository(name, git_command = ['git', 'remote', 'set-url', 'origin', remote_url] logging_subprocess(git_command, None, cwd=local_dir) - git_command = ['git', 'fetch', '--all', '--force', '--tags', '--prune'] + if lfs_clone: + git_command = ['git', 'lfs', 'fetch', '--all', '--force', '--tags', '--prune'] + else: + git_command = ['git', 'fetch', '--all', '--force', '--tags', '--prune'] logging_subprocess(git_command, None, cwd=local_dir) else: log_info('Cloning {0} repository from {1} to {2}'.format( @@ -788,9 +798,15 @@ def fetch_repository(name, masked_remote_url, local_dir)) if bare_clone: - git_command = ['git', 'clone', '--mirror', remote_url, local_dir] + if lfs_clone: + git_command = ['git', 'lfs', 'clone', '--mirror', remote_url, local_dir] + else: + git_command = ['git', 'clone', '--mirror', remote_url, local_dir] else: - git_command = ['git', 'clone', remote_url, local_dir] + if lfs_clone: + git_command = ['git', 'lfs', 'clone', remote_url, local_dir] + else: + git_command = ['git', 'clone', remote_url, local_dir] logging_subprocess(git_command, None)